![iptables ルールは生のソケット パケットを制御できますか?](https://rvso.com/image/776299/iptables%20%E3%83%AB%E3%83%BC%E3%83%AB%E3%81%AF%E7%94%9F%E3%81%AE%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88%20%E3%83%91%E3%82%B1%E3%83%83%E3%83%88%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
私が使用しているプログラムは、raw パケット モードを使用していくつかの TCP 接続を生成します。次の 2 つのコマンドを実行したとします。
/sbin/iptables -A INPUT -s 8.0.0.0/8 -j DROP
/sbin/iptables -A OUTPUT -d 8.0.0.0/8 -j DROP
そのネットワークにパケットが送信されないと想定しても安全でしょうか?
答え1
残念ながら、動作しないようです。確認方法は次のとおりです。1.1.1.1 と 2.2.2.2 の 2 つのサーバーを使用します。1.1.1.1 はパケットを送信し、2.2.2.2 はリッスンします。
まず、2.2.2.2 でスニッフィングを設定しましょう。
➜ ~ sudo tcpdump -vv 'src 1.1.1.1'
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
次に、ポート 995 でその IP にパケットを送信します。
$ zmap --whitelist-file=<( echo 2.2.2.2 ) -p 995 -n 1
予想どおり、1.1.1.1 からのトラフィックが 2.2.2.2 に表示されています。
11:18:49.330632 IP (tos 0x0, ttl 250, id 54321, offset 0, flags [none], proto TCP (6), length 40)
1.1.1.1.47495 > 2.2.2.2.pop3s: Flags [S], cksum 0x5e8a (correct), seq 4248475135, win 65535, length 0
11:18:49.331688 IP (tos 0x0, ttl 59, id 0, offset 0, flags [DF], proto TCP (6), length 40)
1.1.1.1.47495 > 2.2.2.2.pop3s: Flags [R], cksum 0x5e87 (correct), seq 4248475136, win 0, length 0
ここで、1.1.1.1 でこれをブロックしてプローブを繰り返してみます。
$ /sbin/iptables -A OUTPUT -d 2.2.2.2 -j DROP
$ zmap --whitelist-file=<( echo 2.2.2.2 ) -p 995 -n 1
残念ながら、さらに tcpdump データが表示されています。これは、機能しなかったことを意味します。
最終的には、クラウド プロバイダーのファイアウォール機能を使用して、別のレイヤーで問題を解決しました。