Я использую fail2ban для обнаружения и блокировки нерегулярных пользователей. Это работает более или менее хорошо, но есть одна проблема с Exim, который записывает ежедневные файлы журнала в мою систему: новый файл журнала на следующий день просто игнорируется. Вот мой файл конфигурации:
[exim]
enabled = true
filter = exim
failregex = \[<HOST>\]: 535 Incorrect authentication data
\[<HOST>\] .* rejected RCPT <.*>: Unknown user$
\[<HOST>\] .* rejected after DATA: This message scored [0-9.]+ spam points\.$
\[<HOST>\] sender verify fail for <.*>: Unrouteable address$
\[<HOST>\] .* rejected RCPT <.*>: relay not permitted$
action = iptables-multiport[name=exim,port="25,465,587"]
logpath = /var/log/exim4/main-*.log
Сегодня я обнаружил, что программа просматривает только вчерашний файл без текущих запретов. Я нашел несколько совпадающих шаблонов в сегодняшнем файле журнала. После перезапуска fail2ban было 3 активных бана.
Файлы журнала:
Итак, шаблон *
для logpath
явно не очень динамичный. Мне интересно, для чего это вообще полезно.
Есть ли какое-нибудь решение, чтобы fail2ban всегда использовал сегодняшний файл?
Я думаю о перезапуске службы каждую ночь. Но это, вероятно, появляется правильно только в том случае, если сегодняшний файл журнала уже был создан, то есть если какое-либо электронное письмо уже было обработано. Стоит ли отложить перезапуск на несколько минут? Система будет более "уязвимой" в течение этого времени задержки.
В целом мое впечатление от fail2ban не очень хорошее. Это просто не кажется очень зрелым, практичным или хорошо продуманным. Но я не мог найти альтернативы, которая производила бы лучшее впечатление. Большинство этих инструментов устарели и не имеют сообщества.
Это Fail2Ban v0.9.3 Ubuntu 16.04.
Изменить: это не дубликат другого вопроса, потому что другой обрабатывает только несколько статических ] имена файлов, мой вопрос касается ежедневного изменения имен файлов.
Если вы можете изменить процедуру ротации журнала exim, я предлагаю вам создать структуру ниже.
Это журнал веб-сервера, но идея та же.
access.log
- это символическая ссылка, которая всегда ведет к сегодняшнему файлу журнала. Программа (fail2ban), имеющая доступ к access.log
, не заботится о том, что она указывает, просто получает содержимое.
Ваша ротация журнала exim должна отсоединить access.log
от старый файл и создать новую ссылку на новый файл журнала.
Таким образом, fail2ban
не будет беспокоиться о новых файлах, просто все время читайте старый добрый access.log
.