我使用的程序使用原始数据包模式生成一些 TCP 连接。假设我执行了以下两个命令:
/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。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
正如预期的那样,我们在 2.2.2.2 上看到了来自 1.1.1.1 的流量:
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 数据。这意味着它没有起作用。
我最终通过使用云提供商的防火墙功能在不同的层面解决了这个问题。