Настройка fail2ban
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>, .*
или командой fail2ban-regex.
Вы также можете проверить свой файервол, чтобы посмотреть, заблокированы ли какие-либо хосты. Для этого просто запустите:
iptables -L
Второй способ реакции, кроме iptables(ipfw) это action=hostdeny. Он достаточно простой, только вместо работы с iptables (ipfw) идет заполнение файла
/etc/host.deny. В качестве параметра, в квадратных скобках, можно указать нестандартное расположение
файла запрещенных хостов.
Поставив, достаточно простое средство, fail2ban вы увидите значительное сокращение log-файлов.
И последнее,
может раздражать приход на почту сообщений от fali2ban. Для начала, можно отфильтровать их средствами procmail или настроить
любого почтового клиента для разброса по ящикам, изредка их просматривая, как log-файлы. В последствии можно сократить выдачу, указав в файле fail2ban.conf loglevel=ERROR.
© Елохин И.Ю. (Maint Laboratory)
Далее материал по теме: "Защита от сканнеров безопасности" >>>