关于服务策略
以下主题介绍服务策略的工作原理。
服务策略的组件
服务策略的关键意义在于,将高级服务应用于允许的流量。任何被访问规则允许的流量都可以应用服务策略,从而接受特殊处理,例如被重定向到服务模块,或者实施应用检测。
提供有以下类型的服务策略:
-
一项应用到所有接口的全局策略。
-
一项应用到单个接口的服务策略。该策略可以是通过设备的流量类和在 ASA 接口上定向而非通过的管理流量类的混合。
每项服务策略都由以下要素组成:
-
服务策略映射。这是一组按顺序排列的规则集,根据 service-policy 命令命名。在 ASDM 中,策略映射表示为 Service Policy Rules 页面上的一个文件夹。
-
规则。每条规则都是服务策略映射中的 class 命令,以及与 class 命令相关联的命令。在 ASDM 中,每条规则都显示于不同的行,规则名称为类名称。
class 命令定义匹配规则条件的流量。
与类相关联的命令(例如 inspect 和 set connection timeout),定义应用于匹配流量的服务和限制。请注意,检测命令可以指向检测策略映射,以此定义应用于被检测流量的操作。请记住,检测策略映射不同于服务策略映射。
以下示例将服务策略在 CLI 中的显示方式与在 ASDM 中的显示方式进行了对比。请注意,图中编号和 CLI 中的行之间没有一对一映射关系。

以下 CLI 由上图中显示的规则生成。
: Access lists used in class maps.
: In ASDM, these map to call-out 3, from the Match to the Time fields.
access-list inside_mpc line 1 extended permit tcp 10.100.10.0 255.255.255.0 any eq sip
access-list inside_mpc_1 line 1 extended deny udp host 10.1.1.15 any eq snmp
access-list inside_mpc_1 line 2 extended permit udp 10.1.1.0 255.255.255.0 any eq snmp
access-list inside_mpc_2 line 1 extended permit icmp any any
: SNMP map for SNMP inspection. Denies all but v3.
: In ASDM, this maps to call-out 4, rule actions, for the class-inside policy.
snmp-map snmp-v3only
deny version 1
deny version 2
deny version 2c
: Inspection policy map to define SIP behavior.
: The sip-high inspection policy map must be referred to by an inspect sip command
: in the service policy map.
: In ASDM, this maps to call-out 4, rule actions, for the sip-class-inside policy.
policy-map type inspect sip sip-high
parameters
rtp-conformance enforce-payloadtype
no traffic-non-sip
software-version action mask log
uri-non-sip action mask log
state-checking action drop-connection log
max-forwards-validation action drop log
strict-header-validation action drop log
: Class map to define traffic matching for the inside-class rule.
: In ASDM, this maps to call-out 3, from the Match to the Time fields.
class-map inside-class
match access-list inside_mpc_1
: Class map to define traffic matching for the sip-class-inside rule.
: In ASDM, this maps to call-out 3, from the Match to the Time fields.
class-map sip-class-inside
match access-list inside_mpc
: Class map to define traffic matching for the inside-class1 rule.
: In ASDM, this maps to call-out 3, from the Match to the Time fields.
class-map inside-class1
match access-list inside_mpc_2
: Policy map that actually defines the service policy rule set named test-inside-policy.
: In ASDM, this corresponds to the folder at call-out 1.
policy-map test-inside-policy
: First rule in test-inside-policy, named sip-class-inside. Inspects SIP traffic.
: The sip-class-inside rule applies the sip-high inspection policy map to SIP inspection.
: In ASDM, each rule corresponds to call-out 2.
class sip-class-inside
inspect sip sip-high
: Second rule, inside-class. Applies SNMP inspection using an SNMP map.
class inside-class
inspect snmp snmp-v3only
: Third rule, inside-class1. Applies ICMP inspection.
class inside-class1
inspect icmp
: Fourth rule, class-default. Applies connection settings and enables user statistics.
class class-default
set connection timeout embryonic 0:00:30 half-closed 0:10:00 idle 1:00:00
reset dcd 0:15:00 5
user-statistics accounting
: The service-policy command applies the policy map rule set to the inside interface.
: This command activates the policies.
service-policy test-inside-policy interface inside
使用服务策略配置的功能
下表列出了使用服务策略配置的功能。
功能 |
适用于直通流量? |
适用于管理流量? |
请参阅: |
---|---|---|---|
应用检测(多种类型) |
全部,除 RADIUS 记账以外 |
仅限 RADIUS 记账 |
|
NetFlow 安全事件记录过滤 |
是 |
是 |
请参阅 NetFlow 实施指南。 |
QoS 输入和输出策略管制 |
是 |
否 |
服务质量。 |
QoS 标准优先级队列 |
是 |
否 |
服务质量。 |
TCP 和 UDP 连接限制与超时,以及 TCP 序列号随机化 |
是 |
是 |
连接设置。 |
TCP 规范化 |
是 |
否 |
连接设置。 |
TCP 状态绕行 |
是 |
否 |
连接设置。 |
身份防火墙用户统计信息 |
是 |
是 |
请参阅命令参考中的 user-statistics 命令。 |
功能方向性
可以操作将双向或单向应用到流量,具体情况视功能而定。对于双向应用的功能,如果流量在两个方向上都匹配类映射,所有流入或流出应用了策略映射的接口的流量都会受到影响。
![]() 注 |
当使用全局策略时,所有功能都是单向的;通常在应用到单一接口时为双向的功能,在全局应用时仅应用到每个接口的入口。因为策略应用到所有接口,策略将在两个方向上应用,因此在这种情况下,双向性是多余的。 |
对于单向应用的功能(例如 QoS 优先级队列),仅流入(或流出,具体取决于功能)应用了策略映射的接口的流量会受到影响。请参见下表,了解每项功能的方向性。
功能 |
单一接口方向 |
全局方向 |
---|---|---|
应用检测(多种类型) |
双向 |
入口 |
NetFlow 安全事件记录过滤 |
N/A |
入口 |
QoS 输入策略管制 |
入口 |
入口 |
QoS 输出策略管制 |
出口 |
出口 |
QoS 标准优先级队列 |
出口 |
出口 |
TCP 和 UDP 连接限制与超时,以及 TCP 序列号随机化 |
双向 |
入口 |
TCP 规范化 |
双向 |
入口 |
TCP 状态绕行 |
双向 |
入口 |
身份防火墙用户统计信息 |
双向 |
入口 |
服务策略中的功能匹配
数据包根据以下规则,匹配给定接口的策略映射中的类映射:
-
对于每个功能类型,数据包只能与策略映射中的一个类映射匹配。
-
在数据包匹配某个功能类型的类映射后,ASA 不会再尝试将其与该功能类型的任何后续类映射匹配。
-
但是,如果该数据包与其他功能类型的后续类映射匹配,则 ASA 也会应用适用于该后续类映射的操作(如果支持)。请参阅某些功能操作的不兼容性,了解有关不受支持的组合的详细信息。
注
应用检测包括多种检测类型,大部分类型都相互排斥。对于可以组合在一起的检测,每项检测都被视为一项独立功能。
数据包匹配示例
例如:
-
如果数据包不仅与连接限制的类映射匹配,还与应用检测的类映射匹配,则会同时应用两项操作。
-
如果数据包不仅与 HTTP 检测的类映射匹配,还与包含 HTTP 检测的另一个类映射匹配,则不会应用第二项类映射操作。
-
如果数据包不仅与 HTTP 检测的类映射匹配,还与包含 FTP 检测的另一个类映射匹配,则不会应用第二项类映射操作,因为 HTTP 和 FTP 检测无法合并。
-
如果数据包不仅与 HTTP 检测的类映射匹配,还与包含 IPv6 检测的另一个类映射匹配,则会同时应用两项操作,因为 IPv6 检测可与任何类型的检测合并。
多种功能操作的应用顺序
不同类型的操作在策略映射中的执行顺序独立于操作在策略映射中的显示顺序。
按以下顺序执行操作:
-
QoS 输入策略管制
-
TCP 规范化、TCP 和 UDP 连接限制与超时、TCP 序列号随机化以及 TCP 状态绕行。
注
当 ASA 执行代理服务(例如 AAA)或修改 TCP 负载(例如 FTP 检测)时,TCP 规范器在双重模式下运行,即于代理或负载修改服务之前和之后进行应用。
-
可以与其他检测合并在一起的应用检测:
-
IPv6
-
IP 选项
-
WAAS
-
-
无法与其他检测合并在一起的应用检测。有关详细信息,请参阅某些功能操作的不兼容性。
-
QoS 输出策略管制
-
QoS 标准优先级队列
![]() 注 |
NetFlow 安全事件记录过滤和身份防火墙用户统计信息与顺序无关。 |
某些功能操作的不兼容性
某些功能对于同一流量互不兼容。下表可能不包含所有不兼容性;有关每项功能兼容性的详细信息,请参阅功能对应的章节:
-
无法对同一组的流量配置优先级队列和策略管制。
-
大多数检测不应与其他检测整合使用,所以当为相同流量配置了多种检测时,ASA 仅应用一种检测。多种功能操作的应用顺序 中列出了其他例外情况。
![]() 注 |
默认全局策略中使用的 match default-inspection-traffic 命令是用来匹配所有检测的默认端口的特殊 CLI 快捷方式。在策略映射中使用时,该类映射可以根据流量的目标端口确保应用到每个数据包的检测都正确。例如,当端口 69 的 UDP 流量到达 ASA 时,ASA 会应用 TFTP 检测;当端口 21 的 TCP 流量到达时,ASA 会应用 FTP 检测。因此只有在这种情况下,才能为同一类映射配置多项检测。通常,ASA 不会使用端口号来确定应用哪种检测,因此您可以灵活地对非标准端口等应用检测。 |
错误配置示例:在同一策略映射中配置多个检测,并且不使用 default-inspection-traffic 快捷方式。在第一个示例中,误为 FTP 和 HTTP 检测都配置了流向端口 21 的流量。在第二个示例中,误为 FTP 和 HTTP 检测都配置了流向端口 80 的流量。在这两种错误配置示例的情况下,系统仅会应用 FTP 检测,因为按照应用检测的顺序,FTP 先于 HTTP。
示例 1:FTP 数据包错误配置:也配置了 HTTP 检测
class-map ftp
match port tcp eq 21
class-map http
match port tcp eq 21 [it should be 80]
policy-map test
class ftp
inspect ftp
class http
inspect http
示例 2:HTTP 数据包错误配置:也配置了 FTP 检测
class-map ftp
match port tcp eq 80 [it should be 21]
class-map http
match port tcp eq 80
policy-map test
class ftp
inspect ftp
class http
inspect http
多个服务策略的功能匹配
对于 TCP 和 UDP 流量(以及启用状态性 ICMP 检测时的 ICMP),服务策略不仅在单个数据包上运行,还在流量上运行。如果流量为现有连接的一部分且该现有连接匹配一个接口上的策略中的某项功能,那么该流量无法匹配另一个接口上的策略中的同一项功能;仅使用第一项策略。
例如,如果 HTTP 流量匹配内部接口上的检查 HTTP 流量的策略,而且在 HTTP 检测的外部接口上有独立策略,该流量不会同时在外部接口的出口被检测。同样,该连接的返回流量不会被外部接口的入口策略检测,也不会被内部接口的出口策略检测。
对于未被当作流量处理的流量,例如,不启用状态性 ICMP 检测时的 ICMP,返回流量可以匹配返回接口上的另一个策略映射。