Iptables

將防火牆規則減少一半 - 一個 iptables 規則用於 tcp 和 udp

  • October 9, 2014

我的防火牆上有許多 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 打開防火牆,還為任何其他協議打開了防火牆。從 iptables 手冊頁-p

指定的協議可以是 tcp、udp、icmp 或 all 之一,也可以是一個數值,表示這些協議之一或不同的協議。/etc/protocols 中的協議名稱也是允許的。

除了 TCP、UDP 和 ICMP,你現在可能沒有在監聽任何協議,但誰知道未來會發生什麼。不必要地打開防火牆是不好的做法。

免責聲明:iptables 命令不在我的腦海中;我無權使用一個盒子來測試他們的 ATM。

引用自:https://serverfault.com/questions/508700