ACL
ACL (Access Control List、访问控制表) 是由 ACL 标识和一条或多条规则组成的集合。本质上是一种报文过滤器,ACL 标识表示过滤器的类型,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据处理策略来允许或阻止该报文通过
ACL 的组成
ACL 标识 : 使用数字或者名称来标识 ACL
- 数字标识 ACL : 不同的类型的 ACL 使用特定的数字进行标识
- 名称标识 ACL : 可以使用字符来标识 ACL,就像用域名代替 IP 地址一样,更加方便记忆
规则 : 描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等
- 规则编号 : 用于标识ACL规则,所有规则均按照规则编号从小到大进行排序
- 动作 : 包括 permit/deny 两种动作,表示设备对所匹配的数据包接受或者丢弃
- 匹配项 : ACL 定义了极其丰富的匹配项。包括生效时间段、IP 协议 (ICMP、TCP、UDP 等)、源/目的地址以及相应的端口号 (21、23、80 等)
ACL 的类型
大致分为数字型 ACL 与命名型 ACL,也可以根据 IPv4 和 IPv6 分为 : ACL4 与 ACL6。
通常会根据不同的规则和使用场景分为 : 基本 ACL、高级 ACL、二层 ACL、用户自定义 和用户 ACL
- 基本 ACL : 规则只包含源 IP 地址,对设备的 CPU 消耗较少,可用于简单的部署,但是使用场景有限,不能提供强大的安全保障
- 高级 ACL : 相较于基本 ACL,高级 ACL 提供更高的扩展性,可以对流量进行更精细的匹配
- 二层 ACL : 用于数据链路层的 ACL,可以对 MAC 地址进行规则匹配
- 用户自定义 ACL : 规则以报文头为基准,指定从报文的第几个字节开始与字符串掩码进行“与”操作,并将提取出的字符串与用户自定义的字符串进行比较,从而过滤出相匹配的报文
- 用户 ACL : 在高级 ACL 的基础上增加了用户组的配置项,可以实现对不同用户组的流量管控
ACL | 类型 | |||||
---|---|---|---|---|---|---|
基本 ACL | 高级 ACL | 二层 ACL | 自定义 ACL | 用户 ACL | ||
参数 | 编号范围 | 2000~2999 | 3000~3999 | 4000~4999 | 5000~5999 | 6000~6031 |
生效时间段 | √ | √ | √ | √ | ||
分片信息 | √ | |||||
IP协议类型 | √ | √ | √ | |||
源IP地址 | √ | √ | √ | |||
源MAC地址 | √ | |||||
源端口号 | √ | √ | √ | |||
目的IP地址 | √ | √ | ||||
目的MAC地址 | √ | |||||
目的端口号 | √ | √ | √ | |||
报文头 | √ | |||||
偏移位置 | √ | |||||
字符串掩码 | √ | |||||
自定义字符串 | √ | |||||
用户组 | √ |
ACL 匹配机制
一般在 ACL 的列表末尾会有一条隐式的拒绝所有的语句,所以数据包与所有的规则都不匹配的情况下会被直接拒绝