fail2ban: защита SSH и сайтов от брутфорса | Глоссарий FREEHOSTING

fail2ban

fail2ban Intrusion Prevention
fail2ban — fail2ban — служба для Linux, которая анализирует логи сервисов и временно блокирует IP-адреса с подозрительной активностью через iptables, nftables или firewalld по заданным шаблонам.

Определение простыми словами

fail2ban — сторож логов. Демон сканирует /var/log/auth.log, журналы Nginx, Postfix, Dovecot и других сервисов, сопоставляет строки с регулярными выражениями (filters) и при превышении порога ошибок добавляет IP в правила фаервола (jails). Через заданное время бан снимается автоматически.

Базовая защита от перебора паролей по SSH, FTP, веб-формам и почтовым протоколам. Не заменяет полноценный WAF, но отбивает 95% автоматических ботов. Работает поверх iptables, nftables или firewalld.

Сравнение

Параметр fail2ban CrowdSec WAF облачный
Установка Один пакет Демон + бучеры Подмена DNS
База IP Локальная Краудсорсинг Своя
Цена Бесплатно Бесплатно От $20/мес
Защита L7 По логам Сценарии Полная
Нагрузка на сервер Минимальная Средняя Нулевая

Кейсы использования

  • Защита SSH-порта от брутфорса — после 5 неудачных попыток IP уходит в бан на час.
  • Снижение нагрузки от ботов на wp-login.php — фильтр по 401/403 в access.log Nginx.
  • Блокировка спам-рассылок через Postfix — реакция на rejected для несуществующих адресатов.
  • Негативный сценарий: ошибка в фильтре банит весь свой офис — IP попадает в jail из-за легитимных ошибок ввода пароля. Важно держать ignoreip с белым списком и тестировать fail2ban-regex.

Технические детали

apt install fail2ban -y
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
cat > /etc/fail2ban/jail.d/sshd.local << EOF
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1/8 1.2.3.4
EOF
systemctl restart fail2ban
fail2ban-client status sshd

Файл jail.local переопределяет дефолты, не трогая основной конфиг при обновлении пакета. Команда fail2ban-client status sshd покажет список текущих банов. Тест регулярных выражений: fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf.

Частые вопросы

fail2ban защищает от DDoS?

Только от слабых L7-атак с одних IP. Против объёмных DDoS не помогает — для этого нужны облачная защита и фильтрация на уровне провайдера.

Как разбанить себя?

Если есть второй IP или KVM-консоль: fail2ban-client unban 1.2.3.4. Заранее добавьте свой IP в ignoreip, чтобы не залочиться.

На сколько банить IP?

Для боевого SSH — час-сутки. Для wp-login на сайте можно ставить bantime неделями. После 3-4 банов одного IP включают permanent через recidive jail.