我最近遇到了一些恶意 TCP 流量,其目标端口为 80,源端口也为 80。这种流量显然是无效的,对于我能想到的任何应用程序来说都是如此,因为源端口应该是随机的,并且位于临时范围内。虽然丢弃源端口低于临时范围或源端口和目标端口为 80 的数据包很容易,但我想更进一步,阻止源端口和目标端口相同的所有流量。
是否可以使用 iptables 丢弃源端口和目标端口相同的所有数据包,而无需创建数千条规则?如果可以,这是一个好主意吗?
答案1
如果不为每个端口创建一条规则,就无法做到这一点。
此外,至少对于端口 53,主 DNS 计算机和辅助 DNS 计算机通过端口 53(源和目标)相互通信。我认为 DHCP 做同样的事情。这是因为此类服务器打开一个端口并使用该套接字发送数据。因此,源具有与目标相同的端口。
请注意,对于大于 1023 的端口来说,这可能不是什么大问题。所以您不会想阻止超过这个数目的端口。
此外,所有这些都应该被自动阻止,因为您的防火墙只打开了您提供的服务的端口,对吗?例如,如果您提供 HTTP 和 HTTPS,您只会打开端口 80 和 443。
iptables -A INPUT -p tcp -m multiport --dports 80,443 -m tcp --syn -j ACCEPT
iptables -A INPUT -j DROP
任何其他组合都将被第二条规则阻止或将输入表策略更改为 DROP,那么您甚至不需要第二条规则:
iptables -P INPUT DROP
警告:这不是一个完整的例子,您需要打开防火墙lo
并尽量减少已建立/相关的连接。
不被阻止地设置防火墙可能很困难。请确保您可以通过 SSH 以外的系统进行访问(即,像许多 ISP 现在提供的那样,通过 HTTP 进行控制台访问),或者再三确保 SSH 始终可用(在向防火墙添加所有其他花哨的东西之前打开端口)。