Skip to content
EN

Как настроить 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

Как настроить Fail2Ban для защиты от brute-force атак?

Для настройки Fail2Ban на защиту от brute-force атак, установите Fail2Ban с помощью команды sudo apt-get install fail2ban. Затем создайте конфигурационный файл /etc/fail2ban/jail.local и добавьте следующие строки для защиты SSH:

[sshd]
enabled = true
filter = sshd
port = ssh
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600

Эти настройки заблокируют IP-адреса, которые не смогли пройти аутентификацию после 5 попыток в течение часа.

Понимание работы Fail2Ban и его компонентов

Fail2Ban — это система, которая мониторит логи и блокирует IP-адреса, производящие подозрительную активность, такую как brute-force атаки. Основные компоненты Fail2Ban включают:

  • Фильтры: определяют условия, при которых IP-адрес будет заблокирован.
  • Тюрьмы: конфигурации, которые применяются к конкретным сервисам (например, SSH, HTTP).
  • Действия: определяют, что делать с заблокированными IP-адресами (например, добавление в iptables).

Для настройки фильтров, вам необходимо отредактировать файл /etc/fail2ban/filter.d/sshd.conf, добавив или изменив регулярные выражения, которые определяют, что считается попыткой взлома.

Практический пример настройки Fail2Ban для защиты веб-сервера

Чтобы настроить Fail2Ban для защиты вашего веб-сервера от brute-force атак, выполните следующие шаги:

  1. Установите Fail2Ban, если он еще не установлен:
  2. sudo apt-get install fail2ban
  3. Создайте конфигурационный файл:
  4. sudo nano /etc/fail2ban/jail.local
  5. Добавьте следующие строки для защиты вашего веб-сервера (например, Apache):
  6. [apache-auth]
    enabled = true
    filter = apache-auth
    logpath = /var/log/apache2/error.log
    maxretry = 3
    bantime = 86400
    
  7. Перезапустите Fail2Ban для применения изменений:
  8. sudo systemctl restart fail2ban

Эти настройки будут блокировать IP-адреса, которые не смогли пройти аутентификацию после 3 попыток в течение суток. Убедитесь, что вы также проверяете логи Fail2Ban для мониторинга заблокированных IP-адресов с помощью команды:

sudo fail2ban-client status apache-auth

Как настроить Fail2Ban для защиты от brute-force атак?

Fail2Ban — это мощный инструмент для защиты серверов от brute-force атак, который работает по принципу блокировки IP-адресов, осуществляющих подозрительные попытки входа. Для настройки Fail2Ban необходимо установить его, настроить конфигурационные файлы и запустить службу. Рекомендуется использовать стандартный конфигурационный файл и адаптировать его под свои нужды, включая определение частоты попыток входа и времени блокировки.

Практическая настройка Fail2Ban для SSH

Одним из наиболее распространенных случаев использования Fail2Ban является защита SSH-сервера от brute-force атак. Для этого следуйте следующей инструкции:

  1. Установка Fail2Ban: В большинстве дистрибутивов Linux вы можете установить Fail2Ban с помощью пакетного менеджера. Например, для Ubuntu и Debian выполните:
  2. sudo apt update && sudo apt install fail2ban
  3. Создание конфигурационного файла: После установки перейдите в каталог конфигурации Fail2Ban. Обычно это /etc/fail2ban. Создайте копию стандартного конфигурационного файла:
  4. sudo cp jail.conf jail.local
  5. Настройка параметров: Откройте файл jail.local с помощью текстового редактора:
  6. sudo nano /etc/fail2ban/jail.local

    В этом файле вы можете настроить параметры для защиты SSH. Найдите секцию, относящуюся к SSH, и измените параметры:

    • enabled = true — включите защиту для SSH.
    • port = ssh — укажите порт, на котором работает ваш SSH-сервер (по умолчанию 22).
    • filter = sshd — фильтр для SSH-сервера.
    • logpath = /var/log/auth.log — путь к логам аутентификации.
    • maxretry = 5 — максимальное число неудачных попыток входа перед блокировкой.
    • bantime = 600 — продолжительность блокировки в секундах (в данном случае 10 минут).
  7. Сохраните изменения: После внесения изменений сохраните файл и закройте редактор.
  8. Запуск и настройка службы: После настройки конфигурации запустите Fail2Ban и убедитесь, что он работает:
  9. sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
  10. Проверка статуса: Чтобы убедиться, что Fail2Ban работает и защищает ваш SSH-сервер, выполните следующую команду:
  11. sudo fail2ban-client status sshd

    Эта команда покажет количество заблокированных IP-адресов и другие статистические данные.

Важно периодически проверять логи Fail2Ban, чтобы отслеживать, какие IP-адреса были заблокированы, и при необходимости вносить коррективы в настройки. Вы можете найти логи Fail2Ban в /var/log/fail2ban.log.

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

Заголовки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.

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.