将防火墙规则减少一半 - tcp 和 udp 的 iptables 规则

Big*_*uge 15 firewall iptables tcp udp

我的防火墙上有许多 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
Run Code Online (Sandbox Code Playgroud)

对于每个地址,是否有两个规则的快捷方式 - 一个用于 tcp,一个用于 udp?我的意思是我可以做这样的事情:

iptables -A zone_lan_forward -p tcp,udp -d 1.2.3.0/24 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

s.c*_*.tt 23

创建一个将接受任何 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
Run Code Online (Sandbox Code Playgroud)

这会增加一些额外线路的开销,但将 TCP/UDP 规则的数量减半。

不会省略这个-p论点,因为您不仅要为 ICMP 开放防火墙,还要为任何其他协议开放防火墙。从 iptables 手册页-p

指定的协议可以是 tcp、udp、icmp 或 all 之一,也可以是数值,表示这些协议之一或不同的协议。也允许来自 /etc/protocols 的协议名称。

你可能不会在除TCP,UDP和ICMP协议的任何听,现在,但谁知道将来会举行。不必要地打开防火墙是不好的做法。

免责声明:iptables 命令不在我的脑海中;我无权使用用于测试它们的 ATM 的盒子。

  • 但是如果通过目标端口号进行过滤,这种创建新链的方法将失败。谁能建议如何克服上述问题? (4认同)