Brute-force атаки — это один из самых распространённых способов взлома серверов. Злоумышленники автоматически перебирают пароли, пытаясь получить несанкционированный доступ к системам через SSH, почтовые, веб-приложения и другие службы. Один из надёжных способов защиты от таких атак — использование Fail2ban.
Fail2ban — это программное обеспечение, которое анализирует журналы событий (логи) и блокирует IP-адреса, с которых происходят повторные неудачные попытки входа. Решение эффективно, настраиваемо и поддерживается большинством Linux-систем.

Установка Fail2ban
Fail2ban доступен в большинстве репозиториев Linux-дистрибутивов. Установка осуществляется с помощью штатного пакетного менеджера. Пример:
sudo apt install fail2ban
⚠️ Обратите внимание: в CentOS/AlmaLinux и других системах используется
dnf
илиyum
.
Базовая настройка
Все основные настройки хранятся в конфигурационных файлах в каталоге /etc/fail2ban/
.
Не рекомендуется изменять файл jail.conf
напрямую. Вместо этого создайте локальную копию:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Откройте jail.local
в текстовом редакторе и найдите секцию [sshd]
— именно она отвечает за защиту SSH:
sudo nano /etc/fail2ban/jail.local
Пример настройки секции:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = systemd
maxretry = 5
bantime = 1h
findtime = 10m
Пояснение параметров:
- enabled — включает защиту.
- port — порт, на котором работает SSH (можно указать конкретный, если используется нестандартный).
- logpath — путь к логам. Для большинства систем подойдёт переменная
%(sshd_log)s
. - backend — механизм чтения логов. В современных дистрибутивах актуален
systemd
. - maxretry — количество неудачных попыток до блокировки.
- bantime — длительность бана (поддерживаются
s
,m
,h
,d
). - findtime — за какое время должны произойти попытки для блокировки.

Расширенная защита и фильтры
Fail2ban поддерживает расширенную фильтрацию по регулярным выражениям. Для каждого «джейла» (jail) — изолированной зоны наблюдения — можно задать собственный фильтр.
Путь к фильтрам: /etc/fail2ban/filter.d/
. Для SSH по умолчанию используется sshd.conf
.
Вы можете создавать свои фильтры, например, для веб-приложений (Apache, Nginx, WordPress, и др.), почтовых серверов (Postfix, Dovecot) или панелей управления (ISPmanager, VestaCP и др.).
Проверка и управление Fail2ban
После внесения изменений перезапустите Fail2ban:
sudo systemctl restart fail2ban
Проверить статус:
sudo fail2ban-client status
Статус конкретного «джейла», например, sshd:
sudo fail2ban-client status sshd
Здесь вы увидите количество банов, активные IP, параметры защиты.

Актуальные практики
- Используйте динамическое время блокировки
Вместо фиксированногоbantime
можно задатьbantime.increment
, чтобы каждый последующий бан для IP увеличивался.
bantime.increment = true
bantime.rndtime = 10m
- Подключение к внешним blacklist’ам
Возможно настроить Fail2ban для автоматической блокировки IP из публичных чёрных списков (например, abuseipdb).
- Интеграция с firewall-cmd или nftables
Fail2ban поддерживает различные backends: iptables, nftables, firewalld. Рекомендуется использовать актуальный механизм фильтрации, поддерживаемый в вашей системе.
- Уведомления в Telegram или Email
Можно настроить уведомления при срабатывании банов. Особенно полезно для VPS и серверов без выделенного мониторинга.
Заключение
Fail2ban остаётся актуальным инструментом, обеспечивая надёжную и гибкую защиту серверов от перебора паролей. Его простота, расширяемость и поддержка множества сервисов делают его неотъемлемой частью арсенала системного администратора.
Если вы управляете сервером или отвечаете за безопасность инфраструктуры, убедитесь, что Fail2ban настроен и активно работает. Это простая мера, которая может предотвратить серьёзные инциденты.
Дополнительный материал:
Was this helpful?
0 / 0