web-dev-qa-db-ja.com

ローカルのfail2banフィルター定義にルールを*追加*する方法は?

Debianによってパッケージ化されたfail2banを自分の管理下にあるサーバーにインストールしました。以前のfailregexeがいくつかあるので、それらをローカルのフィルター定義ファイルに入れて、それらも考慮されるようにします。したがって、私は例えば/etc/fail2ban/filter.d/sshd.confおよび/etc/fail2ban/filter.d/sshd.local。 これはセットアップが推奨される方法です そしてそれが何であるかについてはうまく機能しているように見えます。

ただし、.localファイルでは、実際には.confファイルからfailregexeのリスト全体を置き換えていますドキュメント それを行う他の方法があることを示していないようです、そしてそれを機能させるために、私は単にディストリビューション提供の.confファイルを.localファイルにコピーして作成しましたいくつかの追加。

リストを単純に修正して、ディストリビューションで維持されるログエントリフィルター正規表現の変更に遅れないようにするアップストリームおよびDebianメンテナの作業の恩恵を受けることができれば本当に素晴らしいでしょう。

私が考えることができる唯一の実際の回避策は、実際に2つのjailを作成することです。1つはディストリビューションが提供する構成を使用し、もう1つは私自身の構成を使用します。これには、独立した刑務所として扱われるという(かなり重要な)欠点があるように思われます(このような設定で期待されることです)。

確かに、メンテナンスの手間を最小限に抑えて、既存のコレクションに自分のfailregexeをいくつか追加したいのは私だけではありません。

サイトローカルまたはホストローカルファイルを使用せずに、failregexおよびignoreregexのリストをfail2banフィルター定義内で修正することは可能ですか?対応するグローバルファイルまたはディストリビューション提供のファイルに変更はありますか?もしそうなら、それをどのように行うのですか?

10
a CVn

/etc/fail2ban/filter.d/sshd.confファイルの一部を見てみましょう。

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

したがって、ここにafter = sshd.localを追加して、そのようなファイルを読み取らせることができると思うかもしれません。その中の設定は、このファイルの設定を上書きします。

そしてそれは機能します。ただし、エントリをfailregexまたはその他のディレクティブに単純に修正することはできません。交換することしかできません。

あなたの気持ちは正しいです。これは間違いなくfail2ban構成ファイル形式の欠点です。開発者に文句を言います。

4
Michael Hampton

同じ要件があり、問題として投稿しました。作者はそれに取り組んでいるようです: https://github.com/fail2ban/fail2ban/issues/867

マージすると、次のように機能するはずです(この例は開発者のSerg Bresterの好意によるものです)。

# filter test.conf:
[Definition]
failregex = failure test 1 (filter.d/test.conf) <Host>

# filter test.local:
[Definition]
failregex = %(known/failregex)s
            failure test 2 (filter.d/test.local) <Host>

正規表現は同じ方法で刑務所に追加できます...

# jail.local
[test3known-interp]
filter=test
enabled = true
failregex = %(known/failregex)s
            failure test 3 (jail.local) <Host>

次の結果の場合:

$ bin/fail2ban-client -d -c config | grep addfail
['set', 'test3known-interp', 'addfailregex', 'failure test 1 (filter.d/test.conf)]
['set', 'test3known-interp', 'addfailregex', 'failure test 2 (filter.d/test.local)]
['set', 'test3known-interp', 'addfailregex', 'failure test 3 (jail.local) <Host>']
2
Raman