3. 访问控制基础与H3C实现
访问控制列表(ACL)是园区网安全策略落地的第一道闸门。它本质上是一组有序的规则集合,每条规则用“匹配条件 + 动作”描述:匹配条件通常由源/目的地址、协议类型、端口号、时间范围、用户身份等要素组合而成,动作则是 permit(放行)或 deny(丢弃)。设备在转发报文时,会按 ACL 中规则的排列顺序自上而下逐条比对,一旦命中某条规则就立即执行其动作,不再继续向下匹配;若所有规则都未命中,则执行该 ACL 的默认动作——H3C 设备上标准 ACL 和高级 ACL 的默认动作均为 deny(丢弃)。理解“顺序匹配、命中即停、末尾隐含拒绝”这三条,是掌握 ACL 的关键。
ACL 按编号范围分为几类:基本 ACL(2000~2999)只能匹配源 IP 地址;高级 ACL(3000~3999)可匹配源/目的 IP、协议号、源/目的端口、TCP 标志、ICMP 类型等;二层 ACL(4000~4999)匹配 MAC 地址;用户 ACL(6000~6999)匹配用户身份。编号范围只是约定,真正决定能力的是规则中可用的匹配字段。基本 ACL 适合“只关心谁在访问”的粗粒度场景,高级 ACL 则用于“谁、用什么协议、访问谁的哪个服务”的精细控制。
包过滤的匹配逻辑与部署位置
包过滤是 ACL 最典型的应用。设备在接口上通过 packet-filter 命令绑定 ACL,对入方向(inbound)或出方向(outbound)的报文进行过滤。入方向过滤发生在报文进入设备、查表转发之前,能尽早丢弃非法流量,节省转发资源;出方向过滤发生在报文即将从接口发出时。园区网中通常建议在靠近源端的入方向部署过滤,以减少无效流量穿越核心。
下面这张图展示了一个高级 ACL 在接口入方向上的匹配与转发决策过程,以及规则顺序对结果的影响:
图中示例说明了一个常见陷阱:如果先写了一条宽泛的 permit 规则,后面再写精细的 deny 规则,精细规则永远不会生效。因此配置 ACL 时应遵循“先精确、后宽泛”的排序原则,把针对特定主机、特定端口的规则放在前面,把针对整个网段的规则放在后面。
高级 ACL 的配置要点
高级 ACL 的规则语法比基本 ACL 复杂,但表达能力强。以 H3C Comware 平台为例,创建高级 ACL 并添加规则的典型命令如下:
acl advanced 3000
rule 5 permit tcp source 10.1.1.0 0.0.0.255 destination 192.168.10.10 0 destination-port eq 80
rule 10 deny ip source 10.1.1.0 0.0.0.255 destination 192.168.20.0 0.0.0.255
rule 20 permit ip source 10.1.1.0 0.0.0.255
quit
interface GigabitEthernet1/0/1
packet-filter 3000 inbound
quit
其中 0.0.0.255 是通配符掩码(反掩码),0 表示必须匹配,1 表示忽略。例如 10.1.1.0 0.0.0.255 表示匹配 10.1.1.0/24 整个网段。规则序号以 5 为步长便于后续插入,例如需要在 rule 5 和 rule 10 之间插入新规则时,可使用 rule 7。配置完成后可用 display acl 3000 查看规则及匹配计数,用 display packet-filter interface GigabitEthernet1/0/1 inbound 查看接口绑定状态。
基于时间的 ACL
园区网中常有“上班时间禁止访问娱乐网站、下班后放开”这类需求,这就需要基于时间的 ACL。实现方式是先定义时间范围(time-range),再在 ACL 规则中引用该时间范围。时间范围支持周期时间段(periodic)和绝对时间段(absolute)两种。周期时间段按周循环,例如:
time-range work-time 08:30 to 18:00 working-day
time-range off-work 18:00 to 23:59 daily
acl advanced 3001
rule 5 deny tcp source 10.1.1.0 0.0.0.255 destination 203.0.113.50 0 destination-port eq 443 time-range work-time
rule 10 permit ip source 10.1.1.0 0.0.0.255
quit
上述配置表示:工作日 08:30~18:00 禁止 10.1.1.0/24 网段访问 203.0.113.50 的 HTTPS 服务,其余时间放行。需要注意,时间范围依赖设备系统时钟,必须确保设备已通过 NTP 同步到准确时间,否则策略会在错误的时间生效。此外,时间范围只对引用它的规则生效,不影响其他规则。
基于用户的 ACL
传统 ACL 基于 IP 地址识别用户,一旦用户更换 IP 或使用 DHCP 动态获取地址,策略就可能失效或误伤。基于用户的 ACL(用户 ACL,编号 6000~6999)通过引用身份识别用户,通常与 Portal、802.1X 等认证方式配合。其基本思路是:用户认证通过后,设备获取到用户名,用户 ACL 规则中直接匹配用户名,从而实现“按人控制”而非“按 IP 控制”。
acl user-defined 6000
rule 5 permit user-group network-admin
rule 10 deny user-group guest
quit
用户 ACL 的匹配对象是用户组或用户名,因此它必须部署在能够获取用户身份的认证接入设备上,且需要与 AAA 认证流程联动。相比 IP 型 ACL,用户 ACL 更适合移动办公、访客接入等场景,但配置复杂度也更高,需要先规划好用户组与权限映射关系。
display acl 确认规则顺序,变更后通过匹配计数和业务连通性测试验证效果;对于关键链路,可先在测试接口验证再推广到生产接口。