fail2ban是否监视轮换的日志文件?


9

fail2ban是否继续监视轮换的日志文件?

例如,我有一个监视/var/log/fail2ban.log的规则,该规则由系统每周(7天)自动轮换一次。我想要一个规则来监视该日志中的被禁IP,以查找在过去10天中被禁止5次的重复违规者。那可能吗?

Answers:


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无法检测到新的日志文件?我将其设置为监视something-*。log,其中使用新日期创建新文件(例如something-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
Troy Morehouse

@Troy,您已经找到答案,这对您写一个实际的答案很有帮助,因此我们可以给您+1。
亚历克西斯·威尔克

@AlexisWilke,根据您的建议,我已经添加了一个答案
Troy Morehouse
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.