如何编写IPTables策略来影响组中的多个范围?

我试图阻止所有端口上的整个互联网,但允许多个范围连接到特定的端口。 我希望这个规则集也适用于出站连接(使用REJECT而不是DROP )来防止识别攻击。

 *filter # Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0 -A INPUT -i lo -j ACCEPT -A INPUT -d 127.0.0.0/8 -j REJECT # Accept all established inbound connections -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allow all network traffic -A INPUT -s 192.168.0.0/24 -j ACCEPT -A INPUT -d 192.168.0.0/24 -j ACCEPT # Allow all SSH -A INPUT -p tcp --dport 22 -j ACCEPT # Permitted web connections -A INPUT -s 8.4.0.0/24 -p tcp --dport http -j ACCEPT -A INPUT -s 8.8.0.0/24 -p tcp --dport http -j ACCEPT -A INPUT -s 8.4.0.0/24 -p tcp --dport https -j ACCEPT -A INPUT -s 8.8.0.0/24 -p tcp --dport https -j ACCEPT -A OUTPUT -s 8.4.0.0/24 -p tcp --dport http -j ACCEPT -A OUTPUT -s 8.8.0.0/24 -p tcp --dport http -j ACCEPT -A OUTPUT -s 8.4.0.0/24 -p tcp --dport https -j ACCEPT -A OUTPUT -s 8.8.0.0/24 -p tcp --dport https -j ACCEPT # Reject all web not to or from a safe server -A INPUT -p tcp --dport http -j DROP -A INPUT -p tcp --dport https -j DROP -A OUTPUT -p tcp --dport http -j REJECT -A OUTPUT -p tcp --dport https -j REJECT # Drop all other inbound - default deny unless explicitly allowed -A INPUT -j DROP -A FORWARD -j DROP COMMIT 

我非常严格的政策的缺点是添加额外范围的冗长。 每个范围需要四行政策工作。 入站/ HTTP,入站/ HTTPS,出站/ HTTP,出站/ HTTP。 保持直线是一个巨大的痛苦。

我想要这样的东西:

 # Pseucode *group webservers 8.8.0.0/24 8.4.0.0/24 *filter -A INPUT -s webservers -p tcp --dport http -j ACCEPT -A INPUT -s webservers -p tcp --dport http -j ACCEPT -A OUTPUT -s webservers -p tcp --dport http -j ACCEPT -A OUTPUT -s webservers -p tcp --dport http -j ACCEPT 

有没有简单的方法来完成这个?

你可能想尝试使用ipsets

如果你想

  • 存储多个IP地址或端口号,并通过iptables一次性匹配收集;
  • 根据IP地址或端口dynamic更新iptables规则,而不会影响性能;
  • 用一个iptables规则表示复杂的IP地址和基于端口的规则集,并受益于IP集的速度

那么ipset可能是适合你的工具。

值得注意的是:

IP集是Linux内核中的一个框架,可以通过ipset实用程序进行pipe理

是的,该网站看起来自1996年以来一直没有更新。出于某种原因,计算机安全新闻来源和低级别软件/固件项目网页看起来很像。

您也可以尝试将特定范围内的所有stream量发送到自定义链,然后每个与端口相关的接受成为一个单行:

 iptables -N CUSTOM iptables -I INPUT 1 -s 8.4.0.0/24 -j CUSTOM iptables -I INPUT 2 -s 8.8.0.0/24 -j CUSTOM etc. iptables -A CUSTOM - p tcp --dport 80 -j ACCEPT iptables -A CUSTOM - p tcp --dport 443 -j ACCEPT etc. 

发送到CUSTOM链的来源范围的数据包与ACCEPT不匹配的数据包将返回到INPUT链,以处理(即DROP ping)所有剩余的不需要的stream量。