ACL详解(从防火墙-->ACL)
本文深入介绍了访问控制列表(ACL)的基础知识及其在网络中的应用。ACL作为防火墙的前身,是由多条允许/拒绝规则组成的流量过滤机制,通过匹配数据包的源/目标IP、端口和协议等特征实现访问控制。文章详细解析了ACL的匹配机制、过滤原理、分类标准以及配置示例,包括标准ACL和高级ACL的区别,以及数字型与命名型ACL的特点。同时阐述了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)