iptablesが長さを削除し、TTL条件が機能しない

iptablesが長さを削除し、TTL条件が機能しない

iptablesLinuxホストでユーティリティを使用してミニファイアウォールを作成する必要があります。パケット長が722より大きく、TTLが22より大きい受信接続をすべて削除する必要があります。正確にANDでなければなりません。両方の条件がTRUEの場合にのみ削除してください。

sudo iptables -N LOGDROP
sudo iptables -A OUTPUT -m ttl --ttl-gt 22 -j LOGDROP
sudo iptables -A INPUT -m ttl --ttl-gt 22 -j LOGDROP
sudo iptables -A LOGDROP -m length --length 722:65535 -j DROP

ホストのIPアドレスは10.6.7.9ファイアウォールの背後にあります。

私はこのホストから別のホストにpingを試みながら4つのテストを実行しました。

ping -s 10000 -t 250 10.6.7.10 //fail (TTL AND LENGHT are wrong)
ping -s 100 -t 200 10.6.7.10 //success (TTL is wrong)
ping -s 10 -t 10 10.6.7.10 //success (Both are right)
ping -s 10000 -t 10 10.6.7.10 // fail, BUT SHOULD BE TRUE.

最後のpingが機能しない理由と回避策は何ですか?

答え1

2 つの条件を同時に満たす必要がある場合は、次の条件を構成する必要があります。

sudo iptables -A OUTPUT -m ttl --ttl-gt 22 -m length --length 722:65535 -j DROP

sudo iptables -A INPUT -m ttl --ttl-gt 22 -m length --length 722:65535 -j DROP

答え2

-tこのオプションは発信パケットに対してのみTTLを設定するため、リモートホストのping応答に大きなTTLがある可能性が非常に高いです。現在、共通の基本TTLは64です。 (おすすめはインターネット幅の2倍だと思います。)

もう1つの可能性は、10000バイトのpingを断片化する必要があるため、リモートホストがそれに対する応答を拒否することです。 800バイトのpingを送ってください。

また、これにより、ルールsudo iptables -L -vが何回ヒットされたかがわかります。これはデバッグに便利です。

別のデバッグオプションは、次の規則を実装することです。

sudo iptables -A LOGDROP -m length --length 722:65535 -j LOG

DROPルールの移行。これにより、パケットを破棄する前に、カーネルログ(読み取りを使用dmesg)にパケットが書き込まれます。これにより、欠落している部分を解決できます。

関連情報