通过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
最佳答案
创建一个新的链,它将接受任何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打开防火墙,还要打开任何其他协议.从-p的iptables手册页:

The specified protocol can be one of tcp, udp, icmp, or all, or it can
be a numeric value, representing one of these protocols or a different
one. A protocol name from /etc/protocols is also allowed.

您现在可能没有收听除TCP,UDP和ICMP之外的任何协议,但是谁知道未来可能会持有什么.不必要地打开防火墙是不好的做法.

免责声明:iptables命令不在我的掌控之中;我无法访问用于测试ATM的盒子.

转载注明原文:通过tcp和udp的半个iptables规则减少防火墙规则 - 代码日志