Apakah fail2ban memantau file log yang diputar?

9

Apakah fail2ban terus memantau file log yang diputar?

Sebagai contoh, saya memiliki aturan monitoring /var/log/fail2ban.log yang secara otomatis diputar oleh sistem setiap minggu (7 hari). Saya ingin memiliki aturan yang memantau IP yang diblokir di log itu untuk menemukan pelanggar berulang yang telah dilarang 5 kali dalam 10 hari terakhir. Apakah itu mungkin?

J. Chin
sumber

Jawaban:

0

Ya, fail2ban terus memantau file log yang diputar. Dariserver/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
sumber
2
Komentar yang tidak ada hubungannya dengan apakah recidive larangan akan bekerja. Saya tidak berpikir (saya cukup yakin) itu fail2bantidak membaca tetapi file saat ini. Log Rotasi mendeteksi memungkinkan fail2banuntuk mengetahui bahwa file tersebut berubah, tidak untuk membaca .1, .2.gzfile, dll yang mungkin juga berada dalam folder itu.
Alexis Wilke
6

Satu dapat menentukan beberapa log dalam satu dari dua cara (atau kombinasi). Anda dapat menggunakan file gumpalan (wildcard) untuk mencocokkan file log untuk dipantau (yaitu logpath = /var/log/*somefile.log) atau daftar file log untuk dipantau, dipisahkan oleh spasi putih (spasi, tab, baris baru) seperti

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

atau

    logpath = /var/log/auth.log
              /var/log/auth.log.1
Troy Morehouse
sumber
Jadi pada dasarnya fail2ban tidak dapat mendeteksi file log baru? Saya sudah mengaturnya untuk memonitor sesuatu - *. Log di mana file baru akan dibuat dengan tanggal baru (seperti sesuatu-20200101.log) dan fail2ban tidak akan mendeteksinya. Apakah ada alternatif untuk fail2ban (karena saya pikir ini tidak dapat diterima)?
dan
4

Jawaban di atas tidak benar sehubungan dengan pertanyaan Anda. FileContainer hanya menggunakan deteksi rotasi log file untuk mengatur ulang pembacaan log kembali ke awal file alih-alih prosedur standar melanjutkan dari offset terakhir:

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)

Tidak ada kode di sana yang pergi mencari file yang diputar juga mem-parsing.

Philippe Chaintreuil
sumber
1
Satu dapat menentukan beberapa log dalam satu dari dua cara (atau kombinasi). Anda dapat menggunakan gumpalan file (wildcard) untuk mencocokkan file log untuk dipantau (yaitu logpath = /var/log/*somefile.log) atau daftar file log untuk dipantau, dipisahkan oleh spasi putih (spasi, tab, baris baru) seperti logpath = /var/log/auth.log /var/log/auth.log.1.
Troy Morehouse
@Troy, Anda sudah mendapatkan jawabannya, akan baik bagi Anda untuk menulis jawaban yang sebenarnya sehingga kami dapat memberi Anda +1.
Alexis Wilke
@AlexisWilke, sesuai saran Anda, Saya telah menambahkan jawaban
Troy Morehouse