Настройка 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