Linux

iptables NAT 是 Policy Accept 一個安全漏洞嗎?

  • August 21, 2020

我正在強化我的 vps 伺服器,最近我看到所有策略在 Nat Table都是開放的(**接受)。**我在網際網路上搜尋並沒有發現任何關於保護 nat 表的資訊。這是否是一個安全漏洞?這裡的輸出:

Chain PREROUTING (policy ACCEPT 21038 packets, 1097K bytes)
pkts bytes target     prot opt in     out     source               destination                                                 

Chain INPUT (policy ACCEPT 9 packets, 1088 bytes)
pkts bytes target     prot opt in     out     source               destination                                                 

Chain OUTPUT (policy ACCEPT 187 packets, 14396 bytes)
pkts bytes target     prot opt in     out     source               destination                                                 

Chain POSTROUTING (policy ACCEPT 48 packets, 3767 bytes)
pkts bytes target     prot opt in     out     source               destination                                                 
 523  140K MASQUERADE  all  --  *      eth0    0.0.0.0/0            0.0.0.0/0   

感謝我的每一次幫助

親切的問候黑鬍子

不,對nat表使用 ACCEPT 策略是完全可以的。使用 DROP 策略將是異常的。

一個數據包按照這個示意圖遍歷各個表中的各個鏈:

Netfilter 和通用網路中的數據包流

被接受,僅僅意味著數據包在下一輪有另一個被接受或丟棄的機會(即:下一個鍊及其接收這個數據包的規則)。被丟棄會立即產生影響:數據包消失,並且不會針對該數據包處理其他規則。因此,當數據包遍歷各個表中的各個鏈時,有很多地方可以丟棄它。一個 DROP 任何地方都會刪除數據包。額外的 ACCEPT(例如:如果從不使用 NAT,則沒有創建nat表)不會改變這個結果。

由於nat表旨在執行 NAT 而不是過濾流量(為此有一個專用表:filter),因此沒有理由讓 NAT 丟棄流量。它在技術上仍然可行,但無論如何您還必須考慮 NAT 不像其他表那樣處理,因為它實際上是conntrack的一部分:在**iptablesnat表中只能看到每個新流的第一個數據包,以便為流建立 NAT 規則。其他人不會,它們的處理是由遵循 NAT 規則的conntrack直接完成的(包含在相關的conntrack表中,可以通過該conntrack命令進行查詢)。

所以簡而言之,你不應該在nat表中丟棄:你應該接受或返回來創建例外,以遵循實際執行 NAT 的規則(從而保持數據包不變,以便繼續下一輪),或使用各種可用的 NAT 目標(例如:DNAT、REDIRECT、SNAT、MASQUERADE …)為此流建立 NAT 規則(這也將使數據包繼續到下一輪)。將 DROP 預設策略保留為過濾表中的鏈。mangle表也可用於丟棄流量,但通常不會為其鏈配置預設的 DROP 策略。至於我不知道的鮮為人知的安全表,它很少使用,因此很少存在。

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