fail2banはローテーションされたログファイルを監視しますか?


9

fail2banは引き続きローテーションされたログファイルを監視しますか?

たとえば、システムが毎週(7日間)自動的にローテーションする/var/log/fail2ban.logを監視するルールがあります。そのログで禁止されたIPを監視して、過去10日間に5回禁止された繰り返しの違反者を見つけるルールを設定したいと思います。それは可能ですか?

回答:


0

はい、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.

2
そのコメントは、禁輸措置が機能するかどうかとは関係ありません。私fail2banはそれを読んでいないと思います(私はかなり確信しています)現在のファイルを読みます。ログのローテーションができます検出fail2ban読まないように、ファイルが変更されたことを知って.1.2.gzまた、そのフォルダにあってもよい、などのファイルを。
Alexis Wilke 2017年

6

2つの方法のいずれか(または組み合わせ)で複数のログを指定できます。ファイルグロブ(ワイルドカード)を使用して、監視するログファイル(つまり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

つまり、基本的にfail2banは新しいログファイルを検出できませんか?something-*。logを監視するように設定しました。ここでは、新しいファイルが新しい日付で作成され(something-20200101.logなど)、fail2banはそれを検出しません。fail2banに代わるものはありますか(これは受け入れられないと思うので)?
ダン

4

上記の答えはあなたの質問に関して正しくありません。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)

ローテーションされたファイルも探して解析するコードはありません。


1
2つの方法のいずれか(または組み合わせ)で複数のログを指定できます。ファイルグロブ(ワイルドカード)を使用して、監視するログファイル(つまりlogpath = /var/log/*somefile.log)や、空白など(スペース、タブ、改行)で区切って監視するログファイルのリストを照合できますlogpath = /var/log/auth.log /var/log/auth.log.1
Troy Morehouse

@トロイ、あなたは答えを持っています。あなたに実際の答えを書いて、+ 1を与えることができればいいと思います。
Alexis Wilke 2017年

@AlexisWilke、あなたの提案に従って、私は答えを追加しました
Troy Morehouse
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.