¿Fail2ban supervisa los archivos de registro rotados?

9

¿Fail2ban continúa monitoreando los archivos de registro rotados?

Por ejemplo, tengo una regla de supervisión /var/log/fail2ban.log que el sistema rota automáticamente cada semana (7 días). Quiero tener una regla que monitoree las IP prohibidas en ese registro para encontrar delincuentes reincidentes que hayan sido prohibidos 5 veces en los últimos 10 días. ¿Es eso posible?

J. Chin
fuente

Respuestas:

0

Sí, fail2ban continúa monitoreando los archivos de registro rotados. Desdeserver/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.
Mark Wagner
fuente
2
Ese comentario no tiene nada que ver con si la prohibición recidivante funcionará. No creo (estoy bastante seguro) que fail2banno lea sino el archivo actual. El registro de la rotación detectar permite fail2bansaber que el archivo ha cambiado, no leer el .1, .2.gzarchivos, etc., que también pueden estar en esa carpeta.
Alexis Wilke
6

Se pueden especificar múltiples registros en una de dos formas (o una combinación). Puede usar globos de archivos (comodines) para hacer coincidir los archivos de registro para monitorear (es decir logpath = /var/log/*somefile.log) o una lista de archivos de registro para monitorear, separados por espacios en blanco (espacios, pestañas, líneas nuevas) como

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

o

    logpath = /var/log/auth.log
              /var/log/auth.log.1
Troy Morehouse
fuente
¿Entonces básicamente fail2ban no puede detectar nuevos archivos de registro? Lo configuré para monitorear algo: *. Log donde se crea un nuevo archivo con la nueva fecha (como algo-20200101.log) y fail2ban no lo detectará. ¿Hay alguna alternativa a fail2ban (porque no creo que esto sea aceptable)?
dan
4

La respuesta anterior es incorrecta con respecto a su pregunta. FileContainer solo usa la detección de rotación del registro de archivos para restablecer la lectura del registro al inicio del archivo en lugar del procedimiento estándar de continuar desde el último desplazamiento:

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)

No hay ningún código que busque archivos rotados para analizar también.

Philippe Chaintreuil
fuente
1
Se pueden especificar múltiples registros en una de dos formas (o una combinación). Puede usar globos de archivos (comodines) para logpath = /var/log/*somefile.logunir los archivos de registro para monitorear (es decir ) o una lista de archivos de registro para monitorear, separados por espacios en blanco (espacios, pestañas, líneas nuevas) como logpath = /var/log/auth.log /var/log/auth.log.1.
Troy Morehouse
@Troy, tienes la respuesta, sería bueno que escribas una respuesta real para que podamos darte un +1.
Alexis Wilke
@AlexisWilke, por su sugerencia, he agregado una respuesta
Troy Morehouse