1

アプリケーション層でワーム フィルタリング ユーティリティを作成しようとしています。

特定の部分文字列を含む tcp パケットをドロップするルールに従ってセットアップしました。

iptables -A INPUT -p tcp -m string --string "test" -j DROP --algo kmp

ただし、一致する文字列を持つパケットが見つかると、一致しない文字列があっても、iptable からルールをフラッシュするまで、後続のすべてのパケットが破棄されます。

なぜこれが起こっているのか、それに対する解決策は何かを知りたいです。

ありがとう

4

2 に答える 2

3

tcp は、送信されるデータのシーケンスを維持する接続指向の信頼できるプロトコルです。そこに到達するまで特定のペイロードを変更しようとし続けるため、古いペイロードに到達するまで他の後続のペイロードを送信できません。これが、後続のすべてのパケットがドロップされていると感じる理由です。

udp に同様のルールを設定すると、これは発生せず、文字列に一致しない後続のすべてのパケットを受信できます。これは、udp がコネクションレスで信頼性の低いプロトコルであるためです。

于 2009-05-06T10:21:03.820 に答える
1

ここで少し遅れましたが、同様の問題を抱えている人々に会っています。これを回避する 1 つの方法は、RAW チェーン内でこのルールを実行することです。あらゆる種類の conntrack がパケットに配置される前に、すべてのパケットがここにヒットするため、ここでフィルタリングを行うのが最善です。

iptables -A PREROUTING -t raw -p tcp -m string --string "test" -j DROP --algo kmp
于 2016-09-22T04:38:54.937 に答える