如果 NAT 後面的連接埠向惡意主機發送資料包,該主機是否可以向任何開放連接埠發送資料包,還是僅向發送資料包的連接埠發送資料包?

如果 NAT 後面的連接埠向惡意主機發送資料包,該主機是否可以向任何開放連接埠發送資料包,還是僅向發送資料包的連接埠發送資料包?

例如,NAT 路由器後面的電腦使用 Skype。 Skype 使用連接埠 4000 向伺服器傳送封包,以與其他 Skype 用戶端建立間接連線。

由於 Skype 已向伺服器發送了資料包第一的,伺服器顯然可以將封包傳送回利用 NAT 的路由器。

我的問題是,考慮到路由器正在使用 NAT,該伺服器是否允許將資料包發送到 NAT 具有的任何開放/轉發端口,或僅發送到端口 4000?

我知道 Skype 伺服器根本沒有惡意,這只是一個例子

答案1

對於其他人發起的傳入流量:惡意主機始終可以將資料傳送到您的路由器的任何連接埠(連接埠掃描)。如果連接埠未轉發,您的路由器可能會決定是否丟棄未經請求的封包或禮貌地回應連線無效。如果連接埠被轉發,它將到達路由器後面的最終主機。

對於您的主機發起的傳出流量:對於必須使用哪個來源連接埠與 Skype 中繼伺服器進行通信,沒有任何規則。此外,在您的最終主機上,Skype 可能使用TCP 4000,但NAT 實際上可能使用另一個連接埠來傳送訊息,例如連接埠A。 A 以外的端口,則適用「對於傳入流量」中所述的情況。如果 Skype 伺服器回應連接埠 A,則 NAT 透過傳送至連接埠 4000 將其路由回您的主機。

澄清一下:NAT(網路位址轉換器)是您的路由器。並且不要將「對於傳入流量」部分與對主機的網路回應混淆。它實際上意味著外部伺服器是第一個與您的主機通訊以建立連接的伺服器。

答案2

簡單的答案是「它只能將資料包(到 NAT 路由器後面的客戶端)發送到發送資料包的連接埠」。但這在很大程度上但並不完全正確。

答案取決於 IPTables 的設定方式、相關連接埠以及使用的模組。簡單的 nat 設備僅允許將流量映射到其來自的相同端口,但並非所有設備都如此簡單。在Linux 和其他作業系統中,您會獲得“狀態防火牆”,通常使用“已建立和相關”端口,以及查看連接狀態的各種模組- 例如,如果發出出站FTP 請求(端口21),路由器可能會如果載入了 FTP 模組,也為資料開啟連接埠 20。 FTP 也可能會開啟其他端口,惡意伺服器可能能夠執行此操作以存取任意高編號連接埠。可以利用的一些常見追蹤模組包括 FTP、SIP、Netbios、PPTP、gre、tftp、h323、irc。有一個錯誤 CVE-2014-8160,在某些條件下使用連線追蹤時,該錯誤可能允許任意繞過防火牆 - 可能是您想到的方式。

惡意伺服器開啟其他連接埠相當困難,但並非不可能。當然,您需要在其他連接埠上進行易受攻擊的偵聽 - 並且(在 Linux 下),您可以透過確保連線追蹤規則位於拒絕這些連接埠上的一般存取的規則之後來減輕這種風險。

相關內容