交换机支持的ACL
如图所示,交换机支持的ACL规则包括过滤IPv4报文的ACL、过滤IPv6报文的ACL6、二层ACL以及同时支持过滤IPv4和IPv6报文的用户自定义ACL。
表2-1 交换机支持的ACL
分类
适用IP版本
规则定义说明
号码范围
基本访问控制列表
IPv4
仅使用报文的源IP地址、分片信息和有效时间段信息来定义规则。
2000~2999
高级访问控制列表
IPv4
可以使用IPv4报文的源IP地址,也可以使用目的IP地址、IP协议类型、ICMP类型、TCP源/目的端口、UDP源/目的端口号、有效时间段等来定义规则。
3000~3999
二层访问控制列表
IPv4 和 IPv6
使用数据包的以太网帧头信息来定义规则,例如源MAC(媒体)地址、目标MAC地址、第2层协议类型等。
4000~4999
用户自定义ACL
IPv4 和 IPv6
使用消息头、偏移位置、字符串掩码和用户自定义字符串来定义规则,即以消息头为基础,与字符串掩码“与”开始指定消息中的字节数。 ”操作,将提取的字符串与用户定义的字符串进行比较,过滤出匹配的消息。
5000~5999
用户访问控制列表
IPv4
您可以使用 IPv4 报文的源 IP 地址或源 UCL(用户列表)组,也可以使用目标 IP 地址或目标 UCL 组、IP 协议类型、ICMP 类型、TCP 源端口/目标端口和 UDP 源端口/目的端口。 否等来定义规则。
6000~9999
基本ACL6
IPv6
可以使用IPv6报文的源IPv6地址、分片信息和有效时间段来定义规则。
2000~2999
高级ACL6
IPv6
可以利用IPv6报文的源IPv6地址、目的IPv6地址、IPv6协议类型、类型、TCP源/目的端口、UDP源/目的端口号、有效时间段等来定义规则。
3000~3999
用户ACL6
IPv6
可以使用IPv6报文的源IPv6地址或源UCL组,也可以使用目的IPv6地址、IPv6协议类型、类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则。
6000~9999
常见匹配
交换机支持多种ACL匹配项,其中最常用的匹配项包括以下几种。
TCP/UDP 端口号可以用数字或字符串(助记符)表示。 例如,规则拒绝 tcp -port eq 80 可以替换为规则拒绝 tcp -port eq www。 常见TCP/UDP端口号及对应字符串请参见规则(高级ACL视图)中常见TCP协议源端口号或目的端口号与端口以及常见UDP协议源端口号或目的端口号与端口的值对应关系。 值对应关系表。
TCP标志信息
格式:tcp-flag { ack | | 鳍| 普什 | 第一 | 同步| 呃}*
高级ACL中,当指定协议类型为TCP时,设备支持根据TCP标志信息对报文进行过滤。
TCP头有6个标志位:ack()、fin()、psh(push)、rst(reset)、syn()和urg()。
TCP标志信息中,标志位为ACK()或RST()。
指定tcp-flag的ACL规则可用于实现单向访问控制。 假设192.168.1.0/24网段的用户需要主动访问192.168.2.0/24网段的用户,但反过来,192.168.2.0/24网段的用户不能主动访问192.168.1.0/24。 该需求可以通过在设备上连接192.168.2.0/24网段的接口入方向应用ACL规则来实现。
从TCP连接建立和连接关闭的过程可以看出,只有TCP中间连接过程中的报文才会有ACK=1或RST=1。 基于此特性,配置如下两条ACL规则,允许TCP中间连接过程中的报文通过,拒绝其他TCP报文通过,从而限制192.168.2.0/24网段主动发起的TCP连接。
IP分片信息
格式:
基本ACL和高级ACL支持根据IP分片信息进行报文过滤。
IP分片除了首分片报文外,还有后续分片报文,也称为非首分片报文。 仅第一个分片报文携带四层信息(如TCP/UDP端口号等),后续分片报文不携带。 网络设备收到分片报文后,会判断是否是最后一条分片报文。 如果没有,则为其分配内存空间,以便在最后一个分片消息到达后可以完成重组。 黑客可以利用这一点对接收设备发起分片消息攻击,而无需将最后的分片消息发送到接收设备。
为了解决这个问题,可以通过配置ACL规则,指定匹配项来拦截非首个分片报文,从而防止分片报文攻击。
对于非分片报文、首分片报文、非首分片报文三种报文,ACL的处理方法如下。
表2-6 IP分片报文ACL处理方式
规则中包含的匹配项
消息不分片
第一条分片消息
非首条分片消息
第 3 层信息(例如源/目标 IP 地址)
如果三层信息匹配,则返回匹配结果(/deny); 如果不匹配,则转至下一条规则进行匹配。
如果三层信息匹配,则返回匹配结果(/deny); 如果不匹配,则转至下一条规则进行匹配。
如果三层信息匹配,则返回匹配结果(/deny); 如果不匹配,则转至下一条规则进行匹配。
三层信息+四层信息(如TCP/UDP端口号)
如果三层和四层信息都匹配,则返回匹配结果(/deny); 如果不匹配,则转至下一条规则进行匹配。
如果三层和四层信息都匹配,则返回匹配结果(/deny); 如果不匹配,则转至下一条规则进行匹配。