0

Fail2ban обязательная защита сервера VPS

В операционной системе Ubuntu 18.04.4 LTS, 20.04.1 LTS Fail2ban ставиться очень просто, если вам нужна только защита SSH и вы используете для настройки фаервола iptables для начинающих: Простое управление брандмауэром с UFW.

$ sudo apt install fail2ban

И всё, ваш ssh демон -защищен!!!

Использование и установка Fail2ban Debian

  • Установка в Debian# apt install fail2ban
  • Параметры настройки, содержащиеся в .local-файлах, имеют преимущество над аналогичными параметрами, записанными в .conf-файлах. На практике это означает, что сначала считывается содержимое .conf-файлов, а затем содержимое .local-файлов, поэтому значения ранее определённых параметров могут быть заменены.cd /etc/fail2ban; cp -p fail2ban.conf fail2ban.local; cp -p jail.conf jail.local;
  • jail.local
[DEFAULT]
 
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
# bantime в секундах, если указать отрицательное число (-1), то заблокирует навечно.
bantime  = 600
maxretry = 3
 
# Адрес, на который слать уведомления о событиях
destemail = admin@example.org
# Имя пользователя от которого приходят сообщения, по умолчанию Fail2Ban
sendername = you name computer
 
 
# Какое из действий выполнить, например  action_mw, action_mwl и др.
action = %(action_mwl)s
[DEFAULT]
ignoreip = 127.0.0.1/8
#bantime  = -1
bantime  = 600
maxretry = 3
backend = auto
destemail = admin@example.org
 
# ACTIONS
banaction = iptables-multiport
#mta = sendmail
mta = mail
protocol = tcp
chain = INPUT
action = %(action_mwl)s
 
# JAILS
 
[ssh]
 
enabled  = true
#mta = mail[name=ssh Atacced!!!]
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6
 
[pure-ftpd]
 
enabled  = true
#mta = mail[name=pure-ftpd Atacced!!!]
port     = ftp,ftp-data,ftps,ftps-data
filter   = pure-ftpd
#logpath  = /var/log/auth.log
logpath  = /var/log/syslog
maxretry = 6
# fail2ban-regex /var/log/syslog /etc/fail2ban/filter.d/pure-ftpd.conf
[roundcube-auth]

enabled  = true
filter   = roundcube-auth-new
port     = http,https
#logpath  = /var/log/roundcube/userlogins
logpath  = /var/log/roundcube/errors
failregex = ^\s*(\[(\s[+-][0-9]{4})?\])?(: IMAP Error)?: (FAILED login|Login failed) for .*? from <HOST>(\. .* in .*?/rcube_imap\.php on line \d+ \(\S+ \S+\))?$
  • Проверим правило
# fail2ban-regex /var/log/roundcube/errors /etc/fail2ban/filter.d/roundcube-auth-new.conf

Установка и использование Fail2ban RHEL/CentOS

По молчанию утилиты Fail2ban нет в стандартном репозитории. Fail2ban можно поставить например из EPEL repository используя YUM.

Инсталляция Fail2ba в CentOS

yum update
yum install epel-release
yum install fail2ban

По умолчанию, в CentOS fail2ban выключен, включаем и запускаем:

systemctl enable fail2ban
systemctl start fail2ban

Создаем jail.local, в котором опишем наши настройки

cp -p jail.conf jail.local

Пример настройки Fail2ban и Nginx

Настроим Fail2ban nginx-limit-req для связки с Nginx. Предварительно вы должны настроить встроенный модуль ngx_http_limit_req_module. Добавим в jail.local

[nginx-limit-req]
enabled = true
filter  = nginx-limit-req
port    = http,https
logpath = /var/log/nginx/*error.log
bantime = 600
maxretry = 5

Сам фильтр идет в комплекте с и находится в файле /etc/fail2ban/filter.d/nginx-limit-req.conf Проверяем на ошибки:

fail2ban-client status nginx-limit-req

Управление запрещенными IP и fail2ban-client

Управление запрещенными IP (manage bans IPs).

  • Просмотр запрещенных IP в Руководство по iptables: Настройка и оптимизация фаервола Linux:iptables -L
  • Для разблокирования конкретного IP, нужно узнать номер строки правила и потом удалить строку под этим номером с указанием имени Chain. Например, удалим 60 строку правила для цепи fail2ban-ssh:iptables -nvL –line-numbers iptables -D f2b-sshd 60
  • Для просмотра состояния и заблокированных ip используйте встроенную утилиту fail2ban-client
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 3
|  |- Total failed:     18
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 6
   |- Total banned:     6
   `- Banned IP list:   106.13.144.207 180.76.246.205 200.160.111.222 157.245.193.50 179.111.233.126 43.154.104.207

Bug Fail2ban 1970

Версия демона Fail2ban 0.8.6 присылает на почту уведомление с неправильной датой 1970-01-01 01:00. Варианты решения:

  • Обновить Fail2ban
  • Использовать в jail.local mta = mail вместо mta = sendmail
  • Во всех конфигурационных файлах “/etc/fail2ban/action.d/sendmail*.conf ” заменить строчкуDate: `date -u +”%%a, %%d %%h %%Y %%T +0000″`наDate: `date –rfc-2822 -u`

Fail2ban просмотреть полный список заблокированных IP-адресов

Лучший способ просмотреть полный список заблокированных IP-адресов – проверить файл журнала:

sudo zgrep 'Ban' /var/log/fail2ban.log*

Второй способ, посмотреть чистый список правил iptables:

sudo iptables -L INPUT -v -n | less

Свежие комментарии

Подписка

Лучшие статьи


Fatal error: Uncaught Error: Call to a member function have_posts() on null in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php:398 Stack trace: #0 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/widget.php(257): fox56_blog_grid(NULL, Array) #1 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/widgets/latest-posts/register.php(33): include('/home/host18670...') #2 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/class-wp-widget.php(394): Wi_Widget_Latest_Posts->widget(Array, Array) #3 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/widgets.php(845): WP_Widget->display_callback(Array, Array) #4 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(418): dynamic_sidebar('sidebar') #5 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(136): fox56_single_sidebar() #6 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/single.php(7): fox56_single_inner() #7 /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/single.php(23): fox56_single() #8 /home/host1867038/the-devops.ru/htdocs/www/wp-includes/template-loader.php(106): include('/home/host18670...') #9 /home/host1867038/the-devops.ru/htdocs/www/wp-blog-header.php(19): require_once('/home/host18670...') #10 /home/host1867038/the-devops.ru/htdocs/www/index.php(17): require('/home/host18670...') #11 {main} thrown in /home/host1867038/the-devops.ru/htdocs/www/wp-content/themes/fox/inc/blog.php on line 398