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.
Создадим и отредактируем файл 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