// SSD VPS

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

06 октября 2026 г. · by Alex M.

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

Если у вас есть VPS SSD или VPS NVMe, открытый в интернет, одна из первых угроз, с которой вы столкнётесь — это brute-force атаки: боты, перебирающие тысячи комбинаций логин/пароль на SSH, панелях администрирования или веб-формах. Fail2Ban — классическое, лёгкое и крайне эффективное решение, которое мониторит лог-файлы и автоматически блокирует подозрительные IP на уровне файрвола.

В этом руководстве вы узнаете, как установить, настроить и кастомизировать Fail2Ban на Ubuntu 22.04 / Debian 12, с практическими примерами для SSH, Nginx и других сервисов.


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

Fail2Ban — это демон на Python, который сканирует лог-файлы сервисов (SSH, Apache, Nginx, FTP, email и т.д.) и обнаруживает паттерны неудачных аутентификаций. Когда количество ошибок превышает настраиваемый порог за заданный интервал времени, Fail2Ban автоматически добавляет правило в iptables (или nftables/ufw), блокируя IP атакующего на заданный период.

Ключевые преимущества:

  • Работает в фоновом режиме без ручного вмешательства
  • Настраивается отдельно для каждого сервиса (SSH, FTP, HTTP, mail и т.д.)
  • Поддерживает кастомные действия (бан, email-уведомление, webhook)
  • Минимальное потребление ресурсов — идеально для VPS с 1 vCPU

Предварительные требования

Перед началом убедитесь, что у вас есть:

  • VPS с Ubuntu 22.04 или Debian 12
  • Доступ root или пользователь с правами sudo
  • Установленный iptables или ufw
  • Активное SSH-подключение

Если у вас ещё нет сервера, ознакомьтесь с предложениями VPS NVMe от CLIQHOST — идеально для проектов, требующих безопасности и производительности.


Шаг 1: Обновление системы и установка Fail2Ban

Всегда начинайте с обновления пакетов:

sudo apt update && sudo apt upgrade -y

Установите Fail2Ban:

sudo apt install fail2ban -y

Проверьте, что сервис запущен:

sudo systemctl status fail2ban

Если сервис не запускается автоматически:

sudo systemctl enable --now fail2ban

Шаг 2: Структура конфигурационных файлов

Fail2Ban имеет гибкую архитектуру конфигурации:

  • /etc/fail2ban/fail2ban.conf — глобальная конфигурация демона
  • /etc/fail2ban/jail.conf — правила по умолчанию для всех «jail»
  • /etc/fail2ban/jail.local — ВАШ файл переопределений; НИКОГДА не изменяйте jail.conf напрямую!
  • /etc/fail2ban/filter.d/ — предустановленные фильтры (regex для логов)
  • /etc/fail2ban/action.d/ — предустановленные действия (iptables, email и т.д.)

Золотое правило: все изменения делайте в файлах .local — при обновлении пакета файлы .conf могут быть перезаписаны.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Шаг 3: Базовая настройка в jail.local

Откройте файл:

sudo nano /etc/fail2ban/jail.local

Найдите секцию [DEFAULT] и скорректируйте значения:

[DEFAULT]
# IP-адреса или сети, которые никогда не будут заблокированы
ignoreip = 127.0.0.1/8 ::1 ВАШ_ДОМАШНИЙ_IP

# Длительность бана (в секундах). 3600 = 1 час
bantime  = 3600

# Временное окно для подсчёта попыток (в секундах)
findtime = 600

# Максимальное число неудачных попыток до бана
maxretry = 5

# Бэкенд для чтения логов
backend = auto

# Действие по умолчанию: бан через iptables
banaction = iptables-multiport

Важно: Добавьте ваш домашний или офисный IP в ignoreip, чтобы случайно не заблокировать себя!


Шаг 4: Активация jail для SSH

SSH — первая цель любого бота. Активируйте защиту:

[sshd]
enabled  = true
port     = ssh
logpath  = %(sshd_log)s
backend  = %(sshd_backend)s
maxretry = 3
bantime  = 86400

Здесь мы установили bantime = 86400 (24 часа) и maxretry = 3 — строже, чем глобальные значения. Адаптируйте под свои нужды.

Если вы сменили порт SSH (рекомендация по безопасности):

[sshd]
enabled = true
port    = 2222
logpath = %(sshd_log)s
maxretry = 3
bantime  = 86400

Применение конфигурации:

sudo systemctl reload fail2ban

Шаг 5: Защита Nginx с помощью Fail2Ban

Если вы запускаете Nginx на VPS, можно защитить как HTTP-аутентификацию, так и вредоносные запросы.

5.1 Блокировка попыток HTTP Basic аутентификации

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

5.2 Блокировка агрессивного сканирования (bad bots / scanners)

Создайте кастомный фильтр:

sudo nano /etc/fail2ban/filter.d/nginx-badbots.conf
[Definition]
failregex = ^<HOST> -.*"(GET|POST|HEAD).*HTTP.*" (400|444|403|408) .*$
ignoreregex =

Добавьте jail в jail.local:

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

Шаг 6: Защита Postfix / почтовых сервисов

Почтовые серверы часто становятся целью атак. Активируйте jail для Postfix и Dovecot:

[postfix]
enabled  = true
port     = smtp,465,submission
logpath  = %(postfix_log)s
maxretry = 5

[dovecot]
enabled  = true
port     = pop3,pop3s,imap,imaps,submission,465,sieve
logpath  = %(dovecot_log)s
maxretry = 5
bantime  = 3600

Для расширенных конфигураций или если вы предпочитаете управляемое решение, изучите услуги администрирования серверов CLIQHOST.


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

После настройки вы будете часто использовать эти команды:

Проверить статус всех jail

sudo fail2ban-client status

Проверить статус конкретного jail

sudo fail2ban-client status sshd

Типичный вывод:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 2
|  |- Total failed: 47
|  `- Journal matches: ...
`- Actions
   |- Currently banned: 1
   |- Total banned: 8
   `- Banned IP list: 198.51.100.42

Разблокировать IP вручную

sudo fail2ban-client set sshd unbanip 198.51.100.42

Заблокировать IP вручную

sudo fail2ban-client set sshd banip 203.0.113.15

Протестировать фильтр перед активацией

sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

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

Fail2Ban может отправлять email при каждом бане — удобно для мониторинга:

[DEFAULT]
destemail = admin@вашдомен.com
sender    = fail2ban@вашдомен.com
mta       = sendmail
action    = %(action_mwl)s

action_mwl = бан + email с релевантными логами (whois + log).

Убедитесь, что sendmail или другой MTA установлен на сервере. Либо используйте внешний SMTP.


Шаг 9: Fail2Ban с UFW вместо iptables

Если вы используете UFW как файрвол (распространено на Ubuntu), настройте Fail2Ban для работы с ним:

[DEFAULT]
banaction = ufw

Убедитесь, что UFW активен:

sudo ufw enable
sudo ufw status

Fail2Ban будет использовать команду ufw для добавления и удаления правил бана.


Шаг 10: Прогрессивный бан (Recidive)

Продвинутая функция — IP-адреса, которые банятся несколько раз, получают всё более длительные баны:

[recidive]
enabled  = true
logpath  = /var/log/fail2ban.log
maxretry = 3
findtime = 86400
bantime  = 604800

Этот jail мониторит сам лог Fail2Ban: если IP забанен 3 раза за 24 часа — он получает бан на 7 дней.


Мониторинг лога Fail2Ban

Следите за активностью в реальном времени:

sudo tail -f /var/log/fail2ban.log

Типичный вывод:

2025-07-01 03:14:22,105 fail2ban.actions [1234]: NOTICE  [sshd] Ban 198.51.100.42
2025-07-01 03:16:01,002 fail2ban.actions [1234]: NOTICE  [sshd] Ban 203.0.113.7

Дополнительные практики безопасности VPS

Fail2Ban — важный компонент, но не единственный. Сочетайте его с:

  1. Аутентификацией по SSH-ключам — полностью отключите аутентификацию по паролю
  2. Сменой порта SSH — снижает шум от сканирования
  3. Строгим файрволом — разрешайте только необходимые порты
  4. Регулярными обновлениями — держите систему актуальной
  5. SSL-сертификатами для всех веб-сервисов — подробнее на странице SSL-сертификатов CLIQHOST

Для enterprise-проектов или если хотите делегировать администрирование, управляемые выделенные серверы CLIQHOST включают проактивный мониторинг и защиту.


Часто встречающиеся проблемы

Fail2Ban не запускается

sudo journalctl -xe -u fail2ban

Проверьте синтаксические ошибки в jail.local.

Фильтр не обнаруживает атаки

Протестируйте вручную:

sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf --print-all-matched

Заблокировал сам себя

Зайдите на сервер через VNC/KVM-консоль (доступна в панели управления CLIQHOST) и выполните:

sudo fail2ban-client set sshd unbanip ВАШ_IP

Заключение

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

Ключевые шаги:

  • Быстрая установка через apt
  • Настройка в jail.local (не в .conf!)
  • Немедленная защита SSH, Nginx, почтовых сервисов
  • Простые команды для мониторинга и ручной разблокировки
  • Продвинутые функции: recidive, email-уведомления, кастомные фильтры

Если вы ищете производительный и безопасный Linux VPS для применения этого руководства, изучите варианты VPS SSD и VPS NVMe от CLIQHOST — инфраструктура в Молдове, реальная техподдержка и прозрачные цены. По вопросам или для сложных конфигураций свяжитесь с нашей командой.

SHARE
// what clients say

What Our Clients Say

Real reviews from customers who trust CLIQHOST for performance, reliability and expert technical support.

★★★★★

"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