被绕过的防线与救命的配置:ACL 在漏洞攻防中的双重角色
字数 2539 2025-08-30 06:50:12

ACL(访问控制列表)在网络安全中的实践指南

一、ACL基础概念与工作原理

1.1 ACL定义与分类

ACL(Access Control Lists)是一种基于包过滤的访问控制技术,它根据预先定义的规则对通过网络设备的数据包进行检查和过滤,决定是否允许通过或拒绝。

主要类型

  • 标准ACL:基于源IP地址,编号为1-99
    • 示例:只允许特定IP地址访问网络
  • 扩展ACL:基于源/目的IP地址、协议、端口等,编号为100-199
    • 示例:允许特定IP通过HTTP协议访问服务器

1.2 ACL工作原理

当数据包到达网络设备时:

  1. 设备按照ACL规则的顺序逐一检查
  2. 找到第一个匹配的规则后停止检查
  3. 如果没有匹配规则,数据包将被默认拒绝(隐含"deny any"规则)

示例配置

access-list 101 deny tcp host 192.168.1.100 any eq 80
access-list 101 permit ip any any
interface GigabitEthernet0/0
 ip access-group 101 in

此配置拒绝来自192.168.1.100的HTTP流量(端口80),允许其他流量。

1.3 相关技术背景

  • MPLS(多协议标签交换):基于标签的路由技术,通过短标签而非长地址进行数据转发
  • 伪线(Pseudowire, PW):在分组交换网络上模拟点对点连接,常用于MPLS网络中

二、ACL绕过漏洞分析与案例

2.1 CVE-2024-20315(Cisco IOS XR MPLS接口ACL绕过)

漏洞原因

  • MPLS ingress接口启用ACL后,内部接口上下文与查找键(lookup key)关联错误
  • 导致数据包通过MPLS标签处理绕过ACL检测

影响

  • 攻击者可访问本应被ACL阻止的资源
  • 可能导致数据泄露或服务中断
  • 影响版本:7.9、7.10等旧版本

漏洞复现示例
攻击者构造数据包:

Ethernet / MPLS(label=1000) / IP(src=10.0.0.5, dst=10.1.1.1) / TCP(sport=12345, dport=80) / Payload

尽管有ACL配置:

access-list 101 deny ip host 10.0.0.5 any
access-list 101 permit ip any any
interface MPLS0/0
 ip access-group 101 in

数据包仍能绕过ACL检查到达目标。

修复建议

  1. 首选方案:升级至IOS XR 7.9.1、7.9.2、7.10.2或更高版本
  2. 临时措施:移除MPLS ingress ACL,改在egress方向部署ACL策略
    no ip access-group 101 in
    interface GigabitEthernet0/1
    ip access-group 101 out
    

2.2 CVE-2024-20322(Cisco IOS XR PW-Ether接口ACL绕过)

漏洞原因

  • PW-Ether(以太网伪线)接口lookup key处理不当
  • 导致ingress ACL失效

影响

  • 攻击者可访问受限资源
  • 影响伪线连接的安全性
  • 影响版本:7.10、7.11等版本

修复方法

  • 升级至7.10.2或7.11.2+
  • 无有效临时措施,建议隔离受影响接口

2.3 CVE-2023-20191(Cisco IOS XR MPLS ingress ACL缺陷)

缺陷点

  • 启用ingress ACL时,对显式空标签(explicit null)或标签解聚合(deaggregation)处理存在缺陷
  • ACL deny规则失效,数据包被错误转发

修复建议

  1. 升级至7.7.21、7.9.2、7.10.1或应用对应SMU补丁
  2. 临时移除ingress ACL,改用egress ACL

2.4 CVE-2023-20190(经典ACL压缩功能缺陷)

问题描述

  • ACL压缩模块在编码目标地址范围时异常
  • 压缩后的行为与原ACL定义不一致,导致deny条件失效

修复方法

  1. 升级至带补丁的版本
  2. 禁用经典压缩,使用SVR模式ACL:
    ipv4 access-list SVR_ACL
    10 deny ip host 192.168.100.100 any
    20 permit ip any any
    

三、ACL配置修复案例

3.1 CVE-2021-36934 "SeriousSAM"补丁

背景

  • Windows默认允许用户对SAM、SECURITY、SYSTEM等hive文件在shadow copy中读访问
  • 攻击者可能读取敏感信息如用户凭据

ACL修复方案

icacls C:\Windows\System32\config\*.* /inheritance:e
vssadmin delete shadows /all /quiet
Checkpoint-Computer -Description "After SeriousSAM fix" -RestorePointType MODIFY_SETTINGS

验证方法

Get-Acl C:\Windows\System32\config\SAM | Select-Object Path, AreAccessRulesProtected

输出AreAccessRulesProtected为False表示继承关闭,ACL修复成功。

3.2 CVE-2020-0674 JavaScript引擎漏洞缓解

背景

  • IE JavaScript引擎漏洞允许远程执行恶意脚本

ACL解决方案

icacls "%PROGRAMFILES%\Internet Explorer\jscript.dll" /deny "Users:(R)"
icacls "%PROGRAMFILES%\Internet Explorer\jscript.dll" /grant "Administrators:(R,X)"

移除普通用户的读权限,仅允许管理员读取和执行。

四、ACL实践挑战与最佳实践

4.1 当前ACL应用面临的挑战

  1. 最小权限原则的实现难度:精确配置ACL复杂耗时
  2. 入站ACL的普遍缺陷:尤其在处理MPLS或伪线接口时
  3. 配置与底层实现的脱节:固件升级可能导致ACL失效
  4. 管理复杂性与自动化需求:手动管理低效易出错
  5. 动态环境与可扩展性:云环境和IoT设备增多增加管理难度
  6. 性能与安全性的平衡:复杂ACL可能影响网络性能
  7. 可见性与监控:缺乏日志和监控工具难以发现ACL绕过

4.2 ACL最佳实践

  1. 遵循最小权限原则

    • 确保ACL规则精确匹配需求
    • 为每条规则添加注释
    ipv4 access-list SECURE_ACL
    10 deny ip host 192.168.1.100 any ! Block malicious host
    20 permit tcp any host 192.168.1.200 eq 443 ! Allow HTTPS to server
    
  2. 优先评估入站与出站策略

    • 在入站ACL存在缺陷的平台优先考虑出站ACL
    • 结合防火墙规则增强防护
  3. 定期审计与测试

    • 每月检查ACL配置有效性
    • 使用工具如nmap扫描受限端口测试deny规则
  4. 及时应用补丁与升级

    • 建立补丁管理流程
    • 确保ACL相关漏洞及时修复
  5. 整合监控与分析工具

    • 部署SIEM系统或NetFlow分析工具
    • 实时监控ACL拒绝事件
  6. 引入自动化管理

    • 使用Ansible、SDN控制器等工具动态调整ACL
    • 示例Ansible脚本:
    - name: Apply ACL to Cisco IOS XR
      cisco.iosxr.iosxr_acl:
        config:
          acls:
            - name: SECURE_ACL
              aces:
                - sequence: 10
                  deny:
                    protocol: ip
                    source:
                      host: 192.168.1.100
                    destination:
                      any: true
                - sequence: 20
                  permit:
                    protocol: tcp
                    source:
                      any: true
                    destination:
                      host: 192.168.1.200
                      port_protocol:
                        eq: 443
        state: merged
    

五、附录:ACL漏洞总结表

漏洞编号 影响接口 主要问题 修复版本 临时措施
CVE-2024-20315 MPLS Lookup key错误,ACL绕过 7.9.1, 7.9.2, 7.10.2+ 使用egress ACL
CVE-2024-20322 PW-Ether Lookup key错误,ACL绕过 7.10.2, 7.11.2+ 无,需升级
CVE-2023-20191 MPLS Explicit-null处理缺陷 7.7.21, 7.9.2, 7.10.1+ 使用egress ACL
CVE-2023-20190 任意(压缩ACL) 压缩后deny规则失效 最新补丁版本 禁用压缩,使用SVR模式
ACL(访问控制列表)在网络安全中的实践指南 一、ACL基础概念与工作原理 1.1 ACL定义与分类 ACL(Access Control Lists)是一种基于包过滤的访问控制技术,它根据预先定义的规则对通过网络设备的数据包进行检查和过滤,决定是否允许通过或拒绝。 主要类型 : 标准ACL :基于源IP地址,编号为1-99 示例:只允许特定IP地址访问网络 扩展ACL :基于源/目的IP地址、协议、端口等,编号为100-199 示例:允许特定IP通过HTTP协议访问服务器 1.2 ACL工作原理 当数据包到达网络设备时: 设备按照ACL规则的顺序逐一检查 找到第一个匹配的规则后停止检查 如果没有匹配规则,数据包将被默认拒绝(隐含"deny any"规则) 示例配置 : 此配置拒绝来自192.168.1.100的HTTP流量(端口80),允许其他流量。 1.3 相关技术背景 MPLS(多协议标签交换) :基于标签的路由技术,通过短标签而非长地址进行数据转发 伪线(Pseudowire, PW) :在分组交换网络上模拟点对点连接,常用于MPLS网络中 二、ACL绕过漏洞分析与案例 2.1 CVE-2024-20315(Cisco IOS XR MPLS接口ACL绕过) 漏洞原因 : MPLS ingress接口启用ACL后,内部接口上下文与查找键(lookup key)关联错误 导致数据包通过MPLS标签处理绕过ACL检测 影响 : 攻击者可访问本应被ACL阻止的资源 可能导致数据泄露或服务中断 影响版本:7.9、7.10等旧版本 漏洞复现示例 : 攻击者构造数据包: 尽管有ACL配置: 数据包仍能绕过ACL检查到达目标。 修复建议 : 首选方案:升级至IOS XR 7.9.1、7.9.2、7.10.2或更高版本 临时措施:移除MPLS ingress ACL,改在egress方向部署ACL策略 2.2 CVE-2024-20322(Cisco IOS XR PW-Ether接口ACL绕过) 漏洞原因 : PW-Ether(以太网伪线)接口lookup key处理不当 导致ingress ACL失效 影响 : 攻击者可访问受限资源 影响伪线连接的安全性 影响版本:7.10、7.11等版本 修复方法 : 升级至7.10.2或7.11.2+ 无有效临时措施,建议隔离受影响接口 2.3 CVE-2023-20191(Cisco IOS XR MPLS ingress ACL缺陷) 缺陷点 : 启用ingress ACL时,对显式空标签(explicit null)或标签解聚合(deaggregation)处理存在缺陷 ACL deny规则失效,数据包被错误转发 修复建议 : 升级至7.7.21、7.9.2、7.10.1或应用对应SMU补丁 临时移除ingress ACL,改用egress ACL 2.4 CVE-2023-20190(经典ACL压缩功能缺陷) 问题描述 : ACL压缩模块在编码目标地址范围时异常 压缩后的行为与原ACL定义不一致,导致deny条件失效 修复方法 : 升级至带补丁的版本 禁用经典压缩,使用SVR模式ACL: 三、ACL配置修复案例 3.1 CVE-2021-36934 "SeriousSAM"补丁 背景 : Windows默认允许用户对SAM、SECURITY、SYSTEM等hive文件在shadow copy中读访问 攻击者可能读取敏感信息如用户凭据 ACL修复方案 : 验证方法 : 输出AreAccessRulesProtected为False表示继承关闭,ACL修复成功。 3.2 CVE-2020-0674 JavaScript引擎漏洞缓解 背景 : IE JavaScript引擎漏洞允许远程执行恶意脚本 ACL解决方案 : 移除普通用户的读权限,仅允许管理员读取和执行。 四、ACL实践挑战与最佳实践 4.1 当前ACL应用面临的挑战 最小权限原则的实现难度 :精确配置ACL复杂耗时 入站ACL的普遍缺陷 :尤其在处理MPLS或伪线接口时 配置与底层实现的脱节 :固件升级可能导致ACL失效 管理复杂性与自动化需求 :手动管理低效易出错 动态环境与可扩展性 :云环境和IoT设备增多增加管理难度 性能与安全性的平衡 :复杂ACL可能影响网络性能 可见性与监控 :缺乏日志和监控工具难以发现ACL绕过 4.2 ACL最佳实践 遵循最小权限原则 : 确保ACL规则精确匹配需求 为每条规则添加注释 优先评估入站与出站策略 : 在入站ACL存在缺陷的平台优先考虑出站ACL 结合防火墙规则增强防护 定期审计与测试 : 每月检查ACL配置有效性 使用工具如nmap扫描受限端口测试deny规则 及时应用补丁与升级 : 建立补丁管理流程 确保ACL相关漏洞及时修复 整合监控与分析工具 : 部署SIEM系统或NetFlow分析工具 实时监控ACL拒绝事件 引入自动化管理 : 使用Ansible、SDN控制器等工具动态调整ACL 示例Ansible脚本: 五、附录:ACL漏洞总结表 | 漏洞编号 | 影响接口 | 主要问题 | 修复版本 | 临时措施 | |---------|---------|---------|---------|---------| | CVE-2024-20315 | MPLS | Lookup key错误,ACL绕过 | 7.9.1, 7.9.2, 7.10.2+ | 使用egress ACL | | CVE-2024-20322 | PW-Ether | Lookup key错误,ACL绕过 | 7.10.2, 7.11.2+ | 无,需升级 | | CVE-2023-20191 | MPLS | Explicit-null处理缺陷 | 7.7.21, 7.9.2, 7.10.1+ | 使用egress ACL | | CVE-2023-20190 | 任意(压缩ACL) | 压缩后deny规则失效 | 最新补丁版本 | 禁用压缩,使用SVR模式 |