Skip to main content

Настройка fail2ban (защита от брутфорса)

Fail2ban служба в Linux которfz по log–файлам приложений может обнаружить злоумышленника и заблокировать его IP адрес. Программа умеет бороться с различными атаками на все популярные *NIX–сервисы, такие как Apache, Nginx, Guacamole, sshd, Exim, Postfix и другие. В данной статье мы будем защищить службу SSH.

Установка:

apt-get -y install fail2ban

Включаем автозапуск и запускаем:

systemctl enable fail2ban
systemctl status fail2ban
systemctl start fail2ban

Правим конфиг файл:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vi /etc/fail2ban/jail.local

Содержимое файла jail.local:

[DEFAULT]
bantime  = 1d
findtime  = 4h
maxretry = 2

[sshd]
enabled = true
mode = aggressive
port = 2222
# incremental banning:
bantime.increment = true
# default factor (causes increment - 1h -> 1d 2d 4d 8d 16d 32d ...):
bantime.factor = 24
# max banning time = 6 week:
bantime.maxtime = 6w
logpath = %(sshd_log)s
backend = %(sshd_backend)s

В конфиге выше fail2ban смотрит порт 2222 службы ssh, будет блокировка на 1 день источника подключения в случае 2 неверных попыток ввода в течение 4 часов, блокировка инкрементальная, в случае если этот же источник повторит неверные действия - блок на 2 дня и так до максимального срока блокировки до 6 недель.

Перезапуск службы для применения новой конфигурации:

systemctl restart fail2ban


Проверка журнала fail2ban:

less /var/log/fail2ban.log

Подсчет количества блокирововк по журналу:

cat /var/log/fail2ban.log | grep "\[sshd\] Ban" | wc -l

Просмотр заблокированных IP-адресов:

fail2ban-client status | grep "Jail list" | sed -E 's/^[^:]+:[ \t]+//' | sed 's/,//g'

Разблокировка адреса:

fail2ban-client set YOURJAILNAMEHERE unbanip IPADDRESSHERE