簡介
本檔案介紹如何設定TCP狀態略過功能,此功能允許傳出和傳入流量通過單獨的Cisco ASA 5500系列調適型安全裝置(ASA)。
必要條件
需求
Cisco ASA必須至少安裝基本許可證,然後才能繼續本文檔中所述的配置。
採用元件
本文檔中的資訊基於運行軟體版本9.x的Cisco ASA 5500系列。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
慣例
請參閱思科技術提示慣例以瞭解更多有關文件慣例的資訊。
背景資訊
本節概述TCP狀態略過功能和相關支援資訊。
TCP狀態略過功能概述
預設情況下,所有通過ASA的流量都會通過自適應安全演算法進行檢查,並根據安全策略允許通過或丟棄。為了最大限度地提高防火牆效能,ASA會檢查每個資料包的狀態(例如,它檢查它是新連線還是已建立的連線),並將其分配給會話管理路徑(新的連線同步(SYN)資料包)、快速路徑(已建立的連線)或控制平面路徑(高級檢查)。
與快速路徑中的當前連線匹配的TCP資料包可以通過ASA,而無需重新檢查安全策略的各個方面。此功能可最大限度地提高效能。然而,用於在快速路徑中建立作業階段的方法(使用SYN封包)和在快速路徑中進行的檢查(例如TCP序號)可以阻止非對稱路由解決方案;連線的出站和入站流都必須通過同一個ASA。
例如,新連線進入ASA 1。SYN資料包通過會話管理路徑,並且連線條目新增到快速路徑表中。如果此連線上的後續資料包通過ASA 1,則這些資料包與快速路徑中的條目匹配,並且被通過。如果後續資料包進入ASA 2,其中沒有經過會話管理路徑的SYN資料包,則快速路徑中沒有用於連線的條目,資料包將被丟棄。
如果在上游路由器上配置了非對稱路由,且流量在兩個ASA之間交替,則可以為特定流量配置TCP狀態旁路功能。TCP狀態略過功能會變更在快速路徑中建立作業階段的方式,並停用快速路徑檢查。此功能處理TCP流量的方式與處理UDP連線的方式相同:當與指定網路匹配的非SYN資料包進入ASA且沒有快速路徑條目時,該資料包將通過會話管理路徑以在快速路徑中建立連線。進入快速路徑後,流量會繞過快速路徑檢查。
此圖提供非對稱路由的示例,其中出站流量通過與入站流量不同的ASA:
附註:Cisco ASA 5500系列預設禁用TCP狀態旁路功能。此外,如果未正確實施TCP狀態旁路配置,可能會導致大量連線。
支援資訊
本節介紹TCP狀態略過功能的支援資訊。
- 情景模式 — 在單情景和多情景模式下支援TCP狀態旁路功能。
- 防火牆模式 — 在路由和透明模式下支援TCP狀態略過功能。
- 故障切換 — TCP狀態旁路功能支援故障切換。
使用TCP狀態略過功能時,不支援以下功能:
- 應用檢測 — 應用檢測要求入站和出站流量都通過同一個ASA,因此TCP狀態旁路功能不支援應用檢測。
- 身份驗證、授權和記帳(AAA)身份驗證會話 — 當使用者使用一個ASA進行身份驗證時,通過另一個ASA返回的流量會遭到拒絕,因為使用者未使用該ASA進行身份驗證。
- TCP攔截、最大初始連線限制、TCP序列號隨機 - ASA不跟蹤連線狀態,因此不應用這些功能。
- TCP規範化- TCP規範化程式已禁用。
- 安全服務模組(SSM)和安全服務卡(SSC)功能 — 不能對SSM或SSC上執行的任何應用程式(例如IPS或內容安全(CSC))使用TCP狀態略過功能。
附註:由於轉換會話是單獨為每個ASA建立的,因此請確保在兩個ASA上為TCP狀態旁路流量配置靜態網路地址轉換(NAT)。如果使用動態NAT,為ASA 1上的會話選擇的地址將與ASA 2上的會話選擇的地址不同。
設定
本節介紹如何在兩種不同情況下在ASA 5500系列上配置TCP狀態旁路功能。
附註:使用命令查詢工具(僅供註冊客戶使用)可獲取本節中使用的命令的更多資訊。
案例 1
這是用於第一個場景的拓撲:
附註:您必須將本節所述的配置應用到兩個ASA。
完成以下步驟即可設定TCP狀態略過功能:
- 輸入class-map class_map_name 命令以建立類對映。類對映用於標識要為其禁用狀態防火牆檢測的流量。
附註:本示例中使用的類對映是tcp_bypass。
ASA(config)#class-map tcp_bypass
- 輸入match parameter命令以指定類對映中的相關流量。使用模組化策略框架時,請在class-map配置模式下使用match access-list命令,以便使用訪問清單來標識要對其應用操作的流量。以下是此組態的範例:
ASA(config)#class-map tcp_bypass
ASA(config-cmap)#match access-list tcp_bypass
附註:tcp_bypass是本範例中使用的存取清單的名稱。有關如何指定相關流量的詳細資訊,請參閱識別流量(第3/4層類對映)。
- 輸入policy-map name命令以新增策略對映或編輯策略對映(已經存在),該策略對映分配針對指定類對映流量要採取的操作。使用模組化策略框架時,請在全域性配置模式下使用policy-map命令(不帶type關鍵字)將操作分配給使用第3/4層類對映標識的流量(class-map或class-map type management命令)。 在本示例中,策略對映為tcp_bypass_policy:
ASA(config-cmap)#policy-map tcp_bypass_policy
- 在policy-map configuration模式下輸入class命令,以將建立的類對映(tcp_bypass)分配到策略對映(tcp_bypass_policy),以便可以將操作分配到類對映流量。在本示例中,類對映是tcp_bypass:
ASA(config-cmap)#policy-map tcp_bypass_policy
ASA(config-pmap)#class tcp_bypass
- 在class configuration模式下輸入set connection advanced-options tcp-state-bypass 命令以啟用TCP狀態略過功能。此命令在8.2(1)版中匯入。 通過policy-map配置模式可以訪問類配置模式,如以下示例所示:
ASA(config-cmap)#policy-map tcp_bypass_policy
ASA(config-pmap)#class tcp_bypass
ASA(config-pmap-c)#set connection advanced-options tcp-state-bypass
- 輸入service-policy policymap_name [ global | interface intf ] 命令在全域性配置模式下,以便在所有介面或目標介面上全域性啟用策略對映。若要停用服務原則,請使用此命令的no形式。輸入service-policy命令以在介面上啟用一組策略。global關鍵字將策略對映應用於所有介面,而interface關鍵字將策略對映僅應用於一個介面。只允許一個全域性策略。要覆蓋介面上的全域性策略,可以將服務策略應用於該介面。您只能對每個介面應用一個策略對映。以下是範例:
ASA(config-pmap-c)#service-policy tcp_bypass_policy outside
ASA1上的TCP狀態旁路功能配置示例如下:
!--- Configure the access list to specify the TCP traffic
!--- that needs to by-pass inspection to improve the performance.
ASA1(config)#access-list tcp_bypass extended permit tcp 10.1.1.0 255.255.255.0
172.16.1.0 255.255.255.0
!--- Configure the class map and specify the match parameter for the
!--- class map to match the interesting traffic.
ASA1(config)#class-map tcp_bypass
ASA1(config-cmap)#description "TCP traffic that bypasses stateful firewall"
ASA1(config-cmap)#match access-list tcp_bypass
!--- Configure the policy map and specify the class map
!--- inside this policy map for the class map.
ASA1(config-cmap)#policy-map tcp_bypass_policy
ASA1(config-pmap)#class tcp_bypass
!--- Use the set connection advanced-options tcp-state-bypass
!--- command in order to enable TCP state bypass feature.
ASA1(config-pmap-c)#set connection advanced-options tcp-state-bypass
!--- Use the service-policy policymap_name [ global | interface intf ]
!--- command in global configuration mode in order to activate a policy map
!--- globally on all interfaces or on a targeted interface.
ASA1(config-pmap-c)#service-policy tcp_bypass_policy outside
!--- NAT configuration
ASA1(config)#object network obj-10.1.1.0
ASA1(config-network-object)#subnet 10.1.1.0 255.255.255.0
ASA1(config-network-object)#nat(inside,outside) static 192.168.1.0
ASA2上的TCP狀態旁路功能配置示例如下:
!--- Configure the access list to specify the TCP traffic
!--- that needs to by-pass inspection to improve the performance.
ASA2(config)#access-list tcp_bypass extended permit tcp 172.16.1.0 255.255.255.0
10.1.1.0 255.255.255.0
!--- Configure the class map and specify the match parameter for the
!--- class map to match the interesting traffic.
ASA2(config)#class-map tcp_bypass
ASA2(config-cmap)#description "TCP traffic that bypasses stateful firewall"
ASA2(config-cmap)#match access-list tcp_bypass
!--- Configure the policy map and specify the class map
!--- inside this policy map for the class map.
ASA2(config-cmap)#policy-map tcp_bypass_policy
ASA2(config-pmap)#class tcp_bypass
!--- Use the set connection advanced-options tcp-state-bypass
!--- command in order to enable TCP state bypass feature.
ASA2(config-pmap-c)#set connection advanced-options tcp-state-bypass
!--- Use the service-policy policymap_name [ global | interface intf ]
!--- command in global configuration mode in order to activate a policy map
!--- globally on all interfaces or on a targeted interface.
ASA2(config-pmap-c)#service-policy tcp_bypass_policy outside
!--- NAT configuration
ASA2(config)#object network obj-10.1.1.0
ASA2(config-network-object)#subnet 10.1.1.0 255.255.255.0
ASA1(config-network-object)#nat(inside,outside) static 192.168.1.0
案例 2
本節介紹如何在ASA上為使用非對稱路由的方案(流量從同一介面進入或離開ASA(u-turning))配置TCP狀態旁路功能。
以下是此案例中使用的拓撲:
完成以下步驟即可設定TCP狀態略過功能:
- 建立access-list以與應繞過TCP檢查的流量相符:
ASA(config)#access-list tcp_bypass extended permit tcp 192.168.2.0 255.255.255.0
192.168.1.0 255.255.255.0
- 輸入class-map class_map_name 命令以建立類對映。類對映用於標識要為其禁用狀態防火牆檢測的流量。
附註:本示例中使用的類對映是tcp_bypass。
ASA(config)#class-map tcp_bypass
- 輸入match parameter命令以指定類對映中的相關流量。使用模組化策略框架時,請在class-map配置模式下使用match access-list命令,以便使用訪問清單來標識要對其應用操作的流量。以下是此組態的範例:
ASA(config)#class-map tcp_bypass
ASA(config-cmap)#match access-list tcp_bypass
附註:tcp_bypass是本範例中使用的存取清單的名稱。有關如何指定相關流量的詳細資訊,請參閱識別流量(第3/4層類對映)。
- 輸入policy-map name命令以新增策略對映或編輯策略對映(已經存在),該策略對映設定針對指定類對映流量要採取的操作。使用模組化策略框架時,請在全域性配置模式下使用policy-map命令(不帶type關鍵字)將操作分配給使用第3/4層類對映標識的流量(class-map或class-map type management命令)。 在本示例中,策略對映為tcp_bypass_policy:
ASA(config-cmap)#policy-map tcp_bypass_policy
- 在policy-map configuration模式下輸入class命令,以將建立的類對映(tcp_bypass)分配到策略對映(tcp_bypass_policy),以便可以為類對映流量分配操作。在本示例中,類對映為tcp_bypass:
ASA(config-cmap)#policy-map tcp_bypass_policy
ASA(config-pmap)#class tcp_bypass
- 在class configuration模式下輸入set connection advanced-options tcp-state-bypass 命令以啟用TCP狀態略過功能。此命令在8.2(1)版中匯入。 可以從policy-map configuration模式訪問class configuration模式,如以下示例所示:
ASA(config-cmap)#policy-map tcp_bypass_policy
ASA(config-pmap)#class tcp_bypass
ASA(config-pmap-c)#set connection advanced-options tcp-state-bypass
- 輸入service-policy policymap_name [ global | interface intf ] 命令,以便在所有介面或目標介面上全域性啟用策略對映。若要停用服務原則,請使用此命令的no形式。輸入service-policy命令以在介面上啟用一組策略。global關鍵字將策略對映應用於所有介面,而interface關鍵字僅將策略應用於一個介面。只允許一個全域性策略。要覆蓋介面上的全域性策略,可以將服務策略應用於該介面。您只能對每個介面應用一個策略對映。以下是範例:
ASA(config-pmap-c)#service-policy tcp_bypass_policy inside
- 允許ASA上的流量具有相同的安全級別:
ASA(config)#same-security-traffic permit intra-interface
以下是ASA上TCP狀態旁路功能的配置示例:
!--- Configure the access list to specify the TCP traffic
!--- that needs to bypass inspection to improve the performance.
ASA(config)#access-list tcp_bypass extended permit tcp 192.168.2.0 255.255.255.0
192.168.1.0 255.255.255.0
!--- Configure the class map and specify the match parameter for the
!--- class map to match the interesting traffic.
ASA(config)#class-map tcp_bypass
ASA(config-cmap)#description "TCP traffic that bypasses stateful firewall"
ASA(config-cmap)#match access-list tcp_bypass
!--- Configure the policy map and specify the class map
!--- inside this policy map for the class map.
ASA(config-cmap)#policy-map tcp_bypass_policy
ASA(config-pmap)#class tcp_bypass
!--- Use the set connection advanced-options tcp-state-bypass
!--- command in order to enable TCP state bypass feature.
ASA(config-pmap-c)#set connection advanced-options tcp-state-bypass
!--- Use the service-policy policymap_name [ global | interface intf ]
!--- command in global configuration mode in order to activate a policy map
!--- globally on all interfaces or on a targeted interface.
ASA(config-pmap-c)#service-policy tcp_bypass_policy inside
!--- Permit same security level traffic on the ASA to support U-turning
ASA(config)#same-security-traffic permit intra-interface
驗證
輸入 show conn 命令可檢視活動TCP和UDP連線的數量和有關各種連線型別的資訊。要顯示指定連線型別的連線狀態,請輸入 show conn 命令的EXEC模式。
附註:此命令支援IPv4和IPv6地址。為使用TCP狀態旁路功能的連線顯示的輸出包括標誌b。
以下是輸出範例:
ASA(config)show conn
1 in use, 3 most used
TCP tcp 10.1.1.1:49525 tcp 172.16.1.1:21, idle 0:01:10, bytes 230, flags b
疑難排解
此功能沒有特定的疑難排解資訊。有關一般連線疑難排解資訊,請參閱以下文檔:
附註:TCP狀態旁路連線不會複製到故障轉移對中的備用裝置。
錯誤訊息
即使啟用TCP狀態旁路功能,ASA仍會顯示以下錯誤消息:
%PIX|ASA-4-313004:Denied ICMP type=icmp_type, from source_address oninterface
interface_name to dest_address:no matching session
由於有狀態ICMP功能新增了安全檢查,ASA丟棄了網際網路控制消息協定(ICMP)資料包。這些錯誤消息通常是沒有通過ASA的有效回應請求的ICMP echo應答,或者是與ASA中當前建立的任何TCP、UDP或ICMP會話無關的ICMP錯誤消息。
即使由於無法禁用此功能(即檢查連線表中型別3的ICMP return條目)而啟用了TCP狀態旁路功能,ASA也會顯示此日誌。但是,TCP狀態略過功能可以正常工作。
輸入以下命令可防止出現以下訊息:
hostname(config)#no logging message 313004
相關資訊