Настройка безопасности fail2ban
Введение
Fail2ban — демон для защиты сервера от брутфорса. Анализирует логи (SSH, веб-сервер, почта и др.), при превышении порога неудачных попыток добавляет IP в firewall (iptables/ufw) на заданное время.
Установка
Debian / Ubuntu:
apt update
apt install -y fail2ban
Запуск и автозагрузка:
systemctl enable --now fail2ban
Базовая настройка
Создайте локальный конфиг (не редактируйте jail.conf — он перезаписывается при обновлении):
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
В секции [DEFAULT] задайте:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip — IP и подсети, которые не банить (локальная сеть, свой офис). bantime — время бана. findtime — окно, в котором считаются попытки. maxretry — число неудачных попыток до бана.
Jail для SSH
Обычно [sshd] уже включён. Проверьте:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
После изменений:
systemctl restart fail2ban
Проверка и мониторинг
Статус jail:
fail2ban-client status
fail2ban-client status sshd
Разбан IP вручную:
fail2ban-client set sshd unbanip 1.2.3.4
Логи:
tail -f /var/log/fail2ban.log
Дополнительные jail
Fail2ban поддерживает nginx, apache, postfix, dovecot и др. Список:
ls /etc/fail2ban/filter.d/
ls /etc/fail2ban/jail.d/
Включение jail — в jail.local или в файле /etc/fail2ban/jail.d/*.conf.
Итог
Fail2ban защищает SSH и другие сервисы от перебора паролей. Настройте ignoreip под свою сеть, задайте bantime и maxretry, перезапустите сервис.