iptables 中是否需要重複規則參數?

iptables 中是否需要重複規則參數?

假設我們需要 iptables 中的一些 ssh 規則。但我們還想為所有規則指定另一個鏈。我們可以使用這樣的東西:

iptables -t filter -N ssh
iptables -t filter -N tcp
iptables -t filter -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j tcp
iptables -t filter -A tcp -p tcp --dport 22 -m conntrack --ctstate NEW -j ssh
iptables -t filter -A ssh -p tcp --dport 22 -m conntrack --ctstate NEW -s 10.10.10.10/32 -m mac --mac-source 10:10:10:10:10:10 -j ACCEPT
iptables -t filter -A ssh -p tcp --dport 22 -m conntrack --ctstate NEW -s 11.11.11.11/32 -m mac --mac-source 11:11:11:11:11:11 -j ACCEPT

我們是否必須在每個規則中指定所有選項,或者可以在較低的鏈中省略嗎?例如,最終的 ssh 規則可能如下所示:

iptables -t filter -A ssh -s 10.10.10.10/32 -m mac --mac-source 10:10:10:10:10:10 -j ACCEPT
iptables -t filter -A ssh -s 11.11.11.11/32 -m mac --mac-source 11:11:11:11:11:11 -j ACCEPT

答案1

如果你想避免這種情況,那麼你需要一個新的鏈:

iptables -N sshgroup1
# or reset with iptables -F sshgroup1 if it already exists
iptables -t filter -A ssh -s 10.10.10.10/32 -m mac \
  --mac-source 10:10:10:10:10:10 -j sshgroup1
iptables -t filter -A sshgroup1 ... -j ACCEPT
iptables -t filter -A sshgroup1 ... -j ACCEPT

答案2

如果您只想允許 LAN 中的兩台主機進行 ssh 連接,那麼您應該將此規則保留在頂部,以使 iptables 運行得更快。

iptables -I INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -s 10.10.10.10/32 -m mac --mac-source 10:10:10:10:10:10 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -s 11.11.11.11/32 -m mac --mac-source 11:11:11:11:11:11 -j ACCEPT

否則,根據您的網路、策略和流量,有很多組合。

經驗法則是:盡量避免重複規​​則,並最小化匹配等級以獲得更快的效能。

相關內容