У меня есть журналы в файлах /var/log/syslog/YYYY-MM-DD/file.log. Новые каталоги создаются автоматически rsyslog, а журналы автоматически помещаются в новые места.
Каждый день я архивирую журналы предыдущего дня в другой каталог, поэтому, помимо 5-минутного периода, в / var / log / syslog / есть только один подкаталог.
Исходя из этого, я создал правила fail2ban, используя:
logpath = /var/log/syslog/*/auth.log
Что работает. До полуночи, когда fail2ban все еще "слушает" предыдущий журнал. Я могу перезагрузить конфигурацию fail2ban, но это лишит меня существующих запретов.
Возникает вопрос - что можно сделать, чтобы fail2ban переключился на новый журнал, не теряя существующих банов?
Я также попытался создать символическую ссылку / var / log / syslog / today, чтобы указать на журналы текущего дня и указать fail2ban на /var/log/syslog/today/auth.log, но затем я получил журналы:
Jan 8 00:05:46 xxxx fail2ban.filter : ERROR Unable to open /var/log/syslog/today/auth.log
Jan 8 00:05:46 xxxx fail2ban.filter : ERROR [Errno 2] No such file or directory: '/var/log/syslog/today/auth.log'
Traceback (most recent call last):
File "/usr/share/fail2ban/server/filter.py", line 491, in getFailures
has_content = container.open()
File "/usr/share/fail2ban/server/filter.py", line 569, in open
self.__handler = open(self.__filename)
IOError: [Errno 2] No such file or directory: '/var/log/syslog/today/auth.log'
Это могло быть потому, что журнал auth.log был создан всего пару минут спустя.
Но в любом случае - fail2ban регистрировал эту ошибку несколько раз, а затем ничего не отслеживал (ничего не запрещал)
редактировать Когда вы запускаете fail2ban, он открывает дескрипторы файлов для всех файлов аутентификации, которые он в настоящее время видит. Он не сканирует каталоги на предмет появления новых файлов. Использование символической ссылки не работает, потому что символическая ссылка указывает на старый индексный дескриптор, а не на новый.
Самое простое решение - добавить второй отдельный файл authlog, который используется только fail2ban. Вы можете опорожнять его каждую полночь, чтобы он не стал слишком большим.
Оригинальный ответ Проблема в том, что fail2ban открывает индексный дескриптор / дескриптор файла, принадлежащий этому имени файла, при первом запуске. Он не проверяет наличие изменений после открытия файла, поэтому, когда файл перемещается, его дескриптор перестает работать.
Решение - вообще не перемещать файл. Вместо этого скопируйте его содержимое в новый файл, а затем очистите старый. Вы не сказали, как именно выполняется ротация, но в большинстве пакетов логротации будет возможность копировать, а не перемещать.