O fail2ban monitora os arquivos de log girados?


9

Fail2ban continua a monitorar arquivos de log rotacionados?

Por exemplo, eu tenho uma regra que monitora /var/log/fail2ban.log que é rotacionada automaticamente pelo sistema toda semana (7 dias). Quero ter uma regra que monitore IPs proibidos nesse log para encontrar reincidentes que foram banidos 5 vezes nos últimos 10 dias. Isso é possível?

Respostas:


0

Sim, o fail2ban continua a monitorar os arquivos de log rotacionados. Deserver/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.

2
Esse comentário não tem nada a ver com o fato de a proibição recidiva funcionar. Eu não acho (tenho certeza) que fail2bannão lê, mas o arquivo atual. O registo de rotação detectar permite fail2bansaber que o arquivo mudou, não ler o .1, .2.gz, etc arquivos que podem também estar nessa pasta.
Alexis Wilke # 03:

6

Pode-se especificar vários logs de uma de duas maneiras (ou uma combinação). Você pode usar globs de arquivo (curingas) para corresponder aos arquivos de log a serem monitorados (ie logpath = /var/log/*somefile.log) ou a uma lista de arquivos de log a serem monitorados, separados por espaços em branco (espaços, guias, novas linhas), como

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

ou

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

Então basicamente o fail2ban não consegue detectar novos arquivos de log? Eu configurei para monitorar algo - *. Log onde um novo arquivo é criado com a nova data (como algo-20200101.log) e o fail2ban não o detecta. Existem alternativas ao fail2ban (porque não acho que isso seja aceitável)?
dan

4

A resposta acima está incorreta em relação à sua pergunta. O FileContainer usa apenas a detecção de rotação do log de arquivo para redefinir a leitura do log no início do arquivo, em vez do procedimento padrão de continuar do último deslocamento:

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)

Não existe um código que procure arquivos rotacionados para analisar também.


1
Pode-se especificar vários logs de uma de duas maneiras (ou uma combinação). Você pode usar globs de arquivo (curingas) para corresponder aos arquivos de log a serem monitorados (ie logpath = /var/log/*somefile.log) ou a uma lista de arquivos de log a serem monitorados, separados por espaços em branco (espaços, guias, novas linhas), como logpath = /var/log/auth.log /var/log/auth.log.1.
Troy Morehouse

@ Tróia, você tem a resposta, seria bom escrever uma resposta real para que possamos lhe dar um +1.
Alexis Wilke # 03:

@AlexisWilke, por sua sugestão, eu adicionei uma resposta
Troy Morehouse
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.