Fail2ban на VPS: защита от брутфорса SSH и веб-атак
Настройка Fail2ban на Ubuntu VPS: jail для SSH, Nginx, защита от брутфорса, whitelist IP, уведомления. Пошаговый гайд с конфигами.
Краткий ответ: Fail2ban анализирует логи и временно банит IP после серии неудачных попыток входа. На VPS установите пакет, включите jail для SSH и Nginx, задайте bantime и whitelist для своего IP.
Если VPS в интернете — брутфорс SSH начинается в первые минуты. Fail2ban — первый рубеж обороны после базовой настройки Ubuntu.
Как работает Fail2ban
- Сервис (sshd, nginx) пишет неудачные попытки в лог
- Fail2ban парсит лог по filter
- При превышении maxretry — IP блокируется через iptables/nftables
- После bantime бан снимается автоматически
Современная альтернатива с crowd intelligence — CrowdSec.
Установка
sudo apt update
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
Не редактируйте jail.conf напрямую — создайте локальный override:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Базовый jail.local
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
banaction = ufw
ignoreip = 127.0.0.1/8 ВАШ_СТАТИЧЕСКИЙ_IP
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3
bantime = 24h
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
Fail2ban для Nginx
Защита от сканирования и флуда:
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
[nginx-limit-req]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 10
Перед этим настройте Nginx rate limiting и SSL.
Мониторинг банов
sudo fail2ban-client status
sudo fail2ban-client status sshd
sudo fail2ban-client set sshd unbanip 1.2.3.4
Логи:
sudo tail -f /var/log/fail2ban.log
Интегрируйте алерты с Grafana или Telegram-ботом.
Fail2ban vs CrowdSec vs только UFW
| Решение | Плюсы | Минусы |
|---|---|---|
| UFW | Просто, быстро | Не реагирует на атаки |
| Fail2ban | Проверен годами, лёгкий | Только локальные логи |
| CrowdSec | Общая база угроз | Сложнее в настройке |
Для большинства VPS достаточно UFW + Fail2ban. CrowdSec — следующий уровень.
Частые проблемы
Заблокировали себя: добавьте IP в ignoreip, разбаньте через fail2ban-client set sshd unbanip.
Не банит: проверьте logpath, права на логи, что sshd пишет в /var/log/auth.log.
Конфликт с Cloudflare: баньте реальный IP из заголовка CF-Connecting-IP — см. Cloudflare + VPS.
Итог
Fail2ban — обязательный слой для любого VPS с SSH. 15 минут настройки закрывают 90% автоматических атак.
VPS с защитой — StormNet Cloud. Полный hardening — защита VPS + WireGuard для админ-доступа.
Рекомендуем прочитать
Частые вопросы
Достаточно ли Fail2ban без UFW?
Нет. UFW закрывает порты, Fail2ban реагирует на атаки в логах. Используйте оба слоя вместе.
Fail2ban заблокировал мой IP — что делать?
Добавьте IP в ignoreip в jail.local и разбаньте: fail2ban-client set sshd unbanip ВАШ_IP. Подключайтесь с другого IP или через консоль провайдера.






