
私の 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 が閉じていると表示することを忘れていました。