ACL (Access Control List) 是什么?
访问控制列表 (ACL) 是网络设备 (路由器、交换机、防火墙) 上的一组**按顺序排列的规则**,用于**匹配数据包头部信息**并决定 **允许 (Permit) 或拒绝** 该数据包通过。是**包过滤防火墙**的核心实现机制。
ACL 如何工作 (处理逻辑)
- 自上而下顺序匹配:数据包进入接口,按规则编号/顺序逐条比对
- 首次匹配即停止 (First Match Wins):匹配到 Permit → 转发;匹配到 Deny → 丢弃
- 隐性拒绝:所有显式规则后,隐含一条 Deny Any Any — 未匹配任何规则默认丢弃
- 方向性:应用在接口的 Inbound (入站) 或 Outbound (出站) 方向
ACL 匹配字段 (基于 IP 头部 - Layer 3/4)
| 字段 | 标准 ACL | 扩展 ACL | 说明 |
| 源 IP 地址 | ✓ | ✓ | 单个 IP、网段 (CIDR/通配符掩码)、Any |
| 目的 IP 地址 | ✗ | ✓ | 同上 |
| 协议号 | ✗ | ✓ | TCP(6), UDP(17), ICMP(1), IP(0=All), ESP(50), AH(51) 等 |
| 源端口 | ✗ | ✓ | TCP/UDP 源端口 (eq, neq, gt, lt, range) |
| 目的端口 | ✗ | ✓ | TCP/UDP 目的端口 (eq 80, range 20 21 等) |
| ICMP 类型/代码 | ✗ | ✓ | echo-request(8), echo-reply(0), unreachable(3) 等 |
| TCP 标志位 | ✗ | ✓ (部分厂商) | SYN, ACK, FIN, RST, PSH, URG (如 established 关键字) |
| ToS/DSCP/Precedence | ✗ | ✓ (部分) | QoS 标记匹配 |
ACL 类型与编号范围 (Cisco 体系为例)
| 类型 | 编号范围 | 特点 | 适用场景 |
| 标准数字 ACL | 1-99, 1300-1999 | 仅匹配源 IP | 简单源地址过滤、路由过滤、SNMP 限制 |
| 扩展数字 ACL | 100-199, 2000-2699 | 5 元组全匹配 (源/目的 IP, 协议, 源/目的端口) | **最常用**:精细流量控制、防火墙策略 |
| 命名 ACL | 自定义名称 | 标准/扩展均可命名,支持重排序、注释、更易读 | **推荐生产环境使用**,便于维护 |
| IPv6 ACL | 仅命名 | 匹配 IPv6 头部字段 (源/目的前缀, Next Header, Flow Label) | IPv6 网络 |
| 动态/锁定/反射/基于时间 ACL | 特殊类型 | Lock-and-Key (用户认证后临时开放), Reflexive (会话返程), Time-based (时间窗口) | 特殊业务需求 |
ACL 提升网络安全的具体方式
1. 边界准入控制 (North-South)
- Internet 边界路由器 Inbound ACL:仅允许必要服务端口 (80/443/25/53 等) 进入 DMZ/内网
- Outbound ACL:限制内网主机只能访问必要外部资源 (阻断恶意软件 C2、数据外泄)
2. 网络分段/微隔离 (East-West)
- 核心交换机/汇聚层 VLAN 接口 (SVI) 应用 VACL (VLAN ACL) / PACL (Port ACL) / RACL (Router ACL)
- 例如:Web 层只能访问 App 层 8080;App 层只能访问 DB 层 3306/1433;管理网段只允许跳板机/堡垒机 SSH
3. 基础设施保护 (Control Plane Policing)
- 保护路由器/交换机 CPU:仅允许受信管理 IP (SSH/HTTPS/SNMP/NETCONF)、路由协议邻居 (OSPF/BGP 认证)、NTP 源
- 阻断扫描、DoS 攻击消耗 CPU
4. 防止 IP 欺骗
- 入站 ACL 阻断源 IP 为私有地址 (RFC 1918)、回环、组播、保留地址的包
- 出站 ACL 确保源 IP 仅为本网段合法地址 (BCP 38 / uRPF 配合)
5. 协议/服务强化
- 显式拒绝高危协议/端口:Telnet (23), TFTP (69), SNMP (161/162) 非管理网段、SMB (445) 跨段、RDP (3389) 直通互联网
- 仅允许 SSH (22), HTTPS (443), 安全管理协议
标准 ACL vs 扩展 ACL 部署位置原则
- 标准 ACL (仅源 IP): **尽可能靠近目的端** 应用 — 免得误阻断同源去其他目的的流量
- 扩展 ACL (五元组): **尽可能靠近源端** 应用 — 早丢弃,节省带宽/CPU,精准控制
命名 ACL 优势与编写规范
ip access-list extended FW-IN-INTERNET
remark ### Allow Web to DMZ Web Servers ###
10 permit tcp any host 10.1.10.10 eq 80
20 permit tcp any host 10.1.10.10 eq 443
remark ### Allow DNS to Internal DNS ###
30 permit udp any host 10.1.5.5 eq 53
remark ### Allow VPN Return Traffic (Established) ###
40 permit tcp any any established
remark ### Deny & Log Suspicious ###
50 deny ip any 10.0.0.0 0.255.255.255 log
60 deny ip any host 255.255.255.255 log
remark ### Implicit Deny All (Explicit for Logging) ###
70 deny ip any any log
!
interface GigabitEthernet0/0
ip access-group FW-IN-INTERNET in
规范要点:
- 命名语义化: `FW-IN-INTERNET`, `VLAN10-OUT-DB`, `MGMT-IN-JUMPHOST`
- 预留编号间隔 (10, 20, 30...) 方便插入
- 充分使用 `remark` 注释业务含义
- 显式 `deny ip any any log` 便于审计隐性拒绝流量
- 定期 `show access-lists` 检查 hitcount,清理零命中/冗余规则
ACL 与现代安全技术对比
| 技术 | 层级 | 状态感知 | 应用识别 | 性能 | 典型用途 |
| ACL (Router/Switch) | L3/L4 | 无 (无状态) | 无 | 线速 (硬件转发) | 高速骨干、基础分段、反欺骗 |
| Stateful Firewall | L3/L4 | 有 (连接表) | 有限 | 高 (专用 ASIC) | 边界防护、状态检测 |
| NGFW (Next-Gen FW) | L3-L7 | 有 | 强 (App-ID, User-ID, Content-ID) | 中高 | 企业边界、数据中心、云边界 |
| Micro-segmentation (NSX, Cilium, Calico) | L3-L7 | 有 | 强 (Workload 标签) | 分布式 (内核/用户态) | 东西向零信任、容器/云原生 |
ACL 常见错误与避坑
- ❌ **顺序错误**: Deny 在 Permit 前导致合法流量被阻;宽泛 Permit 在具体 Deny 前导致 Deny 永不生效
- ❌ **隐性拒绝无日志**: 看不见被拒绝的流量 → 显式加 `deny ip any any log`
- ❌ **通配符掩码算错**: 0.0.0.255 ≠ 255.255.255.0 — 反码 vs 掩码
- ❌ **双向流量未考虑**: 只做 Inbound ACL,回程包被隐性拒绝 → 必须允许 `established` 或配对 Outbound ACL
- ❌ **规则膨胀**: 成百上千条难维护 → 用对象组、ASG、迁移 NGFW/微隔离
- ❌ **忽略 IPv6**: 只配 IPv4 ACL,IPv6 裸奔 → 必须配 IPv6 ACL
从 ACL 进化到现代网络安全
- ACL → 无状态包过滤,高性能,粗粒度
- Stateful Firewall → 连接感知,防欺骗,基础边界
- NGFW → 应用识别, 用户身份, 威胁防护 (IPS, AV, Sandbox), TLS 解密
- Zero Trust / Micro-segmentation → 身份为边界, 最小权限, 持续验证, 东西向加密
- SASE / SSE → 云原生融合, 随身安全, 全局策略
总结
ACL 是网络设备原生的**高性能无状态包过滤机制**,通过匹配 IP 头部 5 元组实现基础准入控制。**正确编写、有序部署、显式日志、定期清理** 是发挥效用的关键。但 ACL 无法替代状态检测、应用识别、威胁防护、身份感知等现代安全能力。在纵深防御体系中,ACL 承担**骨干网高速过滤、基础设施保护、反欺骗、辅助分段**角色;核心安全边界应由 NGFW/零信任架构承担。