Защита сервера с помощью Fail2ban

Brute-force атаки — это один из самых распространённых способов взлома серверов. Злоумышленники автоматически перебирают пароли, пытаясь получить несанкционированный доступ к системам через SSH, почтовые, веб-приложения и другие службы. Один из надёжных способов защиты от таких атак — использование Fail2ban.

Fail2ban — это программное обеспечение, которое анализирует журналы событий (логи) и блокирует IP-адреса, с которых происходят повторные неудачные попытки входа. Решение эффективно, настраиваемо и поддерживается большинством Linux-систем.

Fail2ban отслеживает неудачные попытки входа в логах и применяет временную блокировку IP через файрвол.



Установка Fail2ban

Fail2ban доступен в большинстве репозиториев Linux-дистрибутивов. Установка осуществляется с помощью штатного пакетного менеджера. Пример:

Bash
sudo apt install fail2ban

⚠️ Обратите внимание: в CentOS/AlmaLinux и других системах используется dnf или yum.


Базовая настройка

Все основные настройки хранятся в конфигурационных файлах в каталоге /etc/fail2ban/.

Не рекомендуется изменять файл jail.conf напрямую. Вместо этого создайте локальную копию:

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

Откройте jail.local в текстовом редакторе и найдите секцию [sshd] — именно она отвечает за защиту SSH:

Bash
sudo nano /etc/fail2ban/jail.local

Пример настройки секции:

INI
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = systemd
maxretry = 5
bantime = 1h
findtime = 10m

Пояснение параметров:

  • enabled — включает защиту.
  • port — порт, на котором работает SSH (можно указать конкретный, если используется нестандартный).
  • logpath — путь к логам. Для большинства систем подойдёт переменная %(sshd_log)s.
  • backend — механизм чтения логов. В современных дистрибутивах актуален systemd.
  • maxretry — количество неудачных попыток до блокировки.
  • bantime — длительность бана (поддерживаются s, m, h, d).
  • findtime — за какое время должны произойти попытки для блокировки.
Настройка секции sshd для отслеживания и блокировки подозрительной активности.

Расширенная защита и фильтры

Fail2ban поддерживает расширенную фильтрацию по регулярным выражениям. Для каждого «джейла» (jail) — изолированной зоны наблюдения — можно задать собственный фильтр.

Путь к фильтрам: /etc/fail2ban/filter.d/. Для SSH по умолчанию используется sshd.conf.

Вы можете создавать свои фильтры, например, для веб-приложений (Apache, Nginx, WordPress, и др.), почтовых серверов (Postfix, Dovecot) или панелей управления (ISPmanager, VestaCP и др.).


Проверка и управление Fail2ban

После внесения изменений перезапустите Fail2ban:

Bash
sudo systemctl restart fail2ban

Проверить статус:

Bash
sudo fail2ban-client status

Статус конкретного «джейла», например, sshd:

Bash
sudo fail2ban-client status sshd

Здесь вы увидите количество банов, активные IP, параметры защиты.

Вывод показывает активность защиты и текущие заблокированные IP-адреса.

Актуальные практики

  • Используйте динамическое время блокировки
    Вместо фиксированного bantime можно задать bantime.increment, чтобы каждый последующий бан для IP увеличивался.
INI
bantime.increment = true
bantime.rndtime = 10m
  • Подключение к внешним blacklist’ам
    Возможно настроить Fail2ban для автоматической блокировки IP из публичных чёрных списков (например, abuseipdb).
  • Интеграция с firewall-cmd или nftables
    Fail2ban поддерживает различные backends: iptables, nftables, firewalld. Рекомендуется использовать актуальный механизм фильтрации, поддерживаемый в вашей системе.
  • Уведомления в Telegram или Email
    Можно настроить уведомления при срабатывании банов. Особенно полезно для VPS и серверов без выделенного мониторинга.

Заключение

Fail2ban остаётся актуальным инструментом, обеспечивая надёжную и гибкую защиту серверов от перебора паролей. Его простота, расширяемость и поддержка множества сервисов делают его неотъемлемой частью арсенала системного администратора.

Если вы управляете сервером или отвечаете за безопасность инфраструктуры, убедитесь, что Fail2ban настроен и активно работает. Это простая мера, которая может предотвратить серьёзные инциденты.

Дополнительный материал:

Was this helpful?

0 / 0

Добавить комментарий 0