Сервер Apache HTTP в производственной среде может оказаться под различного рода атаками. Атакующие могут пытаться получить несанкционированный доступ к ограниченным директориям, используя атаку перебором (брут-форсинг) или выполняя зловредные скрипты. Некоторые вредоносные боты могут сканировать ваши веб-сайты на разного рода уязвимости или собирать e-mail адреса или веб-формы для рассылки спама.

Сервер Apache HTTP поставляется с полной совместимой системой логирования для захвата различных ненормальных событий, служащих индикатором таких атак. Тем не менее, это не тривиальная задача систематически парсить детальные логи Апача и быстро реагировать на потенциальные атаки (например забанить/разбанить подозрительные IP адреса), т. к. они совершенно непредсказуемы. И тогда, чтобы облегчить им жизнь, на помощь системный администраторам приходит fail2ban.

Fail2ban — это инструмент с открытым кодом, он предназначен для предотвращения различных атак, он основывается на системных логах и автоматически инициализирует превентивные меры, например, банит IP адрес с помощью iptables, блокирует соединения через запрет доступа в /etc/hosts или предупреждает о событиях по почте. fail2ban поставляется с набором предопределённых джэйлов («jails»), которые используют определённые приложением фильтры логов для выявления общих атак. Вы также можете написать собственные джэйлы для сдерживания любых специфичных атак на произвольные приложения.

В этом уроке я собираюсь продемонстрировать как настроить fail2ban для защиты сервера Apache HTTP. Я предполагаю, что у вас уже установлены сервер Apache HTTP и fail2ban. Возможно вас также заинтересует инструкция «Как защитить SSH сервер от атаки методом перебора (грубой силой — брут-форсинга) используя fail2ban«.

Что такое джейл Fail2ban

Давайте немного остановимся на деталях по джэйлам fail2ban. Джэйл определяет специфичные для приложения политики при которых срабатывают триггеры fail2ban на действие, предназначенное для защиты приложения. fail2ban поставляется с несколькими предопределёнными джэйлами в /etc/fail2ban/jail.conf, для популярных приложений, таких как Apache, Dovecot, Lighttpd, MySQL, Postfix, SSH и так далее. Каджый джэйл полагается на фильтры, которые различные для каждого приложения (они лежат в /etc/fail2ban/fileter.d) для определения общих атак. Давайте изучим один из примеров джэйла: SSH jail.

Конфигурация джэйла SSH определяется несколькими параметрами:

  • [ssh]: имя джэйла в квадратных скобках.
  • enabled: активирован ли джэйл.
  • port: номер порта для защиты (может быть номер или хорошо известное имя).
  • filter: правило парсинга лога для выявления атаки.
  • logpath: файл лога для изучения.
  • maxretry: максимальное число ошибок перед баном.
  • banaction: действие по бану.

Любой заданный параметр в конфигурации джэйла перепишет соответствующий параметр по умолчанию, определённый файлами настроек fail2ban. И наоборот, любой отсутствующий параметр будет взять из дефеолтной величины, определённый в секции [DEFAULT].

Предопределённые фильтры логов лежат в /etc/fail2ban/filter.d, а доступные действия в /etc/fail2ban/action.d.

16076581722_4d51bf2ce8_o

Если вы хотите переписать значения по умолчанию в fail2ban или задать любые пользовательские джэйлы, вы можете сделать это в файле /etc/fail2ban/jail.local file. В этом уроке я собираюсь использовать /etc/fail2ban/jail.local.

Включение предопределённых джэйлов для Apache

Установка по умолчанию fail2ban предлагает несколько предопределённых джэйлов и фильтров для сервера Apache HTTP. Я собираюсь задействовать эти встроеные джэйлы Апача. Из-за незначительных различий в конфигурации Debian и Red Hat, позвольте мне рассмотреть конфигурацию джэйлов fail2ban для них раздельно.

Включение Apache Jails на Debian или Ubuntu

Для включения предопределённых джэйлов Apache на основанных на Debian системах, создайте /etc/fail2ban/jail.local как показано ниже.

Поскольку ни один из джэйлов выше не определяет действие, все эти джэйлы будут выполнять действие по умолчанию, когда сработает триггер. Чтобы узнать действие по умолчанию, загляните в параметр «banaction» в секции [DEFAULT] в /etc/fail2ban/jail.conf.

В нашем случае, действие по умолчанию — это iptables-multiport (предопределено в /etc/fail2ban/action.d/iptables-multiport.conf). Это действие банит IP адреса используя iptables с модулем мультипорт (multiport module).

После включения джэйлов, вы должны перезапустить fail2ban для загрузки джэйлов.

Включение Apache Jails на CentOS/RHEL или Fedora

Для включения предопределнных джэйлов Апача в системах основанных на Red Hat, создайте /etc/fail2ban/jail.local как показано ниже.

Обратите внимание, что действие по умолчанию для всех этих джэйлов — это iptables-multiport (предопределено в «banaction» в секции секции [DEFAULT] в /etc/fail2ban/jail.conf). Это действие банит IP адреса используя iptables с модулем мультипорт (multiport module).

После включения джэйлов вам нужно перезапустить fail2ban для загрузки новых джэйлов в fail2ban.

На Fedora или CentOS/RHEL 7:

На CentOS/RHEL 6:

Проверка и управления статусами и банами Fail2ban

После того, как джэйлы активированы, вы можете мониторить текущее состояние банов в утилите командной строки fail2ban-client.

Чтобы посмотреть список активных джэйлов:

Чтобы посмотреть статус определённого джэйла (в том числе список забанненых IP):

15891521967_4005b1540f_o

Вы также можете вручную забанить или разбанить IP адреса.

Для бана IP адреса в определённом джэйле:

Для разблокировки IP адреса в определённом джэйле:

Заключение

Этот урок объясняет, как работают джэйлы fail2ban и как защитить сервер Apache HTTP используя встроенные джэйлы для Апача. В зависимости от окружения, типа ваших веб-сервисов и ваших нужд в защите, вам может понадобиться адаптировать существующие джэйлы или написать собственные джэйлы и фильтры логов. Зайдите на официальную страницу Github проекта outfail2ban для более актуальных примеров джэйлов и фильтров.

Вы используете в каких-либо своих продуктах fail2ban? Поделитесь своим опытом.

Похожие темы

Установка справочно-правовой системы КонсультантПл... Данная статья устарела, рекомендуется к прочтению новая статья "Установка КонсультантПлюс на Linux: оболочка и подробная инструкция". ...
Как усилить веб-сервер Apache с помощью mod_securi... Если вас интересует установка mod_security на Apache под Windows, то обратитесь к статье "Как установить ModSecurity (mod_security) н...
Безвозвратное уничтожение информации на Linux... Часто бывает так, что необходимо безвозвратно уничтожить некую информацию с носителя. Ни для кого не секрет, что файлы, удалённые из корзины, не уда...
FTP-Map: определяем программное обеспечение и его ... Ftpmap сканирует удалённые FTP-сервера для идентификации, какое программное обеспечение и какой версии они используют. Она использует специфичн...
Проверка уязвимостей, обнаруженных Nexpose... Перейти к содержанию полного руководства пользователя Metasploit на русском языке. Валидация уязвимостей с Nexpose Мастер проверки уязвимостей предо...