课题研究 IPv6演进安全 子课题02 · 第4页 / 共8页
02子课题 · 邻居发现协议(NDP)安全与防护

NDP安全与防护第4页:防护机制体系与工程实现

协议不能自证,防护必须由链路与架构补齐。本页建立NDP防护的四层纵深体系:接入控制层(802.1X/端口安全)、链路防护层(RA-Guard、ND检测、SAVI、DHCPv6-Shield)、主机加固层(RA接收策略、过渡机制关闭)、监测验证层(检测规则与演练验证,第5页展开)。逐层剖析RA-Guard(RFC 6105)及其RFC 7113加固要求——包括分片与隧道两种历史绕过路径及其闭合条件;SAVI(RFC 7039/6620/7513)的绑定锚定机制与FCFS/DHCP/SLAAC三种实现模式;DHCPv6-Shield(RFC 7610)对M标志翻转的闭环;SeND/CGA失败的三重根因及其对协议设计的教训。最后给出概念级配置基线示例与"控制×攻击"覆盖矩阵。

RA-Guard / RFC 6105RFC 7113加固SAVI / RFC 7039ND检测 / ND SnoopingDHCPv6-Shield / RFC 7610802.1X / 端口安全SeND教训纵深防御研究状态:研究中
所属专题互联网基础设施安全 › IPv6演进安全
目标受众网络与安全运维工程师、SOC与态势感知团队、安全研究人员、攻防演练组织者
全文结构8页:总览 → 协议机制 → 攻击分类 → 防护体系 → 检测监测 → 案例实证 → 风险治理 → 实践路线

01 · 防护体系总览:四层纵深模型

没有任何单一控制能覆盖NDP攻击全谱系——有效防护必须是分层组合。本课题采用四层纵深模型:

层次控制项阻断的攻击面残余缺口(第7页详析)
L1 接入控制层802.1X认证接入、端口安全(MAC数量限制)、访客/IoT隔离VLANAT全部的前提条件(A1链路接入)——未认证设备不得进入受信链路认证后的恶意终端、被控合法终端仍可发起全部攻击——L1是减面而非消除
L2 链路防护层RA-Guard(RFC 6105/7113)、ND检测(ND Inspection/Snooping)、SAVI(RFC 7039)、DHCPv6-Shield(RFC 7610)、端口级RA限速AT-1(RA伪造)、AT-5(RA洪泛)、AT-3(部分,SAVI)、AT-4(部分,速率限制+SAVI)、M标志翻转受信任端口上的RA、同VLAN内合法地址NA应答(AT-2的"无伪造"形态)
L3 主机加固层RA接收策略收敛(如仅接受受信接口RA)、关闭6to4/Teredo等自动隧道、禁用WPAD、关键服务器静态邻居条目隧道延伸链(A1的跨段延伸)、Toxic Proxies链的WPAD环节、主机解析面暴露配置管理成本、BYOD设备不可控
L4 监测验证层NDP异常检测规则库、SIEM关联、授权演练验证(第5、8页)全部攻击的"发现与响应"——防护失效后的兜底检测本身的覆盖与误报平衡(KQ-1)

分层原则:L1决定"谁能进链路",L2决定"链路里能说什么",L3决定"主机相信什么",L4决定"出错多快知道"。四层缺一不可:只做L2不做L1,攻击者换用被控合法终端即穿透;只做L1不做L2,内部威胁全敞口;不做L4,任何控制静默失效都无法察觉。

02 · RA-Guard(RFC 6105)与RFC 7113加固

2.1 基本原理

RA-Guard在接入交换机上实施端口角色模型:连接合法路由器的端口标记为受信任(可收发RA),连接主机/其他设备的端口默认为非受信任——非受信任端口上收到RA即丢弃(可记录)。Cisco实现中以RA-Guard Policy绑定接口(ipv6 nd raguard policy),Juniper、华为、H3C等均有等效特性(命名各异,见第8页分厂商表)。RA-Guard同时支持对RA的频率与内容策略(如限制RDNSS、限定宣告的前缀白名单)。

2.2 RFC 7113:两种历史绕过与闭合条件

2014年RFC 7113揭示首代RA-Guard的两个结构性弱点:

绕过路径机理(概念级)RFC 7113闭合要求
分片绕过将RA报文分片传输:首分片不含完整ICMPv6报头或RA载荷跨越分片边界,简单匹配"ICMPv6 Type 134"的过滤逻辑无法识别重组后的完整RA接入设备必须在过滤决策前完成分片重组,或依据RFC 7112直接丢弃"首个分片未含完整IPv6头链+上层头"的报文——后者以弃代验,成本更低
隧道绕过将RA封装于IPv6-in-IPv6隧道(外层目的为受害主机地址),隧道解封装发生在受害主机而非接入交换机——交换机看到的只是普通隧道报文非受信任端口应丢弃目的为本链路主机的IPv6-in-IPv6隧道报文;实现必须基于硬件转发面的深度检查(RFC 7113明确要求"硬件级实施"以避免性能回退导致的配置关闭)

2.3 评估要点

  • 硬件化是生死线:软件实施的RA-Guard在千兆/万兆接入面对分片重组开销常被迫关闭——采购与验收必须验证转发面实现(以厂商文档与实测为准)。
  • 覆盖所有接入面:有线端口、无线AP上联、虚拟交换机端口(vSwitch的RA-Guard/等效特性)、服务器带外管理口——任何未覆盖面都是绕过通道。
  • RA限速叠加:RA-Guard之上应叠加端口级RA速率限制(pps阈值),为洪泛型攻击(AT-5)提供独立于内容过滤的缓冲。

03 · SAVI(RFC 7039):源地址验证改进

3.1 绑定锚定机制

SAVI的核心思想:接入设备通过监听链路上的地址配置过程(DAD的NS/NA交互、RS/RA交互、DHCPv6交互),为每个端口建立"IPv6地址—端口—MAC(可选)"绑定表;此后该端口发出的数据包若源地址不在绑定表内即丢弃。由此,伪造源地址的报文(无论ND消息还是数据流量)在接入侧被阻断——直接封死"伪造他人地址"这一机制基础。

3.2 三种锚定模式

模式依据的锚定事件适用场景局限
FCFS(RFC 6620)First-Come-First-Served:监听DAD过程,第一个成功声明地址者获得绑定纯SLAAC环境、BYOD与DAD攻击存在竞态窗口;地址迁移/多端口场景复杂
DHCP模式(RFC 7513)监听DHCPv6 Solicit/Reply,以服务器分配结果为准DHCPv6为主的环境对SLAAC地址无效;需覆盖M标志翻转的混杂环境
SLAAC模式(RFC 7039框架内定义)监听RS/RA+完整DAD链,综合确认地址合法性SLAAC为主的现代网络实现复杂度高,状态维护成本最大

3.3 与RA-Guard的关系

二者互补不替代:RA-Guard管"RA内容来源",SAVI管"一切流量的源地址真实性"。SAVI可阻断伪造源地址的NS/NA/RA,但对"使用自身合法地址"的应答型攻击(合法地址NA投毒、合法地址RA——如被控IoT设备)无效;RA-Guard可阻断非信任端口RA,但不校验数据面源地址。RFC 9098将两者并列为接入层防护基线。

04 · DHCPv6-Shield(RFC 7610)

应对AT-1的M标志翻转变体:当伪造RA将M标志置1,主机会发起DHCPv6 Solicit——若链路上存在攻击者架设的伪造DHCPv6服务器,地址与DNS配置即被接管。DHCPv6-Shield在接入设备上实施与RA-Guard同构的端口角色模型:仅受信任端口允许发送DHCPv6服务器侧报文(Advertise/Reply),非受信任端口收到即丢弃。部署要点:DHCPv6-Shield必须与RA-Guard联合部署——只防其一,M标志翻转即可绕过;同时Relay部署场景(DHCPv6中继)需正确标记中继端口为受信任,避免误伤合法中继。

05 · SeND/CGA的历史教训(RFC 3971/3972)

SeND是NDP安全"理想路线"的完整标本,其失败为所有协议安全设计留下三重教训:

教训说明
密码学成本必须匹配部署单元CGA地址生成与RSA签名验证的CPU开销在嵌入式设备与高速链路上难以承受;方案按"全网所有节点"设计成本,而非按"边际部署节点"设计——成本结构注定了部署率无法过临界点
不能改变地址体系的成功机制SeND要求使用CGA特殊格式的地址,与SLAAC、DHCPv6、隐私地址(RFC 4941/8981)的演进路径全部冲突——用户与厂商没有动力为单一安全特性放弃地址灵活性
无生态支点则标准空转截至今日无主流操作系统内核生产级支持SeND接收验证,无主流交换芯片支持CGA加速——协议作者自己也转向RA-Guard等"设备侧务实方案"(Fernando Gont同时是RFC 3971引用者与RFC 6104/6583/7113作者)

正面启示:SeND的失败不等于密码学路线失败——RPKI/BGPsec/ASPA(RPKI专题子课题05)在"集中式信任锚+验证器 offload"的架构下绕开了SeND的两个死穴(逐端计算成本、地址格式绑定)。第一跳安全若未来引入密码学机制,大概率也沿"验证器集中验证+设备执行结果"的ASPA式架构,而非SeND式逐端签名。

06 · 主机与终端侧加固

  • RA接收策略收敛:服务器与网络设备接口应关闭RA接收(路由器/交换机自身不应作为SLAAC客户端);普通主机按角色限定接受RA的接口与配置项(如Linux的accept_ra/accept_ra_defrtr/accept_ra_rtr_pref/accept_ra_pinfo等参数族,Windows网卡"路由器发现"设置)。
  • 关闭自动隧道:禁用6to4/Teredo/ISATAP主机侧启用——IETF已通过RFC 7526正式废弃6to4中继任播机制(2015);Teredo虽无专门废弃RFC,但现代Windows与主流操作系统已默认禁用Teredo客户端——消除链路信任域的跨段延伸(子课题03详述)。
  • 禁用WPAD:关闭Web Proxy Auto-Discovery(PAC自动发现),拆除Toxic Proxies攻击链的关键环节(第6页);优先以显式代理配置替代自动发现。
  • 静态邻居条目:对网关、核心服务器等固定对等,在关键主机配置静态邻居条目(neighbor cache静态绑定),消除解析层动态欺骗面——注意运维成本与主备切换场景的条目更新。
  • DNS层防护:强制DoT/DoH或受控DNS出口,降低RDNSS投毒的落点价值(纵深补偿,非替代链路防护)。

07 · 网络架构层缓解

  • 分区分级:按信任等级划分VLAN/网段(办公、服务器、IoT、访客、OT),默认 deny 跨段第一跳信任——缩小单点沦陷的链路半径。访客/IoT网段视为不可信链路,RA-Guard+SAVI+DHCPv6-Shield强制全量。
  • 广播域收敛:控制单VLAN规模(建议/24—/22量级),降低洪泛型攻击的放大系数与中间人的潜在受害者集合。
  • uRPFv6:在三层边界实施IPv6单播反向路径校验(BCP 38精神),阻断伪造源地址跨段流动——与SAVI形成接入-边界两级源地址防线。
  • 关键链路静态化:数据中心带内管理段、存储段等高敏链路,可考虑关闭SLAAC、采用静态配置+静态邻居条目,将NDP动态信任面压至零。
  • 虚拟化接入面:vSwitch/hypervisor虚拟端口启用等效RA-Guard与源地址检查,纳入与物理接入同级的基线核查。

08 · 配置基线示例(概念级)与覆盖矩阵

以下为防护侧配置的概念级示例(用于说明基线要素,具体命令以各厂商当期文档为准):

示例1:接入交换机RA-Guard策略要素(Cisco风格,概念级)
ipv6 nd raguard policy HOST-POLICY
  device-role host            ! 本端口角色=主机:拒绝RA/Redirect发送
  hop-limit maximum 1         ! 校验HL(防链外注入兜底)
  managed-config-flag off     ! 不允许M标志置位(防M标志翻转诱导)
  other-config-flag off       ! 不允许O标志置位
  router-preference maximum medium
  validate source-mac         ! 校验SLLA与MAC一致性
! 下行:受信任上联口
interface Gi1/0/1
  ipv6 nd raguard attach-policy ROUTER-POLICY
  ! ROUTER-POLICY: device-role router + 前缀/RDNSS白名单
示例2:Linux主机RA接收收敛(sysctl,概念级)
net.ipv6.conf.all.accept_ra = 1            ! 仅受信接口开启
net.ipv6.conf.all.accept_ra_defrtr = 1     ! 仅接受默认路由
net.ipv6.conf.all.accept_ra_rtr_pref = 1
net.ipv6.conf.all.accept_ra_pinfo = 1
! 服务器场景:对应接口 accept_ra=0,网关静态配置
! 关闭自动隧道(如 net.ipv6.conf.all.disable_ipv6=0 场景下的协议收敛)

8.1 控制×攻击覆盖矩阵

攻击 \ 控制802.1X/隔离RA-Guard(7113)SAVIDHCPv6-Shield主机加固监测(KQ-1)
AT-1 Rogue RA(网关劫持/RDNSS/RIO)减面阻断(核心)部分(源伪造场景)—部分(DNS补偿)兜底发现
AT-1 M标志翻转减面内容策略可拦—阻断(核心)—兜底发现
AT-2 NA投毒(伪造源)减面—阻断(核心)—静态条目兜底发现
AT-2 NA应答(合法地址形态)减面—✗(固有缺口)—静态条目主手段
AT-3 DAD攻击减面—部分(绑定前置)——主手段
AT-4 NDP耗尽(RFC 6583)减面—部分—OS参数主手段
AT-5 RA洪泛/网关移除减面阻断+限速部分——兜底发现
AT-6 重定向滥用减面角色策略可拦部分——主手段

注:✗=该控制无法覆盖;减面=缩小攻击前提而非阻断;矩阵为概念级评估,实际覆盖以授权环境实测为准(第5页验证方法)。

09 · 本节参考来源(第4页)

[1]

IETF RFC 6105《IPv6 Router Advertisement Guard》(2011):rfc-editor.org/rfc/rfc6105;RFC 7113(2014):rfc-editor.org/rfc/rfc7113;RFC 7112(首分片完整性要求,2013):rfc-editor.org/rfc/rfc7112。

[2]

IETF RFC 7039《SAVI Framework》(2013):rfc-editor.org/rfc/rfc7039;RFC 6620(FCFS SAVI,2012):rfc-editor.org/rfc/rfc6620;RFC 7513(SAVI for DHCP,2015):rfc-editor.org/rfc/rfc7513。

[3]

IETF RFC 7610《DHCPv6-Shield》(2015):rfc-editor.org/rfc/rfc7610;RFC 8415(DHCPv6,2018年11月):rfc-editor.org/rfc/rfc8415。

[4]

IETF RFC 3971/3972(SeND/CGA,2005):rfc-editor.org/rfc/rfc3971;RFC 9098(IPv6运营安全考虑,2021)接入层防护章节:rfc-editor.org/rfc/rfc9098。

[5]

IETF RFC 7526(废弃6to4中继任播机制,2015):rfc-editor.org/rfc/rfc7526。另注:Teredo无专门废弃RFC,本课题依据主流操作系统默认禁用Teredo客户端的事实进行定性表述。