為什么NAT可以防止外部主機攻擊內部主機與服務器?
下面某些大V不懂能不能不要瞎答呢,每次百度一下答案不是誤導群眾嗎?你連樓主的意思都沒理解清楚,而且連NAT的基本的五元組都答錯了,誤導什么呢?我來回答一下樓主的問題。首先,樓主說的沒錯,NAT防止外部主機攻擊內部主機的最基本原理,就是NAT的不可逆的特性。
首先,我們理解一下什么是NAT,NAT就是訪問網絡服務時,源IP地址和源端口的轉換過程。因此NAT是對IP地址和TCP/UDP端口的轉換
我們訪問網絡上的服務時,標識我們的網絡流量一般有5個關鍵要素,既:源IP、源端口、協議、目的IP、目的端口,這些我們稱之為五元組。也就是我們通過網頁訪問某個網站時,我們實際流量是這樣的
源IP就是我們PC機或者手機獲取的IP,目的IP就是網頁IP,TCP就是使用的網絡協議(你可以理解為一種網絡技術)、源端口,就是我們PC機使用的TCP端口,目的端口就是網頁使用的端口。也就是我們通過網頁的IP+TCP+網頁的端口,就可以標識我們的訪問目標了。
例如,訪問流量中目的IP是今日頭條的IP地址,再加上TCP協議和80端口,就標志著我們正在訪問今日頭條的網頁服務
這里就有一個問題,也就是源IP(就是我們PC、手機獲取的IP)如果要能訪問今日頭條,就必須通過運營商的互聯網訪問,而且互聯網網絡就必須認識我們的源IP地址和目的IP地址,不認識的話,運營商的網絡就認為這個流量是非法的,這就好比如果要撥打電話,我們主叫號碼和被叫號碼必須是運營商移動網絡認識的,不認識就打不通
但是有一種情況需要解決,就是我們PC機或者手機使用私網地址訪問網絡服務。私網地址就是我們網絡不認識的地址,按照上面的原則,私網地址發出的網絡流量在網絡會被丟棄的。但是這時候我們只有一個公網地址,但是卻讓更多的人使用網絡服務,怎么辦呢?那就是做NAT,NAT會把多個私網的源IP和源端口,與公網的源IP和多和源端口做一個映射,那么私網的用戶就可以訪問網絡服務了
所謂映射就是直接在訪問網絡服務流量時,把私網IP和端口替換成公網IP和端口,所有NAT設備都有一個替換過程
例如我們家有3個電腦和2個手機要訪問新浪,我們獲得的公網地址是111.100.2.112,百度的網頁服務地址和端口分別是180.97.33.107,我們的家庭NAT上實際保存了下表中的信息
這些信息叫NAT Session,也就是NAT會話表,我們訪問網絡時,NAT設備里有一堆這種會話表,這是NAT轉換的基本原理,也是NAT更加安全的保證
由于網絡流量的私網IP和端口在NAT設備已經替換成公網IP和端口,那么在運營商網絡只存在NAT轉換后的流量,因此所有的網絡用戶只能看到用戶轉換后的公網IP,也就是用戶的私網IP是隱藏起來的,這是第一個安全的措施
但是這不意味著我們內部的私網服務器就是安全的。NAT設備做了2個事情來保證我們的私網設備安排
特性1:用戶的流量必須和NAT Session中的信息對應,才可能讓流量通過。舉個例子,下面是一個Session,如果NAT做了嚴格五元組檢查,NAT設備中只有匹配Session表的正反兩條流量可以通過。如下圖,分別是192.168.0.100(1234)訪問180.97.33.107(80)的TCP流量和180.97.33.107(80)訪問192.168.0.100(1234)TCP流量可以,其他流量都要丟棄。
NAT設備會檢查網絡流量和NAT Sesion的對應信息,不存在NAT session對應的流量全部丟棄。也就是非法攻擊流量如果匹配不上NAT Session,就會被丟棄
特性2:NAT的不可逆特性。什么叫NAT不可逆?這個又和NAT Session有關。我們剛才說了,必須匹配NAT Session的正反兩條流量才能通過NAT設備。那么NAT Session是怎么建立的?NAT Session必須由私網用戶建立。也就是第一個私網用戶訪問公網的數據才能建立起Session,例如TCP就是由私網訪問公網的第一個TCP SYN包觸發建立NAT Session。
因此不可逆特性就保證了,一般無法從公網(互聯網)主動訪問私網,因為公網主動訪問私網,無法觸發NAT Session的建立,沒有NAT Session的流量都會丟棄。這也就保證了從公網來的攻擊流量無法到達私網PC機,私網PC機會更安全
這就是做了NAT的設備更加安全的原因,當然這種安全也是相對的。比如NAT設備的對應規則可能會寬松一點等等,這樣會給部分攻擊者可乘之機。但是不可逆和NAT Session規則的匹配特性,的確可以讓我們的主機更安全一些