上一講聊到了完全錐形 NAT,服務相容性很高,但是會有安全性的隱患,我們這講就來聊聊安全一些的 NAT 類型。
我們知道在完全錐形 NAT 類型 Router 之內的設備,只要 IP Address + Port 的映射產生出來,就能被任何人所取用。
為了要防範不知名的攻擊,可以加上一些限制,像是只允許目標 IP Address 回傳的訊息,其他人的一律不收,這就是受限錐形(Restricted Cone)NAT。
*受限錐形 NAT
例如我們 Client 的服務請求是送給 5.6.7.8 這台 Server 的,就只允許這台 Server 的回傳訊息。如果有另外一台 8.7.6.5 的 Server 也得到這組 1.2.3.4:9200 的來源 External IP 位置組合,想要往這裡傳送訊息,Router 就會阻檔下來。
如果想要再次提高安全性,可以考慮將限制條件再提高。
我們可以使用埠受限錐形(Port Restricted Cone)NAT 來增加安全性,連帶的也可以減少不必要的流量。
*埠受限錐形 NAT
在這種類型的 NAT 中,除了限定只允許我們送出請求的目標 Server 能回傳訊息外,還多加了連接埠(Port)的限制。也就是說就算在同一個 Server 內,不同的服務(通常就會使用不同的 Port)也沒辦法將訊息送回給 Client。
越少的服務可以取用 Client 映射出來的位置,安全性也就越高了一些,然而服務相容性勢必就會降低。
我們最後來看安全性最高,但服務相容性最低的一種 NAT 類型。
對稱(Symmetric)NAT,其名取自於來源位置到目標的對稱性,也就是一對一的映射。由於不像錐形是一對多的,而是每一組請求的來源目標的映射都是獨立的,所以相對錐形 NAT 又更加安全,也更不相容一些如 P2P 的服務。
但你可能會想問說,對稱 NAT 和埠受限錐形 NAT 有什麼區別,看起來不都是獨立的一對一映射,只有一組目標的 IP Address + Port 的組合才能回傳資料給 Client 嗎?
我們來看看埠受限錐形 NAT 中,其實是有一對多的情況。
*埠受限錐形 NAT 中,相同來源對應多組目標
當 Client 的服務都是由 192.168.1.2:5566 送出請求的,不論是向 5.6.7.8:7788 或是 8.7.6.5:5566 哪一個 Server 的服務送出請求,來源位置都會是 1.2.3.4:9200,兩個 Server 只要曾經被發送過請求,也都能回傳訊息給 Client。
但在對稱 NAT 中就有點不一樣了。就算 Client 的服務是同一個,只要目標 Server 的位置不同(不論是單純 IP Address 不同,或是相同 IP Address 不同的 Port),都會產生一筆新的映射。
*對稱 NAT
也就是說,同樣從 192.168.1.2:5566 發出的請求,送到兩個不一樣的目標後,External 的 IP 位置組合會是不同的,例如不同 Port 9200 及 9201。
這種較嚴格的 NAT 類型,通常在企業級的 Router 裡面,比較重安全性的環境會使用,但如此一來也會有較低的服務相容性,導致許多服務需要更多的技術來穿越 NAT 這道牆,僅靠 Port Forwarding 是無法解決的。
至於是怎麼樣的技術,我們下一講接著聊。