Настройка 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
- У вас должны быть определены базовые параметры [DEFAULT] в jail.local читайте статью Fail2ban Основные понятия и базовые настройки
- Если вы используете Cloudflare то читайте статью Fail2ban и Cloudflare Настройка Nginx и Apache
- Для подключения оповещений в Telegram читайте Как подключить Telegram к Fail2Ban
Включить мониторинг журналов для попыток входа в 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
- Узнайте как можно защитить ваш WordPress с Fail2Ban. Читайте статью Fail2Ban Защита WordPress
- Изучите Дополнительные фильтры Fail2Ban которые помогут защитить ваш сервер Linux