// server management

Как установить и настроить Fail2Ban на Linux VPS: полное руководство

August 09, 2026 · by CLIQHOST

Как установить и настроить Fail2Ban на Linux VPS: полное руководство

Каждый сервер, подключённый к интернету, постоянно сканируется ботами в поисках слабых паролей, уязвимых сервисов и открытых портов. Если у вас есть VPS NVMe или выделенный сервер, одна из первых мер защиты — установка Fail2Ban: инструмента с открытым исходным кодом, который автоматически блокирует IP-адреса с подозрительной активностью.

В этом руководстве вы узнаете, как установить, настроить и оптимизировать Fail2Ban на VPS с Ubuntu или CentOS — шаг за шагом.


Что такое Fail2Ban и как он работает?

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 после первого входа перед тем, как продолжить.


Шаг 1: Установка Fail2Ban

На Ubuntu / Debian

sudo apt update && sudo apt install fail2ban -y

На CentOS / RHEL

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) в выводе.


Шаг 2: Файл конфигурации — jail.local

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, чтобы случайно не заблокировать себя.


Шаг 3: Настройка jail для SSH

Защита 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 и общее число банов.


Шаг 4: Защита Nginx и Apache

Если вы запускаете веб-сервер на VPS SSD, защитите также порты 80/443 от агрессивного сканирования и атак на страницы входа.

Jail для Nginx — блокировка HTTP auth

[nginx-http-auth]
enabled  = true
port     = http,https
logpath  = /var/log/nginx/error.log
maxretry = 5

Jail для Nginx — блокировка ботов

[nginx-botsearch]
enabled  = true
port     = http,https
logpath  = /var/log/nginx/access.log
maxretry = 10
findtime = 300
bantime  = 3600

Jail для Apache

[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

Шаг 5: Настройка email-уведомлений

Вы можете настроить Fail2Ban для отправки письма при каждом бане IP. Вам понадобится установленный sendmail или postfix.

В секции [DEFAULT] файла jail.local:

destemail = [email protected]
sender    = [email protected]
mta       = sendmail
action    = %(action_mwl)s

action_mwl отправляет письмо с соответствующими логами — полезно для аудита и отладки.


Шаг 6: Полезные команды управления

После настройки 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

Шаг 7: Создание пользовательского фильтра

Если вы запускаете собственное приложение (например, 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

Лучшие практики и дополнительные рекомендации

  • Используйте Fail2Ban совместно с выделенным брандмауэром — Fail2Ban не заменяет UFW/iptables, а дополняет их.
  • Используйте постепенное увеличение bantime — включите bantime.increment = true, чтобы удваивать время блокировки при каждой новой попытке с того же IP.
  • Регулярно проверяйте логи — IP, заблокированный сотни раз в день, может указывать на DDoS-атаку.
  • Обновляйте Fail2Ban — новые версии содержат улучшенные фильтры и поддержку nftables.
  • Рассмотрите управляемый выделенный сервер — если у вас нет времени на ручное администрирование безопасности, команда CLIQHOST настроит и будет поддерживать Fail2Ban за вас.
  • Если вам нужен SSL-сертификат для защиты трафика на вашем сервере, CLIQHOST предлагает проверенные решения по доступным ценам.

Заключение

Fail2Ban — незаменимый инструмент в арсенале любого Linux-администратора. Установка занимает несколько минут, а правильная настройка позволяет ежедневно блокировать тысячи автоматических атак, значительно снижая поверхность атаки вашего сервера.

Если вы только начинаете и ищете быструю и надёжную платформу, ознакомьтесь с предложениями VPS NVMe от CLIQHOST — оптимизированы для производительности с полным root-доступом. Нужна помощь с настройкой? Свяжитесь с нашей командой — мы настроим ваш сервер профессионально с самого начала.

SHARE
// Что говорят наши клиенты

Что говорят наши клиенты

Реальные отзывы клиентов, которые доверяют 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."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău