Как заблокировать доступ к определённым файлам с помощью fail2ban?

Вопрос или проблема

В моих логах содержится множество обращений к несуществующим файлам, обычно к установкам WP- или phpMyAdmin. Очевидно, это автоматические скрипты, которые пытаются найти уязвимости в безопасности. Моя идея состоит в том, чтобы избавиться от них, блокируя серверы, на которых работают такие вредоносные скрипты, с помощью правила fail2ban. А если быть более точным: с помощью правила fail2ban, которое блокирует IP, обращающиеся к определённым данным на сервере. Вот что у меня есть в качестве фильтра:

[Definition]
badurls = /p/search|/wordpress
failregex = ^<HOST> -.*"(GET|POST).*(?:%(badurls)s).*"$
ignoreregex =
datepattern = ^[^\[]*\[({DATE})
              {^LN-BEG}

На мой взгляд, это должно обнаруживать все обращения к файлам, которые начинаются с “/p/search” или “wordpress”. К сожалению, правило фильтра не обнаруживает ничего, хотя в логах есть записи, которые должны совпадать.

Связанное определение jail для этого фильтра:

[apache-404]
enabled = true
port = http,https
filter = apache-404
logpath = /var/log/apache2/error.log
          /var/log/apache2/access.log
          /var/log/apache2/other_vhosts_access.log
          /var/log/apache2/other_vhosts_access.log.1
bantime = 72h
findtime = 600
maxretry = 3

Так что…есть идеи, что может быть не так с этим регулярным выражением?

Спасибо!

Как минимум, вам нужно экранировать

\/p/search|\/wordpress

Лог, который вы можете указать

logpath = /var/log/apache2/*.log

Путь к логам VPS с ispConfig для всех доменов

logpath  = /var/log/ispconfig/httpd/*/access.log

Ответ или решение

Чтобы заблокировать доступ к определенным файлам через fail2ban, важно понять, как правильно настраивать фильтры регулярных выражений и корректно русифицировать их использование. Регулярные выражения (regex) в fail2ban используются для анализа логов и обнаружения подозрительной активности на сервере. Поэтому давайте подробно разберем теорию, примеры и применение этих фильтров в вашем конкретном случае.

Теория

fail2ban – это программное обеспечение, которое сканирует журналы логов сервера для поиска нежелательной или вредоносной активности и автоматически блокирует IP-адреса, с которых идет такая активность. Это особенно полезно для предотвращения брутфорс-атак и снижения нагрузки на сервер от вредоносных скриптов, таких как те, которые сканируют вашу систему на уязвимости WordPress или phpMyAdmin.

Основные компоненты fail2ban:

  1. Фильтры: Устанавливают условия, при которых fail2ban срабатывает (например, специфические запросы GET или POST).
  2. Джоли: Конфигурации, которые связывают фильтры с определенными логами и определяют действие при срабатывании (например, блокировка IP).

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

Пример

В вашей конфигурации регулярное выражение должно отлавливать любые попытки доступа к URL-путям, начинающимся с /p/search или wordpress. Следующее регулярное выражение должно правильно интерпретироваться и в дальнейшем быть доработано:

badurls = \/p\/search|\/wordpress
failregex = ^<HOST> -.*"(GET|POST).*(?:%(badurls)s).*"$

Также примите во внимание:

  • Экранирование символов. В языках программирования и их интерпретаторах обратная косая черта (\) используется как знак экранирования символов, таким образом, / может быть выражен как \/. Ваше регулярное выражение должно, соответственно, экранировать все косые черты.
  • Лог-файлы. Путь к логам должен быть корректно указан и проверен на наличие соответствующих данных для анализа.

Применение

  1. Настройка фильтра: Обновите ваш файл фильтра, используя корректное регулярное выражение. Убедитесь, что оно точно соответствует структуре логов на вашем сервере. Например, если ваши логи имеют другой формат или дополнительные параметры, это может повлиять на работу regex.

  2. Проверка шаблона: Протестируйте регулярное выражение с отрывком лога, чтобы убедиться в его работоспособности. Это можно сделать, например, с помощью онлайн-сервисов для проверки регулярных выражений или же командой fail2ban-regex.

  3. Конфигурация джейла: Убедитесь, что ваш джейл настроен правильно, включая путь к логам и параметры ограничения времени (bantime, findtime, maxretry). Ваша цель – хотя бы временно остановить доступ с подозрительных IP-адресов, чтобы предотвратить возможность брутфорс-атак или выявления уязвимостей.

[apache-404]
enabled = true
port = http,https
filter = apache-404
logpath = /var/log/apache2/*.log
bantime = 72h
findtime = 600
maxretry = 3
  1. Мониторинг и логирование: Регулярно проверяйте эффективность настроек. Это можно сделать путем анализа входящих соединений и оценки количества срабатываний fail2ban. Это позволит вовремя корректировать конфигурации искаженные IP.

  2. Эскалация и корректировка: Если проблема продолжается или обнаруживаются новые попытки доступа, возможно, потребуется расширить правила фильтра, выделяя новые паттерны доступа как небезопасные. В сложных случаях возможно применение дополнительных инструментов безопасности.

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

Оцените материал
Добавить комментарий

Капча загружается...