Настройка Fail2Ban для Apache

Настройка Fail2Ban для мониторинга журналов Apache. Здесь описаны все необходимые фильтры для Apache. Подробная инструкция защита Apache с Fail2Ban.

Настройка Fail2Ban для Apache
3 мин
Автор PINTA IT

Настройка Fail2Ban для Apache

  • Настройка Fail2Ban для мониторинга журналов Apache
  • Здесь описаны все необходимые фильтры для Apache

[apache-auth] Определяет неудачные попытки ввода пароля
[apache-badbots] Определяем ботов, которые ищут email адреса
[apache-noscript] Блокируем доступ к определенным скриптам
[apache-overflows] Предотвращаем попытки переполнения Apache
[apache-nohome] Блокируем неудачные попытки поиска домашней директории
[apache-botsearch] Определяем ботов, которые перебором ищут популярные скрипты
[php-url-fopen] Блокирует попытки использовать определенное поведение PHP

Настройка Fail2Ban для Apache

Конфигурационные файлы Apache существующие по умолчанию

--- $ cd /etc/fail2ban/filter.d

+ apache-auth.conf
+ apache-badbots.conf
+ apache-botsearch.conf
+ apache-nohome.conf
+ apache-noscript.conf
+ apache-overflows.conf

apache-common.conf
apache-fakegooglebot.conf
apache-modsecurity.conf
apache-pass.conf
apache-shellshock.conf

Важно! Следите за тем, чтобы путь к файлу хранения логов logpath был указан корректно.
Обязательно назначьте ему необходимые права доступа командой chmod 755 /var/log/XXX.log

* Конфигурация Fail2ban настраивается
--- $ nano /etc/fail2ban/jail.local

* Управление активными фильтрами
--- $ cd /etc/fail2ban/filter.d

* Файлы логов Apache
--- $ nano /var/log/apache2/error.lo
--- $ nano /var/log/apache2/access.log

Включить мониторинг журналов для попыток входа в Apache

--- jail.local -------------------------------------------------------------------
----------------------------------------------------------------------------------
[apache-auth]

enabled  = true
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache2/error.log
-----------------------------------------------------------------------------------
--- apache-auth.conf --------------------------------------------------------------
-----------------------------------------------------------------------------------
Фильтр apache-auth.conf существует по умолчанию в фильтрах
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------

Фильтр noscript используется для запрета клиентам, которые ищут скрипты на веб-сайте для выполнения и эксплуатации. Если вы не используете PHP или любой другой язык в сочетании с вашим веб-сервером, вы можете включить этот джейл, чтобы запретить тем, кто запрашивает эти типы ресурсов

--- jail.local -------------------------------------------------------------------
----------------------------------------------------------------------------------
[apache-noscript]

enabled  = true
port     = http,https
filter   = apache-noscript
logpath  = /var/log/apache2/error.log
-----------------------------------------------------------------------------------
--- apache-noscript.conf ----------------------------------------------------------
-----------------------------------------------------------------------------------
Фильтр apache-noscript.conf существует по умолчанию в фильтрах
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------

Фильтр overflows используется для блокировки клиентов, которые пытаются запрашивать необычно длинные и подозрительные URL-адреса

--- jail.local -------------------------------------------------------------------
----------------------------------------------------------------------------------
[apache-overflows]

enabled  = true
port     = http,https
filter   = apache-overflows
logpath  = /var/log/apache2/error.log
-----------------------------------------------------------------------------------
--- apache-overflows.conf ---------------------------------------------------------
-----------------------------------------------------------------------------------
Фильтр apache-overflows.conf существует по умолчанию в фильтрах
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------

Фильтр badbots остановит известные шаблоны запросов вредоносных ботов

--- jail.local -------------------------------------------------------------------
----------------------------------------------------------------------------------
[apache-badbots]

enabled  = true
port     = http,https
filter   = apache-badbots
logpath  = /var/log/apache2/access.log
-----------------------------------------------------------------------------------
--- apache-badbots.conf -----------------------------------------------------------
-----------------------------------------------------------------------------------
Фильтр apache-badbots.conf существует по умолчанию в фильтрах
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------

Если вы не используете Apache для предоставления доступа к веб-контенту в домашних каталогах пользователей используйте фильтр nohome

--- jail.local -------------------------------------------------------------------
----------------------------------------------------------------------------------
[apache-nohome]

enabled  = true
port     = http,https
filter   = apache-nohome
logpath  = /var/log/apache2/error.log
-----------------------------------------------------------------------------------
--- apache-nohome.conf ------------------------------------------------------------
-----------------------------------------------------------------------------------
Фильтр apache-nohome.conf существует по умолчанию в фильтрах
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------

Если вы используете PHP, вы можете включить фильтр php-url-fopen который блокирует попытки использования определенного поведения PHP в злонамеренных целях

--- jail.local -------------------------------------------------------------------
----------------------------------------------------------------------------------
[php-url-fopen]

enabled  = true
port     = http,https
filter   = php-url-fopen
logpath  = /var/log/apache2/access.log
-----------------------------------------------------------------------------------
--- php-url-fopen.conf ------------------------------------------------------------
-----------------------------------------------------------------------------------
Фильтр php-url-fopen.conf существует по умолчанию в фильтрах
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------

Фильтр botsearch определяет ботов, которые перебором ищут популярные скрипты

--- jail.local -------------------------------------------------------------------
----------------------------------------------------------------------------------
[apache-botsearch]

enabled  = true
port     = http,https
filter   = apache-botsearch
logpath  = /var/log/apache2/error.log
-----------------------------------------------------------------------------------
--- apache-botsearch.conf ---------------------------------------------------------
-----------------------------------------------------------------------------------
Фильтр apache-botsearch.conf существует по умолчанию в фильтрах
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------

Проверка срабатывания правил

--- $ fail2ban-regex /var/log/ХХХ.log /etc/fail2ban/filter.d/ХХХ.conf
* В случае проблем, логи можно посмотреть следующим образом
--- $ tail -F /var/log/fail2ban.log
--- $ Cntr + Z выйти
*** После внесения изменений в jail.local
* Проверить состояние fail2ban
--- $ systemctl status fail2ban
* Перезапустить сервис
--- $ service fail2ban restart
* Получение информации о включенных джейлах
--- $ fail2ban-client status

Похожие публикации