是否接受 iptables 中所有來源的 RELATED,ESTABLISHED 被認為“太開放”?
我經常看到應用的規則
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
。雖然我不是專家,但那條線與我有關。很明顯,該規則允許所有流量,唯一的例外是必須已建立連接或與已建立的連接相關。設想
22
我將允許從子網中的伺服器 LAN192.168.0.0/16
或其他任何地方連接到預設 SSH 埠。SuperInsecureApp®
在 port 上公開一些東西1337
,我將其添加到我的INPUT
鏈中。- 我添加了
conntrack
接受ESTABLISHED
和RELATED
來自所有來源的規則- 連鎖政策是
DROP
所以基本上該配置應該只允許來自 LAN 的 SSH 連接,同時允許來自世界的埠 1337 上的入站流量。
這就是我的困惑綻放的地方。是否會
conntrack
以任何方式暴露一個安全漏洞,允許人們在 1337 上建立連接(因為它是世界開放的),然後利用該連接來訪問 SSH 埠(或任何其他埠)?
我不會認為 ESTABLISHED 和 RELATED 流量太開放。您可以省略 RELATED,但絕對應該允許 ESTABLISHED。這兩個流量類別都使用 conntrack 狀態。
ESTABLISHED 連接已被另一條規則驗證。這使得實現單向規則變得更加簡單。這僅允許您在同一埠上繼續交易。
RELATED 連接也由另一個規則驗證。它們不適用於很多協議。它們再次使配置規則變得更加簡單。它們還確保它們適用的連接的正確順序。這實際上使您的規則更加安全。雖然這可能使連接到不同的埠成為可能,但該埠應該只是相關程序的一部分,如 FTP 數據連接。允許哪些埠由協議特定的 conntrack 模組控制。
通過允許 ESTABLISHED 和 RELATED 連接,您可以專注於希望防火牆接受哪些新連接。它還避免了旨在允許返回流量但允許新連接的破壞規則。
鑑於您已將埠 1337 上的程序歸類為不安全程序,應使用專用的非 root 使用者 ID 啟動它。如果他們確實設法破解他的應用程序並獲得增強的訪問權限,這將限制某人可能造成的損害。
埠 1337 上的連接不太可能用於遠端訪問埠 22,但是到埠 1337 的連接有可能用於代理到埠 22 的連接。
您可能希望確保 SSH 得到深度保護:
- 除了防火牆限制之外,使用 hosts.allow 來限制訪問。
- 防止 root 訪問,或者至少需要使用密鑰並在 authorized_keys 文件中限制它們的訪問。
- 審核登錄失敗。日誌掃描器可以定期向您發送異常活動的報告。
- 考慮使用類似 fail2ban 的工具在重複訪問失敗時自動阻止訪問。