25.08.2011 23:46
Кто еще не знает, есть утилитка, которая может реагировать на определенные записи в логе. Заточена она в первую очередь на то, чтобы банить при переборе паролей. При этом можно высылать себе уведомления на почту и вообще выполнять разнообразнейшие скрипты. Т.е. программа очень широкого применения.
Цитата:
$ eix -e fail2ban
[I] net-analyzer/fail2ban
Available versions: 0.8.4-r3
Installed versions: 0.8.4-r3(07:32:57 AM 05/09/2011)
Homepage:
Description: Bans IP that make too many password failures
рассмотрим простейший пример, бан перебирающих пароли к моему pure-ftpd. Во-первых, необходимо выделить лог ftp в отдельный файлик, чтобы программка особо не пыхтела, перебирая все записи, да и вообще так просто правильнее. Открываем syslog-ng.conf и ...
Цитата:
destination ftp { file("/var/log/ftp.log"); };
filter ftp { facility(ftp); };
log { source(src); filter(ftp); destination(ftp); };
после чего лог от ftp будет писаться не только в messages, но и в ftp.log
Теперь идем в настройки самого fail2ban, конкретнее в jail.conf, конфигурацию самой "тюрьмы" и пишем туда вроде этого
Цитата:
[pure-ftp]
enabled = true
filter = pure-ftpd
action = iptablesA[name=PWD]
logpath = /var/log/ftp.log
maxretry = 2
bantime = 3600

[pure-ftp2]
enabled = true
filter = pure-ftpd2
action = iptablesA[name=DWL]
logpath = /var/log/ftp.log
maxretry = 5
bantime = 1200
записи расшифровываются очень просто. В одном случае применяется фильтр pure-ftpd, в другом случае pure-ftpd2, оба они лежат в каталоге filter.d, соответственно в каталоге actions.d лежат файлики *.conf, среди которых есть (у меня) iptablesA, я его специально переименовал из какого-то уже существующего перед правкой, чтобы не перезатирались при обновлении file2ban. Для того, чтобы различать правила iptables, вводится параметр names, добавляющийся к имени правила iptables. Параметр logpath определяет, какой лог смотреть для обнаружения взлома. В обеих секциях это тот самый файлик, который я определил выше. maxretry - сколько раз заданная в фильтре фраза может встретиться за период времени, определенный параметром findtime (в этом же конфиге). И bantime - на сколько времени банить.
Думаю, нет нужды объяснять, что банится нарушитель средствами iptables, поэтому он должен быть установлен. Обратите внимание, что по умолчанию все actions настроены на входящий, а не транзитный траффик. Поэтому если речь идет о шлюзе, то actions надо будет немного поправить.
Приведу примеры фильтров. В них просто напросто указывается regex для строки лога, являющейся переключателем состояния взлом/не взлом.
первый
Цитата:
__errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur)
failregex = pure-ftpd: \(\?@<HOST>\) \[WARNING\] %(__errmsg)s \[.+\]$
все просто, работать начинает, когда в логе появляется "Authentication failed for user" или аналогичное сообщение на французском (зачем это,я не очень понял, но ладно)
Из второго я мультиязычность выкинул и приспособил для "качальщиков" от имени supermag
Цитата:
failregex = pure-ftpd: \(supermag\@<HOST>\) \[NOTICE\].*downloaded \(.*\)$
Для того, чтобы тестировать, насколько верно вы подобрали строку regex для строки лога выделена утилитка fail2ban-regex, не обойдите ее вниманием.
Писал сумбурно и быстро, поэтому если что-то непонятно - спрашивайте. На самом деле сложным кажется только когда в первый раз лог открываешь. Потом все просто и засады в основном касаются использования iptables.
Часовой пояс GMT +3, время: 08:18.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.