访问控制列表(ACL,Access Control List)是一种基于包过滤的安全技术,用于在网络设备上定义规则,决定哪些数据包可以通过、哪些需要被拒绝。它广泛应用于路由器、交换机、防火墙等设备,实现流量控制和安全隔离。
1. 基本概念
- 定义:ACL 是由一组规则组成的集合,每条规则描述报文匹配条件(如源/目的 IP、端口号、协议类型)。设备根据这些规则对流量进行过滤。
- 作用:通过 ACL 可以控制用户对网络资源的访问,防止非法访问,提升网络安全性和服务质量。
- 本质:ACL 就像一个“报文过滤器”,规则是过滤器的滤芯,决定哪些流量被允许或阻止。
2. ACL 的分类
标准 ACL
- 仅基于源 IP 地址进行过滤。
- 常用于简单的访问控制。
- 编号范围:2000–2999。
扩展 ACL
- 可基于源/目的 IP、协议类型、端口号进行更精细的过滤。
- 编号范围:3000–3999。
二层 ACL
- 基于 MAC 地址、VLAN 等二层信息进行过滤。
- 编号范围:4000–4999。
3. 工作原理
方向选择
- Inbound(入方向):流量进入接口时过滤,节省设备资源。
- Outbound(出方向):流量离开接口时过滤,更灵活。
匹配顺序
- ACL 按规则编号顺序匹配,从上到下。
- 一旦匹配成功,不再继续匹配后续规则。
隐式规则
- 默认存在隐式
deny any,即未匹配的流量会被拒绝
- 默认存在隐式
4. ACL 应用场景与接口类型
路由器接口
- 物理接口:WAN 入方向阻止非法外部访问;LAN 出方向限制内部访问外部资源。
- 逻辑接口:子接口/VLAN 接口用于部门隔离。
三层交换机接口
- SVI(VLAN 接口):跨 VLAN 流量控制。
- 三层物理端口:直接应用 ACL。
防火墙接口
- 安全区域边界:定义不同安全级别流量规则。
- DMZ 接口:限制外部访问特定服务。
无线网络接口
- WLC 虚拟接口:控制无线用户访问有线网络。
虚拟化与云环境
- vSwitch 端口:限制 VM 间流量。
- 云平台安全组/ACL:控制虚拟网络接口。
特殊接口
- VPN/GRE 隧道:控制隧道内协议。
- Loopback 接口:保护设备管理流量。
5. 配置步骤(H3C为例)
步骤 1:创建 ACL
acl basic 2000
rule 5 deny source 192.168.1.0 0.0.0.255
rule 10 permit
acl advanced 3000
rule 5 deny tcp destination-port eq 80
rule 10 permit ip
步骤 2:绑定到接口
interface GigabitEthernet1/0/1
packet-filter 2000 inbound
packet-filter 3000 outbound
步骤 3:验证
display acl 2000
display packet-filter interface GigabitEthernet1/0/1
6. 典型场景
- 禁止特定 IP 出网
acl basic 2000
rule deny source 192.168.1.100 0
rule permit
interface GigabitEthernet1/0/1
packet-filter 2000 outbound
- 限制访问内部服务器
acl advanced 3000
rule deny tcp destination 10.1.1.10 0 destination-port eq 22
rule permit ip
interface GigabitEthernet1/0/2
packet-filter 3000 inbound
- 跨 VLAN 控制
acl advanced 3000
rule deny ip source 192.168.10.0 0.0.0.255 destination 192.168.20.100 0
rule permit ip
interface Vlan-interface 10
packet-filter 3000 inbound
7. 验证与排查
- 查看绑定状态:
display packet-filter interface Vlan-interface 10
- 查看匹配统计:
display packet-filter statistics interface Vlan-interface 10 inbound
常见问题:
- 未生效:检查绑定方向、规则匹配。
- 误封锁:确认末尾是否有
permit ip。 - 性能下降:优化规则顺序,减少复杂匹配。
8. 实践清单
- [ ] 在 ACL 末尾显式添加
permit ip。 - [ ] 使用编号间隔(如 5、10、15)便于后续插入规则。
- [ ] 高频规则置顶,减少处理延迟。
- [ ] 入方向优先,节省设备资源。
- [ ] 出方向用于灵活控制返回流量。
- [ ] 定期检查
display packet-filter statistics,确认规则命中情况。
9. 跨厂商 ACL/接口绑定对比表
| 厂商/设备类型 | ACL 类型范围 | 接口绑定命令 | 方向支持 | 默认行为 | 特殊注意事项 |
|---|---|---|---|---|---|
| H3C | 基本 ACL (2000–2999) 高级 ACL (3000–3999) 二层 ACL (4000–4999) | packet-filter ACL号> inbound/outbound |
支持 inbound/outbound | 未匹配流量默认拒绝 (隐式 deny any) | 规则按配置顺序匹配,需显式 permit ip 放行;编号需手动规划 |
| 华为 (VRP) | 基本 ACL (2000–2999) 高级 ACL (3000–3999) 二层 ACL (4000–4999) | traffic-filter acl ACL号> inbound/outbound |
支持 inbound/outbound | 未匹配流量默认拒绝 | ACL 可直接应用在接口或安全策略;规则按编号升序匹配 |
| Juniper (Junos) | Firewall filter (类似 ACL) 基于 term 定义匹配条件 | set interfaces unit 0 family inet filter input/output filter名> |
支持 input/output | 未匹配流量默认允许 (需显式 deny any) | term 顺序严格,最后需加 then accept 或 then discard;filter 可复用 |
| FortiGate (FortiOS) | Policy (基于源/目的/服务/动作) 无独立 ACL 概念 | 在策略中定义源接口/目的接口/服务/动作 | 方向通过策略定义 (src → dst) | 未匹配流量默认拒绝 | 策略优先级按顺序匹配;支持 zone/对象化管理;更偏向防火墙策略模型 |
差异总结
- H3C/华为:命令行风格接近,ACL号段相同,接口绑定方式类似(
packet-filtervstraffic-filter)。 - Juniper:采用 firewall filter,逻辑更接近策略集,默认允许,需显式 deny。
- FortiGate:无传统 ACL,完全基于策略 (policy),方向通过源/目的接口定义,默认拒绝。