Содержание


Защита сетевых сервисов с помощью Fail2ban

Часть 2. Примеры конфигурации

Серия контента:

Этот контент является частью # из серии # статей: Защита сетевых сервисов с помощью Fail2ban

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Защита сетевых сервисов с помощью Fail2ban

Следите за выходом новых статей этой серии.

Даже беглый взгляд на структуру конфигурационных файлов, приведённую в листинге 1 в предыдущей статье, позволяет понять, что основным файлом является fail2ban.conf. И действительно, в этом файле содержатся общие параметры конфигурации для демона (сервиса) fail2ban-server, такие как уровень мониторинга журналов и целевые объекты. Кроме того, здесь можно определить путь (path) к сокету, используемому для обмена данными между клиентом и сервером.

Изоляторы (jails)

Несмотря на то, что файл fail2ban.conf определяет основную конфигурацию всей подсистемы, всё-таки наиболее важным для функционирования, пожалуй, следует считать файл jail.conf, который содержит описания так называемых "изоляторов" (jails).

Текущую конфигурацию каждого изолятора описывает набор следующих параметров:

  • ignoreip - список IP-адресов, которые не должны быть заблокированы, причём можно задавать диапазон адресов с помощью маски подсети или список IP-адресов, отделённых друг от друга пробелом.
  • bantime - продолжительность интервала блокирования (в секундах) для IP-адреса.
  • findtime - длительность интервала обнаружения "подозрительных совпадений" (в журналах). Если за этот интервал времени ничего подозрительного не обнаружено, то счётчику (counter) присваивается значение 0.
  • maxretry - количество "подозрительных совпадений" (т.е., значение счётчика counter), при котором срабатывает определённая операция по отношению к отслеживаемому IP-адресу.
  • action - операция, которая должна быть выполнена, если значение счётчика стало равным значению параметра maxretry. По умолчанию сервис (порт) блокируется для отслеживаемого IP-адреса.
  • port - наименование сервиса или номер соответствующего этому сервису порта, за которым ведётся наблюдение.
  • filter - имя фильтра, который должен использовать данный изолятор, чтобы выявлять "подозрительные совпадения" в журналах (фильтры хранятся в подкаталоге /etc/fail2ban/filter.d).
  • logpath - путь к файлу журнала, который должен обрабатываться с помощью заданного фильтра.

Содержимое файла jail.conf разделяется на секции, соответствующие различным сервисам. Самая первая секция называется [DEFAULT] и предназначается для определения общих параметров, значения которых имеют силу во всех последующих секциях данного файла. Один из вариантов содержимого секции [DEFAULT] показан в листинге 1.

Листинг 1. Параметры, определяемые в секции [DEFAULT]
ignoreip = 127.0.0.1
bantime = 600
findtime = 600
maxretry = 3

Набор параметров, приведённых в листинге 1, означает, что после трёх неудачных попыток (значение параметра maxretry) получить доступ в систему с одного и того же IP-адреса в течение 10 минут (600 секунд, значение параметра findtime) этот адрес будет автоматически заблокирован на 10 минут (600 секунд, параметр bantime).

Для параметра ignoreip задан только один адрес 127.0.0.1 (localhost), поскольку блокировать "самого себя" нет никакого смысла.

Пример простой конфигурации изолятора для сервиса ssh приведён в листинге 2.

Листинг 2. Конфигурация изолятора для сервиса ssh
[ssh]

enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 5

Здесь определена типовая конфигурация для наблюдения за сервисом ssh, которая предписывает сканирование журнала /var/log/secure с использованием фильтра sshd (файл sshd.conf). Если в журнале будет обнаружено 5 попыток атаки на порт сервиса ssh, то IP-адрес, с которого производились эти попытки, будет заблокирован (действие по умолчанию).

При необходимости к описанной в листинге 3 конфигурации можно добавить определение параметра action.

action = iptables

Этот параметр определяет, какие операции (действия) необходимо выполнить в том случае, когда обнаружены "подозрительные совпадения" с помощью заданного фильтра. Значением является имя файла, расположенного в подкаталоге /etc/fail2ban/action.d/, но без указания его расширения .conf. Таким образом, в данном случае параметр action ссылается на файл /etc/fail2ban/action.d/iptables.conf, и блокирование "агрессивного" IP-адреса будет выполнено посредством изменения правил сетевого экрана iptables.

Для Web-сервера Apache изолятор конфигурируется почти аналогичным образом с небольшими различиями, как показано в листинге 3.

Листинг 3. Конфигурация изолятора для Web-сервера Apache
[apache-multiport]

enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/httpd/*error_log
bantime = 1800
maxretry = 3

Различия заключаются в следующем: блокироваться будут сразу два порта (http и https), сканирование будет выполняться в нескольких файлах журналов, а условия блокирования заданы более жёсткие - уже после трёх неудачных попыток аутентификации IP-адрес будет заблокирован на полчаса.

Фильтры

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

Пример одного из таких выражений, предназначенного для обнаружения DDoS-атаки на порт сервиса ssh, приведён ниже:

failregex = sshd(?:\[\d+\])?: didn't receive identification \\
                              string from <HOST>$

Это регулярное выражение записано в файле sshd-ddos.conf. Параметру failregex может быть присвоено несколько регулярных выражений, как например, в файле apache-auth.conf, фрагмент которого показан в листинге 4.

Листинг 4. Фрагмент файла apache-auth.conf - набор регулярных выражений
failregex = [[]client <HOST>[]] user .* authentication failure
            [[]client <HOST>[]] user .* not found
            [[]client <HOST>[]] user .* password mismatch

Запуск сервера

После завершения настройки Fail2ban, всех требуемых изоляторов и фильтров сервер может быть активизирован командой (требуются права суперпользователя root):

service fail2ban start

или

sudo /etc/init.d/fail2ban start

Работа с клиентом Fail2ban

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

fail2ban-client -d

Можно даже протестировать регулярные выражения, определённые для конкретного фильтра:

fail2ban-regex /var/log/security /etc/fail2ban/filter.d/sshd.conf

Для того, чтобы посмотреть, какие сервисы (порты) были заблокированы для определённых IP-адресов, можно воспользоваться командой (здесь также необходимы права root):

iptables -L

Заключение

Пакет Fail2ban представляет собой программное обеспечение, которое можно применять для повышения надёжности защиты хоста, подключённого к какой-либо общедоступной сети (в частности, к Интернет). Его главным достоинством являются простота установки и настройки. Наличие отдельных изоляторов и фильтров для каждого сервиса обеспечивают гибкость политики безопасности защищаемой системы.


Ресурсы для скачивания


Похожие темы

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=821847
ArticleTitle=Защита сетевых сервисов с помощью Fail2ban: Часть 2. Примеры конфигурации
publish-date=06192012