Администрирование Установка и настройка Fail2ban

  • Автор темы Underground Forum
  • Дата начала
Underground Forum

Underground Forum

  • #1
Fail2ban не только защищает сервер от перебора паролей и взлома по SSH, но также способен защитить определенные разделы на сервере под управлением Apache или NGINX.

Установка Fail2ban на CentOS​

Fail2ban

# Подключаем репозиторий Epel
sudo yum install epel-release

# Устанавливаем fail2ban
yum install fail2ban -y

# Включаем автозагрузку fail2ban
systemctl enable fail2ban

# Проверяем fail2ban
systemctl status fail2ban

F2ban status


Настройка fail2ban​

Для работы нам понадобится конфигурационный файл fail2ban по адресу /etc/fail2ban/

Rules

Главным конфигурационным файлом является 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
Если в течение 5 минут было совершено более 3 неудачных попыток, то ip уйдет в бан на 166 минут.

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

Ssh


# Посмотреть все правила (джейлы) можно с помощью команды
sudo fail2ban-client status

F2ban jails

В данном примере у нас уже запущена защита для MySQl, NGINX и SSH.

Иногда в процессе работы у вас может возникнуть ошибка:
Fail2ban fail

Чаще всего причина в jail.local, вернее в том, что вы допустили в нем какую-то ошибку.
При необходимости отчистите jail.local, перезапустите fail2ban и попробуйте настроить его еще раз.
 
Сверху