Fail2ban monitora i file di registro ruotati?


9

Fail2ban continua a monitorare i file di registro ruotati?

Ad esempio, ho una regola di monitoraggio /var/log/fail2ban.log che viene automaticamente ruotata dal sistema ogni settimana (7 giorni). Voglio avere una regola che controlli gli IP vietati in quel registro per trovare recidivi che sono stati banditi 5 volte negli ultimi 10 giorni. È possibile?

Risposte:


0

Sì, fail2ban continua a monitorare i file di registro ruotati. A partire dalserver/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
Tale commento non ha nulla a che vedere con il funzionamento del divieto recidivo . Non credo (ne sono abbastanza sicuro) che fail2bannon legge ma il file corrente. Il registro di rotazione rilevare permette fail2bandi sapere che il file è stato modificato, non leggere il .1, .2.gz, ecc file che potrebbero anche essere in quella cartella.
Alexis Wilke,

6

È possibile specificare più registri in due modi (o una combinazione). È possibile utilizzare globs di file (caratteri jolly) per abbinare i file di registro da monitorare (ad es. logpath = /var/log/*somefile.log) O un elenco di file di registro da monitorare, separati da spazi bianchi (spazi, tabulazioni, newline) come

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

o

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

Quindi in pratica fail2ban non è in grado di rilevare nuovi file di registro? L'ho impostato per monitorare qualcosa - *. Registra dove viene creato un nuovo file con la nuova data (come qualcosa-20200101.log) e fail2ban non lo rileverà. Esistono alternative a fail2ban (perché non credo sia accettabile)?
dan

4

La risposta sopra è errata per quanto riguarda la tua domanda. FileContainer utilizza solo il rilevamento della rotazione del registro file per ripristinare la lettura del registro all'inizio del file anziché la procedura standard per continuare dall'ultimo offset:

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)

Non esiste alcun codice che cerchi anche i file ruotati da analizzare.


1
È possibile specificare più registri in due modi (o una combinazione). È possibile utilizzare globs di file (caratteri jolly) per abbinare i file di registro da monitorare (ad esempio logpath = /var/log/*somefile.log) o un elenco di file di registro da monitorare, separati da spazi bianchi (spazi, tabulazioni, newline) come logpath = /var/log/auth.log /var/log/auth.log.1.
Troy Morehouse,

@Troy, hai la risposta, sarebbe bene per te scrivere una risposta reale in modo che possiamo darti un +1.
Alexis Wilke,

@AlexisWilke, per tuo suggerimento ho aggiunto una risposta
Troy Morehouse
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.