Answers:
是的,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.
一个可以用以下两种方式之一(或结合使用)指定多个日志。您可以使用文件组(通配符)来匹配要监视的日志文件(即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
关于您的问题,以上答案不正确。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)
那里没有代码去寻找旋转文件也要解析。
logpath = /var/log/*somefile.log
)或要监视的日志文件列表,并用空格(空格,制表符,换行符)隔开,例如logpath = /var/log/auth.log /var/log/auth.log.1
。
fail2ban
不会读取当前文件。日志循环检测可以fail2ban
知道文件的改变,而不是阅读.1
,.2.gz
等文件也可以是文件夹中。