IPtables チェーン番号の永続性 - 最初のルールを一番上に維持するにはどうすればよいですか?

IPtables チェーン番号の永続性 - 最初のルールを一番上に維持するにはどうすればよいですか?

まとめ

IPtables でチェーンの先頭にルールを保持する方法を理解しようとしています。カスタム チェーンを (ルールとして) INPUT チェーンの先頭、つまりチェーンの最初のルールとして保持したいと思います。

設定

  • カスタムチェーン(INPUTチェーンの一番上に保持したい)
  • fail2ban は禁止のステータスに基づいてチェーンを生成(作成および削除)します

現在の動作:

カスタム チェーンを設定するときに、それをルール番号 1 として設定できます。ただし、時間の経過とともに fail2ban が変更されると、カスタム チェーンは INPUT チェーンの下位に移動されてしまいます。

助けてくれてありがとう!すでに回答されている場合は申し訳ありません。残念ながら、提案された質問では見つけることができませんでした。

答え1

Fail2banによるこれ行 (たとえばiptables-multiport) は、チェーンの最初の場所にルールを追加しますINPUT。これは通常、この行に補間されます (例: 単純な sshd jail、IPv4 など)。

# <iptables> -I <chain> -p <protocol> -m multiport --dports <port> -j f2b-<name>
iptables -I INPUT -p tcp -m multiport --dports ssh -j f2b-sshd

したがって、これを行うには 2 つの可能性があります。

  1. 別のチェーン(例F2B)を作成し、INPUTの最初のチェーンの後に追加し、fail2ban configでINPUTの代わりにその名前を指定します。たとえば、新しいチェーンを作成します。ローカルchainすべての fail2ban チェーンを独自のものに上書きします。
[Init]
chain = F2B

jail.localまたは、たとえばデフォルトのセクションまたは jail ごとに、その名前を指定します。

[DEFAULT]
banaction = %(known/banaction)s[chain=F2B]
banaction_allports = %(known/banaction_allports)s[chain=F2B]
  1. チェーンに独自のルール番号 (デフォルトは 1) を指定します。したがって、チェーンを に設定する代わりにF2Bchain = INPUT 2ローカルの共通構成で使用するか、次のようにしますjail.local
[DEFAULT]
banaction = %(known/banaction)s[chain="INPUT 2"]
banaction_allports = %(known/banaction_allports)s[chain="INPUT 2"]

この場合、fail2ban は上記の追加ルール (sshd jail 用) を次のように補間します。

- iptables -I INPUT -p tcp -m multiport --dports ssh -j f2b-sshd
+ iptables -I INPUT 2 -p tcp -m multiport --dports ssh -j f2b-sshd

どちらの場合も、チェーンF2Bと独自のチェーンがすでに iptables に追加されていることを確認してください (変更が行われた後に fail2ban が開始されます)。

関連情報