1. 程式人生 > >教程篇(6.0) 03. 網路地址轉換 (NAT) ❀ 飛塔 (Fortinet) 網路安全專家 NSE4

教程篇(6.0) 03. 網路地址轉換 (NAT) ❀ 飛塔 (Fortinet) 網路安全專家 NSE4

在本課中,你將學習如何配置網路地址轉換(NAT),並使用它為通過FortiGate的流量實現源NAT和目標NAT。

  在本次課程中,你將會探索以下主題:

  • NAT介紹
  • 防火牆NAT策略
  • 中央NAT
  • Session helpers
  • 會話
  • 最佳實踐和故障排查

在完成這一節之後,你應該能夠:

  • 理解NAT和埠地址轉換(PAT)
  • 瞭解NAT可用的不同配置模式

  通過了解NAT和PAT的工作方式以及可用的NAT配置模式,你將有一個良好的開端來規劃NAT在你的網路中的實現。

 NAT是使單個裝置(如防火牆或路由器)能夠充當Internet或公共網路與本地或私有網路之間的代理的過程。

  NAT通常被實施為一個或一個組合,原因如下:

  • 改進的安全性:NAT裝置背後的地址實際上是隱藏的。
  • 地址放大:數以百計的計算機可以使用很少的一個公共IP地址。
  • 內部地址穩定性:即使因特網服務提供商(ISP)發生變化,地址也可以保持不變。

  NAT和PAT,也稱為NAPT,將內部(通常是私有的)IP地址轉換為外部(通常是公共的或因特網的)IP地址。在FortiOS,NAT和流量轉發適用於相同的防火牆策略。然而,診斷清楚地顯示NAT和轉發作為單獨的行動。

  • 對於傳出連線:可以使用中央源NAT、IP池和中央源NAT表中的NAT選項,稱為源NAT。
  • 對於傳入連線:可以使用Virtual IP(VIP)和目的NAT,並且被稱為目的NAT。

  NAT64和NAT46是用於指允許IPv6定址的主機與IPv4定址的主機通訊的機制,反之亦然。沒有這種機制,網路上的IPv6節點,例如公司LAN,將不能與僅處於IPv4環境中的網站通訊,並且IPv4環境將不能連線到IPv6網路。

  NAT66是兩個IPv6網路之間的NAT。

 當使用防火牆策略NAT模式時,必須為每個防火牆策略配置源NAT和目的NAT。

  中央NAT配置按虛擬域進行,這意味著源NAT和目的NAT配置自動應用於多個防火牆策略。這是根據你指定的源NAT和目的NAT規則,而不是防火牆策略NAT中的每個防火牆策略。作為最佳範例,當使用中央NAT時,應該配置特定的源NAT和目的NAT規則,以便它們僅匹配配置中期望的防火牆策略。

  防火牆策略NAT和中央NAT都產生相同的結果;然而,一些部署場景最適合於防火牆策略NAT,而一些最適合於中央NAT。

  防火牆策略NAT建議用於包含相對較少的NAT IP地址的部署,並且每個NAT IP地址將具有單獨的策略和安全配置檔案。對於多個NAT IP地址具有相同的策略和安全配置檔案的更復雜的場景,或者在下一代防火牆(NGFW)策略模式下,建議使用中央NAT,其中在第一個分組中可能無法確定適當的策略。

 送分題。

你已經介紹了NAT。接下來,你將瞭解防火牆策略NAT。

 在完成這一節之後,你應該能夠:

  • 配置防火牆策略以執行源NAT和目的NAT(VIP)
  • 用IP池應用源NAT
  • 用VIP或虛擬伺服器配置目的NAT

  通過展示這些領域的能力,你將能夠配置防火牆策略並應用適當的源NAT和目的NAT,並且理解如何將其應用於通過FortiGate的流量。

配置防火牆策略源NAT的方法有兩種:

  • 使用出介面地址
  • 使用動態IP地址池

 在防火牆策略上啟用NAT時,源NAT選項使用出口介面地址。這是多對一的NAT。換句話說,使用PAT,使用原始源地址和源埠組合以及分配的源埠跟蹤連線。這是與overload IP池型別相同的行為,稍後你將瞭解。

  可選項,你可以選擇一個固定埠,在這種情況下,源埠轉換被禁用。對於固定埠,如果兩個或多個連線對於單個IP地址需要相同的源埠,則只能建立一個連線。

  在上圖所示的示例中,建立了從內部到wan1(IP地址203.0.113.10)的防火牆策略,並且使用者從源10.10.10.10:1025發起針對192.168.10.10:80的流量。因為防火牆策略啟用了NAT,所以源IP地址通過埠轉換被轉換為出口介面IP。

IP池是一種機制,它允許離開FortiGate防火牆的會話使用NAT。IP池定義單個IP地址或一系列IP地址,以便在會話期間用作源地址。這些指定的地址將被用來代替分配給FortiGate介面的IP地址。

  IP池通常配置在與介面IP地址相同的範圍內。

  當配置將用於NAT的IP池時,存在一個必須考慮的限制。如果IP池中的IP地址與分配給介面的IP地址不同,如果路由配置不當,基於這些IP地址的通訊可能會失敗。例如,如果分配給介面的IP地址是172.16.100.1/24,則不能為IP池選擇10.10.10.1至10.10.10.50,除非配置了適當的路由。

  有四種類型的IP池可以配置在FortiGate防火牆上:

  • Overload
  • 一對一
  • 固定埠範圍
  • 埠塊分配

 如果使用IP池,則源地址被轉換為來自該池的地址,而不是出口介面地址。池中地址的數量越大,可以支援的連線的數量就越多。例如,在需要更多連線的企業網路中,或者在希望一個子網使用特定公共IP而不是另一個子網來基於源IP地址限制訪問的網路中。

  預設IP池型別是Overload。在過載IP池型別中,使用多對一或多到少的關係和埠轉換。

  在這個例子中,源IP 10.10.10.10將從IP池轉換為IP地址(203.0.113.2-203.0.113.5)。

 在一對一池型別中,內部IP地址以先到先得的方式對映到外部地址。

  有一個內部地址到外部地址的單一對映。對映不是固定的,如果沒有可用的地址,連線將被拒絕。

  此外,在一對一中,PAT是不需要的。在上面示例中,可以看到入口和出口地址都顯示相同的源埠。

固定埠範圍IP池型別關聯內部IP地址範圍和外部IP地址範圍,並禁用PAT。它允許內部啟動IP或內部端IP範圍到外部啟動IP或外部端IP範圍的固定對映。

  上圖示例顯示了固定埠範圍IP池。內部地址範圍為10.0.1.10至10.0.1.11,對映到外部地址範圍為10.200.1.7至10.200.1.8。

上圖顯示的兩個CLI輸出說明了埠塊分配IP池型別和預設Overload IP池型別之間的行為差異。

  使用hping,非法客戶端每秒產生許多SYN資料包。在第一個示例中,埠塊分配型別將客戶端限制為該IP池的64個連線。其他使用者不會受到非法客戶端的影響。

  在第二個示例中,Overload型別不施加限制,並且非法客戶端在會話表中使用更多的連線。其他使用者將受到影響。

VIP是目的NAT物件。對於與VIP匹配的會話,目標地址被轉換:通常公網地址被轉換為伺服器的私有網路地址。在防火牆策略的目標欄位中選擇VIP。

  預設的VIP型別是靜態NAT。這是一個一對一的對映,它適用於傳入和傳出連線;也就是說,啟用NAT的傳出策略將使用VIP地址而不是出口介面地址。但是,可以使用IP池重寫此行為。

  靜態NAT VIP僅限於轉發某些埠。例如,埠8080上的外部IP的連線對映到埠80上的內部IP。

  在CLI上,可以選擇NAT型別作為負載平衡和伺服器負載平衡。簡單的負載平衡將連線從外部IP地址分配到多個內部地址。伺服器負載平衡基於該機制,使用虛擬伺服器和真實伺服器,並提供會話永續性和伺服器可用性檢查機制。

  VIP應該是面向外部(入口)介面的可路由的。FortiOS響應ARP對VIP和IP池物件的請求。ARP響應是可配置的。

 在這個例子中,源IP地址192.168.10.10試圖通過埠TCP 80訪問目的IP地址203.0.113.22。

  與VIP 203.0.113.22的連線與內部主機10.10.10.10無關。

  因為這是靜態NAT,所以10.10.10.10的所有NAT輸出連線將使用資料包的目的地欄位中的VIP地址,而不是出口介面的地址。

在FortiOS,VIP和防火牆地址物件是完全不同的,它們是分開儲存的,沒有重疊。預設情況下,防火牆地址物件與VIP不匹配。在本示例中,作為第一策略中的目的地的所有地址物件不包括任何VIP,因此傳送到Web_server VIP的流量將跳過第一策略並匹配第二Allow_access。為了讓第一個策略與VIP匹配,你需要在 CLI上編輯策略並set match-vip enable,這允許地址物件與VIP地址匹配,或者將第一個策略的目的地址更改為所討論的VIP,允許流量下降到下一個策略;但是,當你使用VIP防火牆策略時,可能會有一些例外。

  當VIP被配置時,對於傳入(廣域網到LAN)連線,它將首先與VIP表匹配。

  在本示例中,從WAN到LAN的防火牆策略配置有特定的源,並且動作是Deny。第二防火牆策略允許訪問VIP(目的地址)。儘管拒絕防火牆策略位於列表的頂部,但是第二防火牆策略仍然允許被拒絕的源訪問VIP。

  為了阻止來自拒絕源的流量,必須在拒絕防火牆策略中啟用match-vip,該策略跳過VIP ID檢查。或者,你可以將目標地址配置為拒絕策略中的VIP,而不是all。

 送分題。

現在您瞭解防火牆策略NAT。接下來,你將學習中央NAT。

在完成本節之後,你應該知道如何配置中心NAT。

  通過展示配置中央NAT來執行源NAT和目的NAT的能力,你將能夠在更細粒度的級別上使用NAT來控制IP地址、協議和埠轉換。

預設情況下,中央NAT被禁用,只能在CLI上啟用。在啟用了中央NAT之後,可以在GUI上配置這兩個選項:

  • Central SNAT
  • DNAT & Virtual IPs

  如果嘗試啟用中央NAT會發生什麼,但防火牆策略中仍然有IP池或VIP配置嗎?

  CLI將不允許這樣做,並且將提供一個引用VIP或IP池的防火牆策略ID的訊息。你必須從現有防火牆策略中移除VIP或IP池引用,以便啟用中央NAT。

  中央源NAT是強制性的新的NGFW模式在策略為基礎的。這就意味著源NAT僅僅依據在Policy & Objects > Central 源NAT下的NAT設定來執行。

 你可以基於中央源NAT策略中的源介面和目標介面,對通過防火牆策略的流量進行更細粒度的控制。現在可以在中央源NAT策略中定義匹配標準,基於:

  • 源介面
  • 目的介面
  • 源地址
  • 目的地址
  • 協議
  • 源埠號

  從FortiOS v6.0開始,所有防火牆策略都需要一個匹配的中央源NAT策略。如果沒有匹配的源NAT策略,流量將被丟棄。

  如果中央源NAT策略標準與基於多個防火牆策略的流量匹配,則中央源NAT策略將應用於這些防火牆策略。

  類似於防火牆策略,中央源NAT策略從上到下進行處理,如果找到匹配,則根據中央源NAT策略轉換源地址和源埠。

在本示例中,中央源NAT策略將源IP地址轉換為定義的IP池地址(203.0.113.5)。然而,只有當流量與中央源NAT策略中定義的所有變數相匹配時,才進行轉換,也就是說,通過FortiGate內部的源介面從源IP地址到目的地IP地址(192.168.10.10)的流量必須通過目的地間傳送到目的地IP地址(192.168.10.10)。 面對WAN1,協議必須是TCP。為了便於說明,目的地僅使用一個IP地址,並且IP池型別被設定為使用單個IP地址複用。

  防火牆策略是從內部建立到Wan1的。在FortiOS v6.0防火牆策略中沒有可用的NAT選項,並且必須匹配源NAT策略才能傳遞流量。如果沒有匹配的中央源NAT策略,流量將被丟棄。

  如果使用者嘗試到目的地IP地址192.168.10.10的任何基於TCP的會話(例如http、https),則源IP地址將被轉換為IP池地址或在中央NAT策略中定義的地址。

  如果使用者試圖傳送任何基於ICMP或UDP的流量到192.168.10.10,源地址是否被翻譯成在中央NAT策略中定義的IP池呢?

  由於中央源NAT策略不匹配,FortiGate會自動刪除流量。如果使用者嘗試以TCP為基礎的流量到另一目的IP地址192.168.10.20?源地址是否轉換為中央源NAT策略中定義的IP池?

  同樣,192.168.10.20的目的IP地址與中央NAT策略不匹配,因此FortiGate會降低流量。

傳統FortiGate中,VIP在防火牆策略中被選擇為目的地地址。

  在FortiGate上,你可以配置目的NAT和VIP用於目的NAT。一旦配置了VIP,FortiGate就自動在核心中建立一個規則,允許目的NAT出現。不需要額外的配置。

  是否丟失了為特定VIP和服務定義防火牆策略的粒度?

  沒有。如果你有幾個WAN-to-Internal策略和多個VIP,並且希望為特定的VIP允許特定的服務,那麼可以使用VIP的對映IP的目的地地址定義每個防火牆策略,並選擇適當的服務以允許或拒絕。

  注意,如果配置了中央源NAT和中央目的NAT(VIP),則輸出(內部到WAN)流量將基於中央源NAT和目的NAT(VIP)配置將NAT源到目的NAT或VIP地址。

在本示例中,建立了目的NAT和VIP規則,以將外部IP地址203.0.113.22對映到內部IP地址10.10.10.10。記住,一旦建立了VIP,就在核心中建立一個規則來允許目的NAT發生。

  從wan1到內部的防火牆策略是使用VIP的目標地址all或對映IP地址/範圍(10.10.10.10)建立的。

  源IP地址192.168.10.10試圖通過TCP埠80訪問目的IP地址203.0.113.22。與VIP 203.0.113.22的連線與內部主機10.10.10 10無關,沒有任何額外的配置。

可以通過在配置系統設定下執行設定中央NAT禁用來在CLI上禁用中央NAT。如果使用中央源NAT和目的NAT規則,中央NAT被禁用,防火牆策略會發生什麼?

  對於新的防火牆會話,流入的防火牆策略仍然可以使用出口介面IP地址來工作。然而,流入流出防火牆策略將不使用IP池地址,這些地址以前繫結到中央使用者NAT策略。如果需要使用IP池,則需要編輯防火牆策略以使用IP池。

  使用目的NAT和VIP的從外到內的防火牆策略將停止工作,因為在中央NAT中,防火牆策略中的目的地址只是地址物件,而不是實際的VIP。如果沒有中央NAT進入目的NAT表項,地址物件將導致前向策略檢查失敗,策略 ID 0將拒絕流量。

  你需要編輯從出到入防火牆策略的出口,並選擇VIP作為目的地地址。

 送分題。

現在你瞭解了中央NAT。接下來,你將學習session helpers。

在完成這一節之後,你應該能夠:

  • 理解session helpers是如何工作的
  • 在VoIP中的SIP協議的 session helper

  通過演示理解session helpers 如何工作的能力,你將能夠使用session helpers 來分析某些協議包中的資料,並允許這些協議通過FortiGate傳遞流量。

一些應用層協議並不完全獨立於較低層,例如網路或傳輸層。例如,可以在應用層中重複地址。如果會話助手檢測到這樣的模式,它可能更改應用程式頭部,或者建立所需的輔助連線。

  這方面的一個很好的例子是既有控制通道又有資料或媒體通道的應用程式,例如FTP。防火牆通常允許控制通道並依賴於會話助手來處理動態資料或媒體傳輸連線。

  當需要更高階的應用程式跟蹤和控制時,可以使用應用層閘道器(ALG)。VoIP配置檔案是ALG的一個例子。

在示例中,SIP SDP有效負載中的媒體接收者地址被修改以反映翻譯的IP地址。

  請注意,因為防火牆策略是有狀態的,所以開啟針孔以允許應答流量,即使尚未明確建立防火牆策略來允許傳入的流量。這個概念與一些其他協議一起使用,例如用於IPSec的NAT-T。

送分題。

現在你瞭解session helper。接下來,你將學習會話。

在完成這一節之後,你應該能夠:

  • 瞭解FortiGate會話表
  • 瞭解會話生存時間(TTL)
  • 分析session diagnose命令輸出
  • 瞭解FortiGate上的TCP、UDP和ICMP狀態

  通過展示理解會話表如何跟蹤會話資訊的能力,你將能更好地使用該資訊來理解應用於流量的動作,例如源NAT、目的NAT和路由。

 你可以檢視GUI上的All Sessions頁,但CLI提供有關會話表中會話的更多資訊。

  每個會話的連線的防火牆效能和最大連線數由會話表指示。然而,如果你的FortiGate包含被設計為在不載入 CPU的情況下加速處理的FortiASIC NP晶片,則會話表資訊可能不完全準確,因為會話表反映了CPU已知和處理的內容。

在FortiGate上的每個會話可以在有限時間內空閒,這是由生存時間(TTL)定義的。當FortiGate檢測到會話在一段時間不活動之後是空閒的,並且到達TTL時,會話從會話表中刪除。

  因為會話表的RAM數量有限,可以在FortiGate上使用,所以調整會話TTL可以提高效能。在防火牆物件中有全域性預設計時器、會話狀態計時器和定時器。

diagnose sys session命令樹提供篩選、清除或顯示會話列表的選項。還可以通過執行get system session list命令列出有關會話的簡要資訊。

  在檢視會話表之前,首先建立一個篩選器。若要檢視我們的測試連線,可以在dst 102.1.254和port 80上進行篩選。

在這個示例中,你可以看到會話TTL,它反映了FortiGate可以在不接收此會話的任何包的情況下執行多長時間,直到它將從其表中刪除會話為止。

  在這裡你可以看到適用於流量的路由和NAT操作。還跟蹤防火牆策略ID。

  TCP的proto_state取自它的狀態機,你將在本課中瞭解到。

  在本課的早些時候,你瞭解到會話表包含一個指示連線當前TCP狀態的數字。這些是TCP狀態機的狀態。它們是單位數的值,但proto_state總是顯示為兩位數字。這是因為FortiGate是一個有狀態的防火牆,並跟蹤原始方向(客戶端狀態)和回覆方向(伺服器端狀態)。如果在SYN狀態中有很長一段時間內有太多的連線,則表示SYN泛洪,你可以使用DoS策略來減輕這種泛洪。

  該表和流程圖將第二位數字值與不同的TCP會話狀態相關。例如,當FortiGate接收SYN資料包時,第二個數字是2。一旦接收到SYN/ACK,它就轉到3。在三次握手之後,狀態值變為1。

  當會話被雙方都關閉時,FortiGate在會話表中再保留幾秒鐘,以允許在FIN/ACK分組之後可能到達的任何無序分組。這是狀態值5。

​  雖然UDP是面向訊息的無狀態協議,但是它本身並不像TCP那樣需要確認的雙向連線,因此不存在連線狀態。然而,FortiGate的會話表使用proto_state=欄位來跟蹤單向UDP作為狀態0,而雙向UDP作為狀態1。

  當FortiGate接收第一個包時,它建立條目並將狀態設定為0。如果目的地回覆,FortiGate將狀態標誌更新為1,以用於會話的剩餘部分。

  值得注意的是ICMP,例如ping和traceroute,沒有協議狀態,它總是顯示proto_state=00。

​  送分題。

​  現在你瞭解會話了。接下來,你將瞭解NAT的最佳實踐和故障排查。

​  在完成這一節之後,你應該能夠:

  • 通過回顧流量日誌識別常見NAT問題
  • 使用診斷命令監視NAT會話
  • 用於中央NAT的VIP過濾器
  • 使用NAT實現最佳範例

  通過演示使用流量日誌、診斷命令、VIP過濾器以及NAT實現的最佳範例的能力,你應該能夠監視和排除常見的NAT問題,並在網路中成功地實現NAT。

​  NAT埠耗盡發生時,有這麼多的流量穿越邊界並被翻譯,所有埠都被使用。當發生NAT埠耗盡時,FortiGate通過顯示上面顯示的日誌通知管理員,其嚴重程度為功能性影響。

  要解決NAT埠耗盡,你需要採取以下操作之一:

  • 建立一個IP池,它有一個以上的外部IP繫結到它(因此它在它們之間負載平衡)。
  • 減少穿越邊境的流量。

  要接收像這樣的重要日誌,必須確保啟用必要的日誌記錄。在FortiGate GUI上,單擊“日誌和報告 > 日誌設定”,以檢查預設設定、日誌記錄到磁碟或記憶體是否已被啟用。

​  通過diagnose system session stat命令中的衝突計數器的增加也突出了NAT埠耗盡。

​  你可以使用diagnose firewall ippool-all list命令,該命令將列出所有配置的NAT IP池及其NAT IP範圍和型別。

​  diagnose firewall ippool-all stats顯示所有IP池的統計資訊。

  狀態命令提供以下資料和資訊:

  • 每個IP池的NAT會話
  • 每個IP池的總TCP會話
  • 每個IP池的UDP會話總數
  • 每個IP池總計其他(非TCP和非UDP)會話

  可選地,你可以通過使用IP池的名稱來過濾特定IP池的輸出。

​  服務選項已新增到VIP物件。當服務和埠轉發被配置時,只能配置單個對映埠。然而,可以將多個外部埠對映到該單個內部埠。

  這種配置允許複雜的場景,其中多個業務源使用多個服務連線到單個計算機,同時需要源和目的地NAT的組合,並且不需要將多個VIP捆綁到VIP組中。

  不同服務的VIP被認為是不重疊的。

​  在執行NAT時使用以下最佳範例:

  • 避免IP池範圍的錯誤配置:
    • 仔細檢查每個IP池的開始和結束IP池。
    • 確保IP池不與分配給FortiGate和主機的地址重疊。
    • 如果內部和外部使用者正在訪問相同的伺服器,則使用拆分DNS,而不是外部VIP。
  • 除非應用程式需要,否則不要為入站業務配置NAT規則。例如,如果有一個匹配的NAT規則用於入站SMTP業務,SMTP伺服器可能作為一個開放中繼。

​  小測驗。

​  你已經完成了這一課。現在,你將複習本課所涵蓋的目標。

​  本課程包括以下目標:

  • 理解NAT和PAT
  • 瞭解NAT的不同配置模式
  • 配置防火牆策略以執行源NAT和目的NAT(VIP)
  • 配置中央NAT
  • 瞭解session helpers並使用SIP session helpers進行VoIP
  • 理解和解釋會話表
  • 分析會話診斷命令輸出
  • 理解TCP、UDP和ICMP狀態
  • 使用流量日誌識別常見NAT問題並使用會話診斷命令監視NAT會話
  • 使用NAT實現最佳範例