Skip to content

Как настроить Fail2Ban для защиты сервера

Коротко:

Fail2Ban — open-source IDS, блокирует IP-адреса после N failed attempts. Стандарт для Linux-server security. Защищает: SSH brute-force, web-app login bruteforce, CMS scanning. Настройка 30 мин: apt install fail2ban → jail.local → перезапуск. Поддерживает iptables + nftables + firewalld.

Ниже: пошаговая инструкция, рабочие примеры, типичные ошибки, FAQ.

Пошаговая настройка

  1. Установка: apt install fail2ban (Debian/Ubuntu) или yum install fail2ban (RHEL)
  2. Скопируйте: cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  3. В jail.local: [DEFAULT] bantime = 3600; findtime = 600; maxretry = 3
  4. Включите SSH jail: [sshd] enabled = true
  5. Для web-app: создайте custom filter в /etc/fail2ban/filter.d/myapp.conf
  6. Restart: systemctl restart fail2ban
  7. Мониторинг: fail2ban-client status sshd показывает banned IPs + статистику

Рабочие примеры

СценарийКонфиг
/etc/fail2ban/jail.local (SSH)[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600
Custom filter для nginx login# /etc/fail2ban/filter.d/nginx-login.conf [Definition] failregex = .*POST /login HTTP.* 401 ignoreregex =
Enable nginx-login jail[nginx-login] enabled = true port = http,https filter = nginx-login logpath = /var/log/nginx/access.log maxretry = 5 findtime = 300 bantime = 1800
Unban IP manuallyfail2ban-client set sshd unbanip 1.2.3.4
Telegram alerts при banaction = %(action_mwl)s + telegram-action # custom action

Типичные ошибки

  • ignoreip не добавлен ваш admin IP — вы сами banned
  • bantime = 1h для agressive bots = return каждый час с fresh IP
  • maxretry = 10 — слишком liberal для SSH (attacker сможет попробовать 10 паролей)
  • Не настроен persistent banning — после restart все bans resetятся (дефолтное поведение)
  • Log format nginx не совпадает с default fail2ban filter — ничего не banned
ЗаголовкиCSP, HSTS, X-Frame-Options и др.
SSL/TLSШифрование и сертификат
КонфигурацияСерверные настройки и утечки
Оценка A-FОбщий балл безопасности

Почему нам доверяют

OWASP
рекомендации
15+
заголовков безопасности
<2с
результат
A–F
оценка безопасности

Как это работает

1

Введите URL сайта

2

Анализ заголовков безопасности

3

Получите оценку A–F

Что проверяет анализ безопасности?

Инструмент проверяет HTTP-заголовки безопасности, конфигурацию SSL/TLS, утечки серверной информации и защиту от распространённых атак (XSS, clickjacking, MIMEsniffing). Оценка от A до F показывает общий уровень защиты.

Анализ заголовков

Проверка Content-Security-Policy, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy и других.

Проверка SSL

Версия TLS, срок сертификата, цепочка доверия, поддержка HSTS.

Обнаружение утечек

Поиск раскрытых серверных версий, debug-режимов, открытых конфигов и директорий.

Отчёт с рекомендациями

Детальный отчёт с объяснением каждой проблемы и конкретными шагами для исправления.

Кому это нужно

Специалисты по безопасности

аудит HTTP-заголовков

DevOps

проверка конфигурации

Разработчики

CSP и HSTS настройка

Аудиторы

соответствие стандартам

Частые ошибки

Нет Content-Security-PolicyCSP — главная защита от XSS. Без него инъекция скриптов значительно проще.
Нет заголовка HSTSБез HSTS возможна downgrade-атака с HTTPS на HTTP. Включите Strict-Transport-Security.
Server header раскрывает версиюServer: Apache/2.4.52 помогает атакующим подобрать эксплойт. Скройте версию.
X-Frame-Options не установленСайт можно встроить в iframe для clickjacking-атаки. Установите DENY или SAMEORIGIN.
Нет X-Content-Type-OptionsБез nosniff браузер может интерпретировать файлы неправильно (MIME sniffing).

Лучшие практики

Начните с базовых заголовковМинимум: HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy. Займёт 5 минут.
Внедрите CSP постепенноНачните с Content-Security-Policy-Report-Only, мониторьте нарушения, затем включите.
Скройте серверные заголовкиУдалите Server, X-Powered-By, X-AspNet-Version из ответов.
Настройте Permissions-PolicyОграничьте доступ к камере, микрофону, геолокации — только то, что реально используется.
Проверяйте после каждого деплояЗаголовки безопасности могут быть перезаписаны при обновлении конфигурации сервера.

Получите больше с бесплатным аккаунтом

История security-проверок и мониторинг HTTP-заголовков безопасности.

Зарегистрироваться (FREE)

Больше по теме

Часто задаваемые вопросы

Fail2Ban блокирует IPv6?

Да, если ваш iptables/nftables v6 support включён. <code>fail2ban-client status</code> покажет mix v4/v6 bans.

Будет ли block легитимные users?

Теоретически да, если maxretry низкий. Mitigation: разумный maxretry (3-5), bantime не слишком long (1-24 h), ignoreip для known IPs.

Замена для Fail2Ban?

CrowdSec — modern alternative с community threat feed. Но Fail2Ban проще для single server setup.

Как мониторить banned IPs?

<code>fail2ban-client status [jail]</code> или parse <code>/var/log/fail2ban.log</code>. Для Enterno <a href="/security">Security Scanner</a> показывает security posture.