Назад | Перейти на главную страницу

Настроить fail2ban на новый журнал без потери текущих банов?

У меня есть журналы в файлах /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 открывает индексный дескриптор / дескриптор файла, принадлежащий этому имени файла, при первом запуске. Он не проверяет наличие изменений после открытия файла, поэтому, когда файл перемещается, его дескриптор перестает работать.

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