Монитор fail2ban вращает файлы журнала?

9

Неужели fail2ban продолжает отслеживать вращающиеся файлы журнала?

Например, у меня есть правило мониторинга /var/log/fail2ban.log, которое автоматически поворачивается системой каждую неделю (7 дней). Я хочу иметь правило, которое отслеживает заблокированные IP-адреса в этом журнале, чтобы найти повторных нарушителей, которые были заблокированы 5 раз за последние 10 дней. Это возможно?

Дж. Чин
источник

Ответы:

0

Да, fail2ban продолжает отслеживать повернутые файлы журнала. Отserver/filter.py

439 ##
440 # FileContainer class.
441 #
442 # This class manages a file handler and takes care of log rotation detection.
443 # In order to detect log rotation, the hash (MD5) of the first line of the file
444 # is computed and compared to the previous hash of this line.
Марк Вагнер
источник
3
Этот комментарий не имеет никакого отношения к тому, сработает ли запрет на рецидивы . Я не думаю (я почти уверен), что fail2banне читает, но текущий файл. Журналов.Включает обнаружения позволяет fail2banзнать , что файл изменен, чтобы не читать .1, .2.gzи т.д. файлы , которые также могут находиться в этой папке.
Алексис
6

Можно указать несколько журналов одним из двух способов (или их комбинацию). Вы можете использовать файловые глобусы (подстановочные знаки) для сопоставления файлов журналов для мониторинга (т.е. logpath = /var/log/*somefile.log) или списка файлов журналов для мониторинга, разделенных пробелами (пробелы, табуляции, новые строки), таких как

    logpath = /var/log/auth.log /var/log/auth.log.1

или

    logpath = /var/log/auth.log
              /var/log/auth.log.1
Трой Морхаус
источник
Таким образом, в основном fail2ban не может обнаружить новые файлы журнала? У меня настроено что-то отслеживать - *. Log, где создается новый файл с новой датой (например, что-то - 20200101.log), и fail2ban не обнаруживает его. Есть ли альтернативы fail2ban (потому что я не думаю, что это приемлемо)?
дан
4

Приведенный выше ответ неверен в отношении вашего вопроса. FileContainer использует только обнаружение ротации файлового журнала для сброса чтения журнала обратно в начало файла вместо стандартной процедуры продолжения с последнего смещения:

class FileContainer:
   ...
       def open(self):
                self.__handler = open(self.__filename, 'rb')
                ...
                # Compare hash and inode
                if self.__hash != myHash or self.__ino != stats.st_ino:
                        logSys.info("Log rotation detected for %s" % self.__filename)
                        self.__hash = myHash
                        self.__ino = stats.st_ino
                        self.__pos = 0
                # Sets the file pointer to the last position.
                self.__handler.seek(self.__pos)

Там нет кода, который просматривает повернутые файлы для анализа.

Филипп Шантрёй
источник
1
Можно указать несколько журналов одним из двух способов (или их комбинацию). Вы можете использовать файловые глобусы (подстановочные знаки) для сопоставления файлов журналов для отслеживания (то есть logpath = /var/log/*somefile.log) или списка файлов журналов для отслеживания, разделенных пробелами (пробелы, табуляции, новые строки), таких как logpath = /var/log/auth.log /var/log/auth.log.1.
Трой Морхаус
@ Трой, у тебя есть ответ, было бы хорошо, чтобы ты написал реальный ответ, чтобы мы могли дать тебе +1.
Алексис
@AlexisWilke, по вашему предложению я добавил ответ
Трой Морхауз