Fail2ban на VPS: защита от брутфорса SSH и веб-атак — иллюстрация к статье Storm Cloud Blog, категория Безопасность
Fail2ban на VPS: защита от брутфорса SSH и веб-атак — иллюстрация к статье Storm Cloud Blog, категория Безопасность
Безопасность·2 мин··

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

  1. Сервис (sshd, nginx) пишет неудачные попытки в лог
  2. Fail2ban парсит лог по filter
  3. При превышении maxretry — IP блокируется через iptables/nftables
  4. После 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 или через консоль провайдера.