パケットが特定のポートからのものでない限り、ルールが無視される IPTABLES チェーンを作成しますか?

パケットが特定のポートからのものでない限り、ルールが無視される IPTABLES チェーンを作成しますか?

次のことを確認したいと思います。最初のルールが次のチェーンを作成するとします。

iptables -I INPUT -p tcp -m multiport --dports 25,465 -j name

つまり、パケットがそれらのポートからのものでない限り、チェーン内のさらに指定されたルールはチェックされないということですか?

私は を使用しておりfail2ban、 を使用してポート 25、465 を指定する禁止ルールを含むフィルターを作成しました-m multiport --dports 25,465。しかし、このフィルターによって大量のルールが作成され、プロセスksoftirqdが CPU を大量に使用してネットワークが遅くなることがありました。サーバーの他のポートで大量の I/O が発生したときに、この問題が発生することに気付きました。

各パケットはチェーン内のすべてのルールを確認していたと思います。上記の最初のルールを追加して、ポート 25 と 465 以外のパケットはチェーン内の残りのルールを確認しないようにすることで、これを回避できると期待しています。これが機能しない場合は、他の可能な解決策を教えていただければ幸いです。

答え1

「from」ではなく「to」です。--dportsリスト行き先ポート。あなたが書いたルールは、「パケットがTCPポート25または465でリッスンしているサービスに送信された場合、チェーンで処理するname」という意味です。どのように処理されるかは、そのチェーンの内容によって異なります。最終行動( ACCEPTREJECTDROP) ルールがそのチェーン内にない場合、またはアクションとルールが一致する場合RETURN、その処理は呼び出しチェーン ( INPUT) 内でこのルールに続くルールとともに続行されます。

デフォルトでは、fail2banチェーンと、特定のポート宛てのパケットに対してのみチェーンを呼び出すルールを作成します (...-allportsアクションを使用している場合は除きます。アクションはデフォルトではありません)。そのチェーンに、禁止された IP ごとに DROP ルールを追加します。したがって、たとえば、Web サーバー パケットは、指定された jail 用に作成されたチェーンに処理のために送信されませんsshd。したがって、提案された方法で特定のポートを fail2ban 処理から意図的に「除外」することは生産的ではありません。これはすでにこのように機能しています。

fail2banでルールが多すぎるチェーンを作成しないようにするには、調査してくださいipset関連するアクション。チェーンを作成する代わりにf2b-jailnameIP設定一致する単一のルールは ipset を参照します。禁止された各 IP は、チェーン内に個別のルールを作成するのではなく、ipset に追加されます。ipset は O(1) の複雑さの特性を持ちます。つまり、処理速度は ipset 内のアイテム数に依存せず、最大 65536 個のアイテムを含めることができます。

これを使用するには、簡単に言うと、banaction = iptablesjailbanaction = iptables-ipsetのデフォルトを上書きする必要があります。ディストリビューション提供の設定ファイルを変更しないでください。代わりに、/etc/fail2ban/jail.local上書きを追加するファイルを作成してください。

[postfix]
bantime = 1h
enabled = true
banaction = iptables-ipset

(これにより、提供されたメール フィルターが使用されpostfix、すべてのsmtpdタイプのサービスに反応します。別のメール サーバーを使用する場合は、それに応じて調整してください。)

ファイアウォールの効率を向上させる他の方法は、nftablesフレームワークの代わりにiptables。IPセットの機能を備えています統合された、fail2ban では を使用できますbanaction = nftables。大規模なセットでも効率性の向上はほぼ同じになります。

関連情報