本章目录(6)On this page (6)
  1. 写 ACL 之前先想清楚
  2. 表达什么
  3. 一组完整的区间策略
  4. 一段能用的配置
  5. 约定
  6. 几个反面例子
文章Articles

访问控制列表

用标准/扩展 ACL 表达「谁为了什么能访问什么」,一组完整的区间策略矩阵,以及让规则保持可读、可审计的编写约定。

更新Updated 2026.10.17networkaclsecurity

写 ACL 之前先想清楚

ACL 是逐条匹配、第一条命中就结束的列表。这决定了它有两个反直觉的性质:

  • 顺序即语义。同一条 permit 在第 1 位和第 90 位,结果可能完全相反。
  • 末尾隐含 deny。但很多设备默认末尾还有一条 permit-any 的隐含规则,所以「忘了写 deny」经常表现为「全通」而不是「全断」。

所以每次下手前先问一句:这条规则是唯一的例外,还是一堆例外里的一条?如果是后者,拆成两层:先粗粒度放行一批,再在下一层精修。

VLAN 隔离不等于真正安全——隔离只是把「默认全通」变成了「默认分段可达」,真正决定「能不能访问」的还是 ACL。分区负责「谁和谁之间没有路」,ACL 负责「有路的那些,能做什么」。

表达什么

一条值得维护的 ACL 应该能回答三个问题。写不出答案的规则不要加。

问题 例
谁 办公网段 10.10.10.0/24
对谁 NAS 文件服务 10.10.90.20
做什么 只放行 TCP 445 与 443,其余拒绝

ACL 匹配流程

一组完整的区间策略

规划阶段就把区间关系写成矩阵,比一条条试出来的结果干净得多:

从 → 到 策略 理由
生活网 → 办公网 全部禁止 私人设备不应接触任何办公资产
生活网 → 生产网 全部禁止 同上,生产网是策略最严的一段
访客网 → 所有内网 全部禁止 访客只拿互联网,RFC1918 全段拒绝
办公网 → 生产网 默认拒绝,仅必要业务端口 最核心的数据放在最后一道门后面
办公网 → NAS 允许 SMB、HTTPS 集中存储的正常用法就这两个协议
办公网 → 域控 DNS、LDAP、Kerberos、SMB、RPC 域服务的最小必要集,多一个都不给
生产网 → 域控 同上 生产终端同样只走域服务端口
管理区 → 任意 运维访问,按需放行 管理区是策略的出口,不是流量的入口

三条原则贯穿全表:

  1. 生活网和访客网对内网一律全禁。它们不需要「少量访问」,它们需要「零访问」——开了小口子迟早被用成大洞。
  2. 办公网到生产网默认拒绝。例外按业务端口逐条加,加一条记一条理由。
  3. 所有终端到域控只走域服务端口。把「终端能到域控」收窄成「终端能到域控的必要端口」,横向移动最常用的 SMB/RPC 之外的通道就关掉了。

一段能用的配置

# 1) 办公网访问 NAS:只走文件与 Web
ip access-list extended ACL-OFFICE-TO-NAS
 permit tcp 10.10.10.0 0.0.0.255 host 10.10.90.20 eq 445
 permit tcp 10.10.10.0 0.0.0.255 host 10.10.90.20 eq 443
 deny   ip 10.10.10.0 0.0.0.255 host 10.10.90.20 log
 remark === 到此为止,不要再加允许 ===
exit

# 2) 挂到接口上:入方向
interface GigabitEthernet0/0/1
 ip access-group ACL-OFFICE-TO-NAS in
exit

deny ... log 那行是关键。不带 log 的 deny 是哑的:它默默丢包,运维看不出「是防火墙拦的」还是「对方没开机」。开了日志之后,每一次拦截都会留下一条可查的记录。

约定

  1. 命名不编号。名字必须能读出来管什么,ACL-OFFICE-TO-NAS 优于 ACL-102。
  2. 末尾写 remark 收口。告诉下一个改配置的人:这段到此为止,别再往下加。
  3. 注释写理由不写动作。# 加这条是因为备份系统不支持新版协议 比 # 放行到 10.10.1.5 有用得多。
  4. 变更前先看命中计数。show access-lists 里的匹配数是 0 的规则多半是死规则。

几个反面例子

  • 万能放行:permit ip any any 出现在任何非测试环境,都是应该立刻去查是谁加的信号。
  • 按源 IP 一条条堆。源有 30 个时,一条 10.10.10.0 0.0.0.255 就够,逐条列只是让配置变长。
  • 只写 permit 不写 deny,然后祈祷末尾隐含规则是拒绝。不同厂商的默认不一样,有的还分方向不同默认值。
  • 给生活网「临时开一条」。私人设备连不上办公打印机是最常见的开场白,临时开一条的下场是它永远留在表里。生活网要访问什么,让它走访客通道。