設想:我iptables
為 DPI 引擎監視 Netfilter 佇列的主機編寫了規則:防火牆規則根據流量是否來自ipset
我的某個主機,將傳入該主機的流量排入不同的 Netfilter 佇列。
在FORWARD
鏈中,所有連接都以不同的方式排隊NFQUEUES
:DPI 引擎在用戶空間佇列中監視 iptables 發送的資料包,如果觀察到禁止的連接,則會用特殊值標記該資料包; DPI 引擎將禁止的資料包重新插入堆疊中;在POSTROUTING
鏈中,我檢查連接是否標記有該特殊值,如果是,請檢查DROP
它們。
一切都工作正常,但是......
問題:DPI 引擎很好,但並不完美:有時,
- 應被識別為禁止的流量並未被識別為禁止,因此未被阻止;
- 禁止的流量被阻止,但不會立即被阻止,同時禁止的連接可能會打開另一個
RELATED
未標記為禁止的連接( ,根據 conntrack 機器),但我也想阻止相關的連接。
第二種情況是我想要採取行動的情況:作為情況 2 的範例,假設 DPI 引擎想要阻止 YouTube,但他無法快速做到這一點;它允許 YouTube 連線打開另一個從 DPI 引擎標記為 SSL 的連線; DPI 引擎最終封鎖了 YouTube,但 SSL 連線卻很狂野,可以隨意使用;我無法告訴 DPI 引擎阻止 SSL 連接,無論哪些連接打開了它們。
注意事項: 如中所解釋的設想,鏈中傳入的資料包POSTROUTING
可能會標記為 0(這是預設值,因此 DPI 引擎不採取任何操作)或該特殊值(DPI 引擎看到禁止的連接並對其進行標記):一個簡單的
iptables -t mangle -A POSTROUTING -m mark --mark DROPVALUE -j DROP
幾乎總是足夠的,但是在問題我在部分中寫道,連接與禁止的連接相關,但 DPI 引擎並未將其視為連接,因為即使它們是由禁止的連接創建的,其協議也不會被列入黑名單,因此它們不會被視為禁止的。這是正確的,因為我無法將其列入SSL
黑名單HTTPS
。
我需要阻止RELATED
與禁止連接的連接:RELATED
並且ESTABLISHED
(如果我理解得很好)不引用特定連接,但我需要引用禁止連接。
問題:是否可以刪除RELATED
要刪除(或已刪除)的連接的連接iptables
?或是conntrack
需要一些技巧嗎?
預先感謝您的任何建議。
答案1
你誤會了RELATED
。這並不用於單一位址可能建立的每個連接。它僅用於實際相關的數據,例如與 FTP 控制連接關聯的 FTP 資料流,或與開啟的連接關聯的 ICMP 錯誤訊息。真正匹配的此類連接很少RELATED
。