Fail2Ban + firewalld + Exim + Dovecot + Postfix на CentOS 7 и CentOS 8

Fail2Ban защищает ваш VPS, блокируя IP-адреса атакущих, с которых предпринимаются попытки войти на ваш VPS. Fail2Ban сканирует лог-файлы, чтобы определить, какие IP-адреса выполняют атаки методом брутфорса, и блокирует их.

В этой статье я расскажу как установить и настроить Fail2Ban на CentOS 7 и на CentOS 8. У каждой версии CentOS свои нюансы. Fail2Ban защищает ваш VPS, блокируя IP-адреса атакущих, с которых предпринимаются попытки войти на ваш VPS. Fail2Ban сканирует лог-файлы, чтобы определить, какие IP-адреса выполняют атаки методом брутфорса, и блокирует их.

В этой статье я расскажу как установить и настроить Fail2Ban на CentOS 7 и на CentOS 8. У каждой версии CentOS свои нюансы. 

Установка Fail2Ban

CentOS 7

CentOS 8

Настройка Fail2Ban на CentOS 7

По умолчанию Fail2ban использует /etc/fail2ban/jail.conf, но он может быть перезаписан обновлениями Fail2Ban. Поэтому будем редактировать  jail.local. Кроме того, jail.local имеет приоритет над jail.conf.

Используйте только те части конфигурации, которые относятся к вашему VPS! Если вы не используете Exim, не добавляйте эту часть. То же самое относится и к части Postfix.

Создадим и отредактируем файл jail.local

vi /etc/fail2ban/jail.local

Добавьте следующий код и настройте значения в соответствии со своими потребностями. Объяснение параметров будет ниже.

Измените данные строк sender, destmail и igroreip на свои и используйте только те программы, которые вы используете на своем VPS (например, Exim или Postfix, но не обе). Вы можете проверить, какую из них вы используете на своем VPS, с помощью команды systemctl status exim / postfix.

[DEFAULT]
# Бан через X времени
bantime = 604800
findtime = 3600
sender = fail2ban@domain.ru
destemail = admin@domain.ru
action = %(action_mwl)s
banaction = firewallcmd-ipset
# О banaction для firewalld или для iptables смотрите на https://max-ko.ru/67-fail2ban-ssh-exim-dovecot-postfix-na-centos-7-i-centos-8.html
maxretry = 5
ignoreip = ваш_IP

[sshd]
enabled = true
port = ssh
# измените ssh на ваш порт.

[exim]
enabled = true
filter = exim
logpath = /var/log/exim/mainlog
# Используете cPanel? Измените путь до лога Exim на этот: logpath = /var/log/exim_mainlog

[postfix]
enabled = true
port = smtp, ssmtp
filter = postfix
failregex = \[<HOST>]: 535 Incorrect authentication data
logpath = /var/log/maillog

[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps
filter = dovecot
logpath = /var/log/maillog

Объяснение значений этих строк



Перезагрузите Fail2Ban

systemctl restart fail2ban

Настройка Fail2Ban на CentOS 8

Проблема, с которой я столкнулся при настройке jail.local на CentOS 8 заключалась в ошибке

[236767]: ERROR   Errors in jail 'sshd'. Skipping...
[236767]: ERROR   Unable to read action 'sendmail-whois-lines'
[236767]: ERROR   Errors in jail 'postfix'. Skipping...
ERROR   Unable to read action 'sendmail-whois-lines'
[236767]: ERROR   Errors in jail 'dovecot'. Skipping...
[236767]: ERROR   Unable to read action 'sendmail-whois-lines'
[236767]: ERROR   Errors in jail 'exim'. Skipping...
[236767]: ERROR   Async configuration of server failed


Соответственно сервис Fail2Ban не запускался. Как оказалось, надо установить недостающий компонент.

Сначала установим EPEL репозиторий, если еще не установлен

dns -y install epel-release


И поищем вхождения

dnf search fail2ban
Last metadata expiration check: 0:45:47 ago on Mon 30 Nov 2020 05:09:06 AM MSK.
============================================================================== Name Exactly Matched: fail2ban ===============================================================================
fail2ban.noarch : Daemon to ban hosts that cause multiple authentication errors
============================================================================= Name & Summary Matched: fail2ban ==============================================================================
fail2ban-tests.noarch : Fail2Ban testcases
fail2ban-mail.noarch : Mail actions for Fail2Ban
fail2ban-selinux.noarch : SELinux policies for Fail2Ban
fail2ban-sendmail.noarch : Sendmail actions for Fail2Ban
fail2ban-firewalld.noarch : Firewalld support for Fail2Ban
fail2ban-shorewall.noarch : Shorewall support for Fail2Ban
fail2ban-server.noarch : Core server component for Fail2Ban
coremanager-pkg-fail2ban.x86_64 : Virtual packages for fail2ban
fail2ban-all.noarch : Install all Fail2Ban packages and dependencies
fail2ban-shorewall-lite.noarch : Shorewall lite support for Fail2Ban
fail2ban-systemd.noarch : Systemd journal configuration for Fail2Ban
fail2ban-hostsdeny.noarch : Hostsdeny (tcp_wrappers) support for Fail2Ban


И находим нужный нам пакет fail2ban-sendmail.noarch : Sendmail actions for Fail2Ban.

Давайте посмотрим описание этого пакета

dnf info fail2ban-sendmail
Last metadata expiration check: 2:13:43 ago on Mon 30 Nov 2020 05:09:06 AM MSK.
Installed Packages
Name         : fail2ban-sendmail
Version      : 0.11.1
Release      : 10.el8
Architecture : noarch
Size         : 12 k
Source       : fail2ban-0.11.1-10.el8.src.rpm
Repository   : @System
From repo    : epel
Summary      : Sendmail actions for Fail2Ban
URL          : http://fail2ban.sourceforge.net/
License      : GPLv2+
Description  : This package installs Fail2Ban's sendmail actions.  This is the default
             : mail actions for Fail2Ban.


И видим в описании, что: This package installs Fail2Ban's sendmail actions.  This is the default mail actions for Fail2Ban.

Устанавливаем пакет и переходим на следующий шаг "Создадим и отредактируем файл jail.local"

dnf install fail2ban-sendmail


Создадим и отредактируем файл jail.local

vi /etc/fail2ban/jail.local


Добавьте следующий код и настройте значения в соответствии со своими потребностями. Объяснение параметров будет ниже.

Измените данные строк sender, destmail и igroreip на свои и используйте только те программы, которые вы используете на своем VPS (например, Exim или Postfix, но не обе). Вы можете проверить, какую из них вы используете на своем VPS, с помощью команды systemctl status exim / postfix.

[DEFAULT]
# Бан через X времени
bantime = 604800
findtime = 3600
sender = fail2ban@domain.ru
destemail = admin@domain.ru
action = %(action_mwl)s
banaction = firewallcmd-ipset
# О banaction для firewalld или для iptables смотрите на https://max-ko.ru/67-fail2ban-ssh-exim-dovecot-postfix-na-centos-7-i-centos-8.html
maxretry = 5
ignoreip = ваш_IP

[sshd]
enabled = true
port = ssh
# измените ssh на ваш порт.

[exim]
enabled = true
filter = exim
logpath = /var/log/exim/main.log 

# Используете cPanel? Измените путь до лога Exim на этот: logpath = /var/log/exim_mainlog

[postfix]
enabled = true
port = smtp, ssmtp
filter = postfix
failregex = \[<HOST>]: 535 Incorrect authentication data
logpath = /var/log/maillog

[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps
filter = dovecot
logpath = /var/log/maillog

Перезагрузите Fail2Ban

systemctl restart fail2ban

Добавить комментарий