iptables が正確な IP アドレスの UDP ポートをドロップしない

iptables が正確な IP アドレスの UDP ポートをドロップしない

私の iptables ルールは次のとおりです。

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
-A INPUT -d (my public facing ip)/32 -p udp -m udp --dport 10000 -j DROP
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b -j RETURN

他のすべてのテーブルでも、すべてのチェーンが ACCEPT になっています。1.1.1.1
は TCP ポート 80 と 443 にアクセスできないのに、パブリック IP のポート 10000 には誰でもアクセスできるのはなぜですか?

答え1

-A INPUT -p tcp -m multiport --dports 80,443 -j f2b

という名前のチェーンに行くと、翻訳

-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable

チェーンの最初のルールは翻訳拒否する 1.1.1.1/32

8.8.8.8 に関しては、トラフィックを確認できません。おそらく、UDP ではなく TCP を使用しているのでしょう。8.8.8.8 は宛先なので、送信元が 8.8.8.8 で宛先が他のものであれば、ルールに一致しません。

これを試して:

-I FORWARD 1 -d 8.8.8.8/32 -p udp -m udp --dport 10000 -j DROP

答え2

トラフィックをブロックしたい場合はから8.8.8.8 がポートにアクセスできないようにするには、-s(送信元アドレス) を使用し、-d(宛先アドレス) は使用しません。

答え3

DROP を REJECT に置き換えることで問題を解決しました。なぜこれが機能するのかはわかりませんが、結果は次のとおりです。

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
-A INPUT -d (my public facing ip)/32 -p udp -m udp --dport 10000 -j REJECT --reject-with icmp-port-unreachable
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b -j RETURN

編集: DROP は完全に正常に機能することがわかりました。ポートが開いているかどうかを確認するために nmap を使用しましたが、拒否された場合にのみ nmap が閉じていると表示することを忘れていました。

関連情報