欢迎光临
我们一直在努力

ACL详解

引言

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


ACL与防火墙的区别

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

ACL是实现访问控制的基础技术之一,防火墙是在其基础上扩展发展的安全设备。


防火墙如何延续ACL的使用

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

一个数据包经过防火墙时,大致流程如下:

  • 数据包到达
  • 接口接收数据
  • ACL规则匹配(访问控制)
  • NAT地址转换(如果需要)
  • 状态检测 / 会话检查
  • 策略判断
  • 允许转发 或 丢弃

  • 二、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等)
    • 过滤流程:
  • 创建ACL规则: 定义允许或拒绝的数据包特征
  • 应用ACL规则: 将规则应用到具体接口方向
  • 匹配数据包: 数据包通过接口时按照规则匹配
  • 执行动作: 根据匹配结果允许或拒绝数据包通过

  • 标准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?看完这篇就没有不会的了 – 知乎
    赞(0)
    未经允许不得转载:171主机测评 » ACL详解
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址