August 09, 2026 · by CLIQHOST
Каждый сервер, подключённый к интернету, постоянно сканируется ботами в поисках слабых паролей, уязвимых сервисов и открытых портов. Если у вас есть 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 за производительность, надёжность и профессиональную техническую поддержку.
"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."
"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."
"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."