August 09, 2026 · by Alex M.
Каждый сервер, подключённый к интернету, постоянно сканируется ботами в поисках слабых паролей, уязвимых сервисов и открытых портов. Если у вас есть VPS NVMe или выделенный сервер, одна из первых мер защиты — установка Fail2Ban: инструмента с открытым исходным кодом, который автоматически блокирует IP-адреса с подозрительной активностью.
В этом руководстве вы узнаете, как установить, настроить и оптимизировать Fail2Ban на VPS с Ubuntu или CentOS — шаг за шагом.
Fail2Ban отслеживает лог-файлы сервисов (SSH, Nginx, Apache, Postfix и др.) и обнаруживает подозрительные паттерны — как правило, множество неудачных попыток аутентификации подряд. При превышении настроенного порога Fail2Ban автоматически добавляет правило в брандмауэр (iptables или nftables), блокируя IP на заданное время.
Ключевые понятия:
- Jail — правило мониторинга для конкретного сервиса
- Filter — регулярное выражение для поиска подозрительных событий в логах
- Action — действие при срабатывании фильтра (бан, email-уведомление и т.д.)
- bantime — длительность блокировки (по умолчанию 10 минут)
- maxretry — максимальное число разрешённых неудачных попыток
- findtime — временной интервал для подсчёта попыток
Нам понадобится:
- VPS с Ubuntu 20.04/22.04 или CentOS 7/8 (права root или sudo)
- Активный SSH-доступ
- Установленный iptables или nftables (присутствует по умолчанию в большинстве дистрибутивов)
Если вы ещё не защитили SSH-доступ, ознакомьтесь с нашим руководством по базовой защите VPS после первого входа перед тем, как продолжить.
sudo apt update && sudo apt install fail2ban -y
sudo yum install epel-release -y
sudo yum install fail2ban -y
После установки запустите и включите сервис:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Проверьте статус:
sudo systemctl status fail2ban
Вы должны увидеть active (running) в выводе.
Fail2Ban поставляется с основным файлом /etc/fail2ban/jail.conf. Никогда не редактируйте этот файл напрямую — он будет перезаписан при обновлениях. Вместо этого создайте локальную копию:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Отредактируйте jail.local:
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600 # 1 час
findtime = 600 # 10 минут
maxretry = 5 # 5 попыток
ignoreip = 127.0.0.1/8 ::1 # всегда разрешённые IP
Совет: Добавьте ваш постоянный IP-адрес в
ignoreip, чтобы случайно не заблокировать себя.
Защита SSH — приоритет номер один. Активируйте jail sshd в jail.local:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 3
bantime = 86400 # 24 часа
Если вы изменили порт SSH (например, на 2222), укажите его явно:
port = 2222
Перезапустите Fail2Ban для применения изменений:
sudo systemctl restart fail2ban
Проверьте статус jail:
sudo fail2ban-client status sshd
Вывод покажет текущее количество заблокированных IP и общее число банов.
Если вы запускаете веб-сервер на VPS SSD, защитите также порты 80/443 от агрессивного сканирования и атак на страницы входа.
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
maxretry = 5
[nginx-botsearch]
enabled = true
port = http,https
logpath = /var/log/nginx/access.log
maxretry = 10
findtime = 300
bantime = 3600
[apache-auth]
enabled = true
port = http,https
logpath = /var/log/apache2/error.log
maxretry = 5
[apache-badbots]
enabled = true
port = http,https
logpath = /var/log/apache2/access.log
maxretry = 2
После любых изменений применяйте их:
sudo systemctl reload fail2ban
Вы можете настроить Fail2Ban для отправки письма при каждом бане IP. Вам понадобится установленный sendmail или postfix.
В секции [DEFAULT] файла jail.local:
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s
action_mwl отправляет письмо с соответствующими логами — полезно для аудита и отладки.
После настройки Fail2Ban вот команды, которые вы будете использовать чаще всего:
# Общий статус
sudo fail2ban-client status
# Статус конкретного jail
sudo fail2ban-client status sshd
# Разблокировать IP вручную
sudo fail2ban-client set sshd unbanip 1.2.3.4
# Заблокировать IP вручную
sudo fail2ban-client set sshd banip 1.2.3.4
# Просмотр лога Fail2Ban в реальном времени
sudo tail -f /var/log/fail2ban.log
Если вы запускаете собственное приложение (например, REST API) и хотите защитить конкретный эндпоинт, создайте свой фильтр.
Создайте файл /etc/fail2ban/filter.d/myapp.conf:
[Definition]
failregex = ^<HOST> .* "POST /api/login HTTP/.*" 401
ignoreregex =
Затем добавьте jail в jail.local:
[myapp-login]
enabled = true
port = http,https
filter = myapp
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 7200
Проверьте фильтр перед активацией:
sudo fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/myapp.conf
bantime.increment = true, чтобы удваивать время блокировки при каждой новой попытке с того же IP.Fail2Ban — незаменимый инструмент в арсенале любого Linux-администратора. Установка занимает несколько минут, а правильная настройка позволяет ежедневно блокировать тысячи автоматических атак, значительно снижая поверхность атаки вашего сервера.
Если вы только начинаете и ищете быструю и надёжную платформу, ознакомьтесь с предложениями VPS NVMe от CLIQHOST — оптимизированы для производительности с полным root-доступом. Нужна помощь с настройкой? Свяжитесь с нашей командой — мы настроим ваш сервер профессионально с самого начала.
Реальные отзывы клиентов, которые доверяют CLIQHOST за производительность, надёжность и профессиональную техническую поддержку.
"Перенесли интернет-магазин с зарубежного хостинга — разница огромная: страницы открываются мгновенно, а поддержка отвечает за минуты, на румынском."
"Перенесли 12 клиентских сайтов на CLIQHOST. Бесплатная миграция, нулевой даунтайм, а настройка cPanel — именно то, что нужно нашей команде. Очень рекомендую."
"Наш VPS NVMe спокойно держит пики трафика. Полный root, локальный дата-центр и оплата в MDL — всё, что мы хотели от провайдера."