Underground Forum
- #1
Что такое Fail2ban?
Fail2ban не только защищает сервер от перебора паролей и взлома по SSH, но также способен защитить определенные разделы на сервере под управлением Apache или NGINX.
Установка Fail2ban на CentOS
# Подключаем репозиторий Epel
sudo yum install epel-release
# Устанавливаем fail2ban
yum install fail2ban -y
# Включаем автозагрузку fail2ban
systemctl enable fail2ban
# Проверяем fail2ban
systemctl status fail2ban
Настройка fail2ban
Для работы нам понадобится конфигурационный файл fail2ban по адресу/etc/fail2ban/
Главным конфигурационным файлом является fail2ban.conf, но все изменения мы будем производить в файле jail.local, так как fail2ban.conf может быть перезаписан после обновления.
В самом начале файла добавьте общие правила:
[DEFAULT]
# Ban hosts for one hour:
bantime = 3600
# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport
maxretry = 3
findtime = 300
bantime = 10000
maxretry - количество попыток
findtime - временной интервал в секундах
bantime - время блокировки в секундах
Защита SSH от перебора паролей
Добавьте новое правило для [sshd] сразу после [DEFAULT][sshd]
enabled = true
Fail2ban + Apache
Для защиты сервера под управлением Apache, добавьте данный код в jail.local[apache]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
[apache-multiport]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
[apache-noscript]
enabled = true
port= http,https
filter = apache-noscript
logpath = /var/log/apache2/error.log
maxretry = 3
[apache-overflows]
enabled = true
port= http,https
filter = apache-overflows
logpath = /var/log/apache2/error.log
maxretry = 2
Fail2ban + NGINX
Добавьте в jail.local[nginx-http-auth]
enabled = true
Fail2ban + MySQL
Добавьте в jail.local[mysqld-auth]
enabled = true
filter = mysqld-auth
port = 3306
# После редактирования jail.local перезагрузите fail2ban командой
systemctl restart fail2ban
# Проверяем работу конкретной службы, например sshd
fail2ban-client status sshd
# Посмотреть все правила (джейлы) можно с помощью команды
sudo fail2ban-client status
В данном примере у нас уже запущена защита для MySQl, NGINX и SSH.
Иногда в процессе работы у вас может возникнуть ошибка:
Чаще всего причина в jail.local, вернее в том, что вы допустили в нем какую-то ошибку.
При необходимости отчистите jail.local, перезапустите fail2ban и попробуйте настроить его еще раз.
Last edited: