将防火墙规则减少一半 - 为 tcp 和 udp 添加一条 iptables 规则

将防火墙规则减少一半 - 为 tcp 和 udp 添加一条 iptables 规则

我的防火墙上有许多 iptables 规则,如下所示:

iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT

有没有一种快捷方式可以为每个地址设置两个规则 - 一个用于 tcp,一个用于 udp?我的意思是我可以这样做吗:

iptables -A zone_lan_forward -p tcp,udp -d 1.2.3.0/24 -j ACCEPT

答案1

创建一个可以接受任何 TCP 和 UDP 数据包的新链,并从各个 IP/端口允许规则跳转到该链:

iptables -N ACCEPT_TCP_UDP
iptables -A ACCEPT_TCP_UDP -p tcp -j ACCEPT
iptables -A ACCEPT_TCP_UDP -p udp -j ACCEPT

iptables -A zone_lan_forward -d 1.2.3.0/24 -j ACCEPT_TCP_UDP

这会增加几行额外的开销,但会使 TCP / UDP 规则的数量减半。

我会不是省略参数-p,因为您不仅为 ICMP 打开防火墙,还为任何其他协议打开防火墙。摘自 iptables 手册页-p

指定的协议可以是 tcp、udp、icmp 或 all,也可以是数值,表示这些协议之一或其他协议。也可以使用 /etc/protocols 中的协议名称。

您可能没有监听除 TCP、UDP 和 ICMP 之外的任何协议现在,但谁知道未来会怎样。不必要地打开防火墙是一种不好的做法。

免责声明:iptables 命令是我凭空想出来的;目前我没有可以测试它们的设备。

答案2

如果您并不真正关心 ICMP 流量(无论如何您都可以使用规则全局阻止它),那么您可以省略 -p 标志,它将涵盖所有协议。

相关内容