简介
本文档介绍如何配置TCP状态旁路功能,该功能允许出站和入站流量通过单独的Cisco ASA 5500系列自适应安全设备(ASA)。
先决条件
要求
Cisco ASA必须至少安装基本许可证,然后才能继续本文档中所述的配置。
使用的组件
本文档中的信息基于运行软件版本9.x的Cisco ASA 5500系列。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
背景信息
本节概述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)功能 — 不能将TCP状态旁路功能用于在SSM或SSC上运行的任何应用,例如IPS或内容安全(CSC)。
注意:由于转换会话是分别为每个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命令以指定类映射中的相关流量。使用模块化策略框架时,请在类映射配置模式下使用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
- 在类配置模式下输入set connection advanced-options tcp-state-bypass命令以启用TCP状态旁路功能。此命令在版本8.2(1)中引入。 类配置模式可从策略映射配置模式访问,如下例所示:
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上为使用非对称路由的场景配置TCP状态旁路功能,其中流量从同一接口进入和离开ASA(u-turning)。
以下是此场景中使用的拓扑:
要配置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命令以指定类映射中的相关流量。使用模块化策略框架时,请在类映射配置模式下使用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
- 在类配置模式下输入set connection advanced-options tcp-state-bypass命令以启用TCP状态旁路功能。此命令在版本8.2(1)中引入。 class configuration模式可从policy-map 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 命令的命令。
注意:此命令支持 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
相关信息