Эта инструкция покажет вам, как установить и настроить fail2ban в вашей CentOS/RHEL 8 и Fedora системах.
Шаг 1 — Установка Fail2ban в CentOS 8
Прежде всего, установим пакет epel-release, тем самым добавив Yum репозиторий EPEL в систему. После этого вы сможете установить fail2ban. Выполним две команды:
dnf install epel-release dnf install fail2ban
Шаг 2 — Настройка fail2ban
Fail2ban хранит файлы конфигурации в директории /etc/fail2ban. Не нужно править имеющиеся файлы конфигурации, а вместо этого создайте файл jail.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local vi /etc/fail2ban/jail.local
Теперь вы можете сделать необходимые изменения в файле jail.local и настроить fail2ban под ваши нужды. Сперва настроим секцию [DEFAUT], которая отвечает за общие правила, если не указано иное.
[DEFAULT] # "ignoreip" может быть список IP адресов, масок или DNS имен. Если IP адрес попадет под фильтры fail2ban, но при этом находится в этом списке, то он не будет забанен. Адреса задаются через пробел и/или запятую. ignoreip = 127.0.0.1/8 192.168.1.0/24 # "bantime" время , на сколько адрес будет забанен. В данном случае 60 минут bantime = 60m # Адрес будет забанен если он сделает "maxretry" неудачных авторизации в течение "findtime". В данном случае 5 минут. findtime = 5m # "maxretry" количество неудачных попыток авторизации, после чего адрес будет забанен. maxretry = 5
Шаг 3 — Защита SSH/SFTP
После настройки конфигурации по умолчанию, спуститесь ниже и найдите секцию [ssh-iptables].
[ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=22, protocol=tcp] sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com, sendername="Fail2Ban"] logpath = /var/log/secure maxretry = 3
Правилом выше мы установили, что будет прослушиваться лог /var/log/secure, для блокировки достаточно 3 неудачных попыток, а информация о блокировке будет отправлена на адрес fail2ban@example.com
Шаг 4 — Защита FTP
В нашем примере мы будем защищать FTP сервер vsftpd. Найдите секцию [vsftpd-iptables].
[vsftpd-iptables] enabled = true filter = vsftpd action = iptables[name=VSFTPD, port=21, protocol=tcp] sendmail-whois[name=VSFTPD, dest=fail2ban@example.com] logpath = /var/log/vsftpd.log maxretry = 5 bantime = 1800
Шаг 5 — Перезапуск сервиса и проверка
После всех изменения нужно сохранить файл и запустить сервис fail2ban.
systemctl start fail2ban.service systemctl enable fail2ban.service
Если сервис был запущен, то сделаем перезапуск
systemctl restart fail2ban.service
В целях тестирования я попытался авторизоваться по SSH с неверными реквизитами. Через 3 попытки мой IP был заблокирован и я даже не смог сделать ping до сервера. Не тестируйте авторизацию с той машины, с которой проводите настройку.
