引言

上一个帖子我们初步了解了防火墙的相关知识,本篇将深入学习防火墙问世前就已存在的流量过滤规则集合——访问控制列表(ACL,Access Control List)

ACL与防火墙的区别

  • ACL是早期和基础的访问控制机制
  • 防火墙是在ACL基础上发展出的更完整的安全系统
  • ACL出现更早,最初用于路由器和交换机中进行简单的数据包过滤
  • 防火墙后来发展出来,在ACL的包过滤思想基础上,增加了更多安全功能
ACL是实现访问控制的基础技术之一,防火墙是在其基础上扩展发展的安全设备。

防火墙如何延续ACL的使用

一、防火墙处理数据包的一般流程

一个数据包经过防火墙时,大致流程如下:
  1. 数据包到达
  2. 接口接收数据
  3. ACL规则匹配(访问控制)
  4. NAT地址转换(如果需要)
  5. 状态检测 / 会话检查
  6. 策略判断
  7. 允许转发 或 丢弃

二、ACL主要使用的位置

1. 数据包进入防火墙时(入口过滤)

当数据包刚进入防火墙接口时,会先进行 ACL检查
作用:
  • 判断是否允许该流量进入网络
  • 根据IP、端口、协议进行匹配
示例:
deny ip 192.168.1.10 any
表示拒绝192.168.1.10发出的所有数据包。
  • 如果匹配 deny:→ 数据包直接丢弃
  • 如果匹配 permit:→ 继续后续处理
ACL会在数据包到达时,根据预先定义的规则对报文头信息进行匹配,从而决定允许还是拒绝该数据包。
ACL不仅在入口进行匹配,也会在数据包离开时做匹配。

三、关于ACL

定义:
ACL(Access Control List,访问控制列表)由多条“deny|permit”(拒绝|允许)语句组成,每一条都是一条规则,用于控制网络流量的进出。ACL是防火墙的重要组成部分之一,基于规则对数据包进行过滤。
⚠️ 注意: ACL是一种流量过滤规则集合,属于路由器、防火墙等网络设备中的技术功能/配置手段,而非标准化的网络协议。
ACL的应用目标:
  • 阻断攻击性报文
  • 为不同类型报文流提供差分服务
  • 控制Telnet登录、FTP文件下载等操作
从而提升网络环境的安全性和网络传输的可靠性。

ACL的匹配机制

设备将报文与ACL规则进行匹配时,遵循“一旦命中即停止匹配”的机制。
  • 首先系统会查找设备上是否配置了ACL。
    • 如果ACL不存在,则返回ACL匹配结果为:不匹配。
    • 如果ACL存在,则查找设备是否配置了ACL规则。
      • 如果规则不存在,则返回ACL匹配结果为:不匹配。
      • 如果规则存在,则系统会从ACL中编号最小的规则开始查找。
  • 如果匹配上了permit规则,则停止查找规则,并返回ACL匹配结果为:匹配(允许)。
  • 如果匹配上了deny规则,则停止查找规则,并返回ACL匹配结果为:匹配(拒绝)。
  • 如果未匹配上规则,则继续查找下一条规则,以此循环。如果一直查到最后一条规则,报文仍未匹配上,则返回ACL匹配结果为:不匹配。
ACL匹配结果:
  • 匹配(命中规则):存在ACL且查找到了符合条件的规则(permit或deny)。
  • 不匹配(未命中规则):不存在ACL、无规则或所有规则都未匹配。

ACL的过滤原理

  • 过滤依据:
    • 源IP地址: 识别发送数据包的设备
    • 目标IP地址: 识别接收数据包的设备
    • 端口号: 识别具体的网络服务
    • 协议: 识别数据包所用的传输层协议(如TCP、UDP等)
  • 过滤流程:
  1. 创建ACL规则: 定义允许或拒绝的数据包特征
  2. 应用ACL规则: 将规则应用到具体接口方向
  3. 匹配数据包: 数据包通过接口时按照规则匹配
  4. 执行动作: 根据匹配结果允许或拒绝数据包通过

标准ACL指令示例

该命令表示:创建编号为2000的基础ACL,拒绝源地址为172.16.10.1的数据包,允许其它所有数据包,并将该规则应用到接口GigabitEthernet0/0/1的出方向。

高级ACL命令示例

高级ACL可基于源IP、目标IP、目标端口号、协议等进行更细致的过滤。
该命令表示:创建编号为3000的高级ACL,允许源地址为192.168.1.0/24的数据包访问目标地址为172.16.10.0/24,并且目标端口号为80(HTTP)的数据包,并将该规则应用到接口GigabitEthernet0/0/0的入方向。

ACL类别

基于ACL标识方法的划分
  • 数字型ACL: 传统的ACL标识方法。创建ACL时,指定一个唯一的数字标识该ACL。
  • 命名型ACL: 通过名称代替编号来标识ACL。
用户在创建ACL时可以为其指定编号,不同的编号对应不同类型的ACL。命名型ACL也可以是“名称 数字”的形式。如果不指定编号,系统则会自动分配一个数字型ACL的编号。

说明

  • 命名型ACL一旦创建成功,便不允许用户再修改其名称。如果删除ACL名称,则表示删除整个ACL。
  • 仅基本ACL与基本ACL6,以及高级ACL与高级ACL6,可以使用相同的ACL名称;其他类型ACL之间,不能使用相同的ACL名称。

基于对IPv4和IPv6支持情况的划分
  • ACL4: 仅支持过滤IPv4报文的ACL。
  • ACL6: 又叫做“IPv6 ACL”,仅支持过滤IPv6报文的ACL。
以上两种ACL,以及既支持过滤IPv4报文又支持过滤IPv6报文的ACL,统一称做“ACL”。
基于ACL规则定义方式的划分
分类
适用的IP版本
规则定义描述
编号范围
基本ACL
IPv4
仅使用报文的
源IP地址
、分片信息和生效时间段信息来定义规则。
2000~2999
高级ACL
IPv4
可使用
源IP地址
目的IP地址
、协议类型、ICMP类型、TCP/UDP端口、生效时间段等来定义规则。
3000~3999
二层ACL
IPv4&IPv6
使用以太网帧头信息(如源MAC、目的MAC、二层协议类型等)来定义规则。
4000~4999
用户自定义ACL
IPv4&IPv6
使用报文头、偏移位置、字符串掩码和用户自定义字符串来定义规则。
5000~5999
用户ACL
IPv4
可使用源/目的IP地址、协议类型、ICMP类型、TCP/UDP端口等来定义规则。
6000~6031
基本ACL6
IPv6
可使用源IPv6地址、分片信息和生效时间段来定义规则。
2000~2999
高级ACL6
IPv6
可使用源/目的IPv6地址、协议类型、ICMPv6类型、TCP/UDP端口、生效时间段等来定义规则。
3000~3999
基础ACL
  • 表号:2000-2999
  • 特点:只能基于源IP地址对包进行过滤
高级ACL
  • 表号:3000-3999
  • 特点:可以基于源IP地址、目标IP地址、目标端口号、协议等对包进行过滤
其他类型的ACL
  • 二层ACL:4000-4999
  • 用户自定义ACL:5000-5999

参考资料

  • 什么是ACL - 华为
  • ACL基本概念及原理介绍 - 知乎
  • ACL(访问控制列表)详解-CSDN博客
  • 还不懂什么是ACL?看完这篇就没有不会的了 - 知乎
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐