Maint Laboratory

Лаборатория Maint

 
    Главная    Программы    Библиотеки    Документация    Услуги    Контакты  

Настройка fail2ban

Maint Laboratory Обсудить

  Fail2ban - это инструмент, который отслеживает в log-файлах попытки обратится к сервисам, таким, как SSH, FTP, SMTP, Apache и другим, и если находит постоянно повторяющиеся неудачные попытки с одного и того же IP-адреса или хоста, fail2ban блокирует дальнейшие попытки с этого IP-адреса/хоста, с помощью правила iptables(ipfw) или host.deny.  Собственно сама установка достаточно проста.


# yum install fail2ban
 

 В каталоге /etc/fail2ban будут размещены все файлы настроек. Стандартное поведение fail2ban настроивается в файле /etc/fail2ban/jail.conf.

Опции конфигурирования:
  • ignoreip - это разделенный пробелами список ip-адресов, которые не могут быть блокированы fail2ban. Сюда можно занести свою локальную машину или комьютер, с которого будут проводится эксперименты над системой
  • bantime - время в секунда, на которое блокируется хост.
  • maxretry - максимальное число ошибочных попыток доступа к сервису, прежде чем хост будет заблокирован fail2ban.
  • filter - имя соответствующего файла-фильтра в /etc/fail2ban/filter.d, без конечного .conf
  • action - имя соответствующего файла-реакции на срабатывание фильтра в /etc/fail2ban/action.d
  • logpath - файл логов, мониторинг которого осуществляет fail2ban, для проверки попыток атак.
  • enabled - может принимать значение true или false. Включено,выключено правило.
 Я опишу дополнительное правило для мониторинга postfix. Имеющееся в комплекте правило, мягко говоря, не отвечает реалиям. Если у вас появились в логах записи вида

NOQUEUE: reject: RCPT from gate.bad-host.ru[xxx.xxx.xxx.xxx]: 450 4.1.8 <postmaster@bad-host>: Sender address rejected: Domain not found; from=<postmaster@bad-host> to=<xxxxxxxxx@example.ru> proto=ESMTP helo=<bad-host.ru>

NOQUEUE: reject: RCPT from unknown[xxx.xxx.xxx]: 550 5.1.7 <remote-bad@bad-host.com>: Sender address rejected: undeliverable address: host xxx.xxx.com[xxx.xxx.xxx.xxx] said: 550 remote-bad@bad-host.com unknown user account (in reply to RCPT TO command); from=<remote-bad@bad-host.com> to=<xxxxx@example.ru> proto=ESMTP helo=<HPDGNXGB>

и они заполнили уже весь лог-файл, значит ищутся адресаты на вашем сервере, которым можно отправить спам.
 В файле jail.conf создаем новое правило

[postfix-spam]
enabled = true
filter = postfix-spam
action = iptables[name=postfix_spam, port=smtp, protocol=tcp]
            sendmail[name=Postfix-spam, dest=root@localhost, sender=fail2ban@localhost]
logpath = /var/log/maillog
bantime = 600

Первая строка - это просто придуманное вами имя. Следует обратить внимание на опцию action. Она включает 2 правила, первое (iptables) - блокировка, второе (sendmail) - отправка сообщения о прозведенном действии.
Опишу правило iptables.
  • name - имя, для передачи в iptables (может быть любым)
  • port - порт, для указания в iptables при блокировании хоста
  • protocol - протокол, для указания в iptables при блокировании хоста
Опишу правило sendmail.
  • name - имя, для уточнения, в поле From:
  • dest - адресат, которому отправляются письма (у меня стоит root, поскольку в postfix все, что приходин на root, идет на мой адрес).
  • sender - от кого идет письмо с сообщением
Теперь приведу мой пример фильтра

# Fail2Ban configuration file
[Definition]
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P[\w\-.^_]+)
# Values: TEXT
#

failregex = reject: RCPT from (.*)\[<HOST>\]: 550
            reject: RCPT from (.*)\[<HOST>\]: 450
            reject: RCPT from (.*)\[<HOST>\]: 554

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

Отлаживать фильтры на вашем log-файле можно командой grep с параметром -E, поставив вместо <HOST>, .* .
Вы также можете проверить свой файервол, чтобы посмотреть, заблокированы ли какие-либо хосты. Для этого просто запустите: iptables -L

 Второй способ реакции, кроме ipdables(ipfw) это action=hostdeny. Он достаточно простой, только вместо работы с iptables (ipfw) идет заполнение файла /etc/host.deny. В качестве параметра, в квадратных скобках, можно указать нестандартное расположение файла запрещенных хостов.
 Поставив, достаточно простое средство, fail2ban вы увидите значительное сокращение log-файлов.
  И последнее, может раздражать приход на почту сообщений от fali2ban. Для начала, можно отфильтровать их средствами procmail или настроить любого почтового клиента для разброса по ящикам, изредка их просматривая, как log-файлы. В последствии можно сократить выдачу, указав в файле fail2ban.conf loglevel=ERROR.
nbsp;

 

 

        Maint Laboratory Обсудить


© Елохин И.Ю, Лаборатория Maint 2010 г.

 
  [ Главная ]    [ Программы ]    [ Библиотеки ]    [ Документация ]    [ Услуги]     [ Контакты ]