ping6.net
安全

IPv6 安全:威胁、缓解措施和最佳实践

IPv6 本质上不比 IPv4 更安全或更不安全。了解真实的 IPv6 安全威胁、如何正确配置防火墙并保护你的网络。

ping6.net2024年12月14日3 min read
IPv6安全防火墙NDPICMPv6

NAT 神话#

当组织考虑 IPv6 时,一个问题不断出现:「没有 NAT,我们不是暴露了吗?」

不。NAT 从来都不是安全功能。它是地址稀缺的解决方法,恰好隐藏了内部地址。有状态防火墙提供相同的保护,阻止未经请求的入站连接,而没有地址转换的缺点。

真正的问题不同:许多网络已启用 IPv6,但忘记配置 IPv6 防火墙规则。这是一个严重的问题,完全可以预防。

TL;DR - 快速摘要

要点:

  • NAT 不是安全性:有状态防火墙提供相同的保护而不需要地址转换
  • IPv6 需要显式防火墙规则:最大的风险是在不配置安全性的情况下启用 IPv6
  • ICMPv6 是必不可少的:与 IPv4 不同,阻止 ICMPv6 会破坏基本网络操作
  • NDP 攻击是真实的:在交换机上部署 RA Guard 和第一跳安全
  • 相同的安全基础适用:访问控制、监控和修补仍然至关重要

跳转至: 防火墙配置 | NDP 安全 | 安全检查清单


NAT 神话#

NAT 从来都不是安全功能。它是地址稀缺的解决方法,恰好隐藏了内部地址。有状态防火墙提供相同的保护,阻止未经请求的入站连接,而没有地址转换的缺点。

IPv6 安全实际上有什么不同#

IPv6 以特定方式改变威胁格局:

**更大的地址空间是双刃剑。**使用蛮力扫描 /64 子网需要几个世纪。但攻击者不会蛮力,他们使用 DNS 记录、证书透明度日志和流量分析来查找目标。不要依赖地址模糊性。

**每个设备都可能可达。**拥有每个主机上的全局地址,你的防火墙是唯一的屏障。这使防火墙配置更加关键,而不是可选的。

**ICMPv6 是必不可少的,而不是可选的。**与 IPv4 不同,你可以在不破坏东西的情况下阻止所有 ICMP,IPv6 需要 ICMPv6 进行基本操作。阻止错误的消息,你的网络就会停止工作。

**新协议,新攻击面。**邻居发现协议(NDP)取代 ARP 并引入新的向量。扩展头部增加了攻击者可以利用的复杂性。

IPv6 特定的攻击向量#

NDP 欺骗#

邻居发现协议处理地址解析、路由器发现和重复地址检测。与 IPv4 中的 ARP 一样,它默认是信任的。

本地网络上的攻击者可以:

  • 欺骗邻居通告以重定向流量(中间人)
  • 发送伪造的路由器通告以成为默认网关
  • 执行重复地址检测攻击以拒绝合法主机的地址

这些攻击需要本地网络访问,它们不是互联网规模的威胁。但在共享网络(办公室、数据中心、WiFi)上,它们是真正的风险。

**缓解:**在交换机上部署 RA Guard 和 ND Inspection。在主机上,考虑 SEND(安全邻居发现),尽管采用有限。

路由器通告攻击#

恶意 RA 可以说服主机:

  • 使用攻击者作为他们的默认网关
  • 接受恶意 DNS 服务器
  • 使用特定前缀(可能用于流量拦截)

这特别危险,因为大多数主机默认接受 RA。

缓解:

  • 交换机端口上的 RA Guard(阻止来自非路由器端口的 RA)
  • 在 Linux 主机上:具有静态配置的服务器使用 net.ipv6.conf.all.accept_ra = 0
  • 使用 ramond 或 NDPMon 等工具监控意外的 RA

扩展头部利用#

IPv6 扩展头部位于主头部和有效负载之间。合法用途包括分片、路由选项和 IPsec。

攻击者可以使用它们:

  • 逃避防火墙,这些防火墙不检查完整的头部链
  • 分片攻击以绕过检查或重组漏洞
  • 创建模糊数据包,不同设备以不同方式解释

**缓解:**使用完全解析扩展头部链的防火墙。删除具有异常或已弃用扩展头部的数据包(如 Type 0 Routing Headers,被 RFC 5095 废弃)。

侦察技术#

攻击者不会随机扫描 /64。他们通过以下方式查找 IPv6 目标:

  • DNS 区域传输或猜测(www、mail、ns1 等)
  • 证书透明度日志(所有 HTTPS 证书都是公开的)
  • 从流量中收集(被动监控)
  • 可预测的地址(::1、::100、基于 MAC 的 EUI-64)

**缓解:**对客户端地址使用隐私扩展。避免可预测的服务器地址。如果不需要,不要在公共 DNS 中发布内部基础设施。

IPv6 的防火墙配置#

允许的基本 ICMPv6 类型#

阻止这些,你的网络就会崩溃:

类型名称需要用于
1目标不可达路径 MTU 发现、错误处理
2数据包太大路径 MTU 发现(关键)
3超时Traceroute、循环检测
128/129回显请求/回复Ping(可选但有用)
133路由器请求主机查找路由器
134路由器通告路由器通告自己
135邻居请求地址解析
136邻居通告地址解析响应

类型 133-136 仅在本地链路上需要,不要跨路由器转发它们。

有状态防火墙规则#

主机的最小规则集:

# 允许已建立的连接
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# 允许 ICMPv6(在生产中更具体)
-A INPUT -p ipv6-icmp -j ACCEPT
 
# 仅允许 NDP 的链路本地(更安全)
-A INPUT -s fe80::/10 -p ipv6-icmp --icmpv6-type 133:136 -j ACCEPT
 
# 允许特定服务
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
 
# 删除其他所有内容
-A INPUT -j DROP

对于 nftables,等效:

table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;
 
    ct state established,related accept
    ip6 nexthdr icmpv6 accept
    tcp dport { 22, 443 } accept
  }
}

不要忘记出口过滤#

出站规则也很重要。它们可以:

  • 防止通过意外协议进行数据渗透
  • 阻止命令和控制流量
  • 限制来自受损主机的损害

至少,记录意外的出站连接。

IPv6 中的 IPsec#

IPsec 最初是 IPv6 实现的强制性要求(RFC 2460)。这后来被放宽(RFC 6434),因为普遍部署从未发生。

尽管如此,IPv6 使 IPsec 更清洁:

  • 没有 NAT 穿越复杂性
  • 考虑到 IPsec 设计的扩展头部
  • ESP 和 AH 按预期工作

如果你需要在特定主机或站点之间进行加密,IPv6 上的 IPsec 很简单,比带 NAT 的 IPv4 更简单。

第一跳安全功能#

现代交换机提供对本地攻击的保护:

**RA Guard:**阻止来自未经授权端口的路由器通告。在所有接入交换机上必不可少。

**DHCPv6 Guard:**将 DHCPv6 服务器响应限制为授权端口。

**ND Inspection:**构建 MAC 到 IPv6 映射的绑定表并验证 NDP 流量。

**Source Guard:**基于绑定表删除具有欺骗源地址的数据包。

这些功能在 Cisco、Juniper、Arista 等的企业交换机上可用。配置它们,它们默认是禁用的。

常见错误#

**在不配置防火墙的情况下启用 IPv6。**如果你的防火墙规则仅涵盖 IPv4,你在 IPv6 上是敞开的。这是第一大现实世界漏洞。

**阻止所有 ICMPv6。**这会破坏路径 MTU 发现并导致神秘的连接失败,特别是对于大数据包和通过隧道。

**忽略「仅 IPv4」网络上的 IPv6。**大多数操作系统默认启用 IPv6。没有适当的基础设施,它们可能使用链路本地或隧道到随机端点。

**假设 NAT64 提供安全性。**转换技术不添加安全性。它们只是转换。你仍然需要防火墙规则。

**对 IPv4 和 IPv6 使用相同的防火墙规则。**一些规则直接转换;其他规则(如 ICMP 处理)需要特别注意。

安全检查清单#

在使用 IPv6 上线之前:

  • 防火墙规则明确涵盖 IPv6 流量
  • 允许基本 ICMPv6 类型
  • 在接入交换机上启用 RA Guard
  • 如果使用 DHCPv6,配置 DHCPv6 Guard
  • 为 IPv6 更新 IDS/IPS 签名
  • 日志捕获 IPv6 源地址
  • 审查 DNS 记录(不要发布不必要的 AAAA 记录)
  • 在客户端上启用隐私扩展
  • 为恶意 RA 设置监控

总结#

IPv6 安全并不比 IPv4 难,它是不同的。基本原则保持不变:有状态防火墙、适当的访问控制、监控和保持系统修补。

最大的风险不是技术复杂性。这是 IPv6 存在但未得到适当管理的过渡期。在你的安全架构中将 IPv6 视为一等公民,而不是事后考虑。

相关文章#

亲自尝试

使用我们的 IPv6 验证器检查你的地址配置是否正确。