2020年安全部署IPv6实战指南:互联网边界防护

本文深入探讨IPv6在互联网边界的安全部署策略,涵盖地址分配、ICMPv6过滤、多播安全及BGP防护等关键技术,提供实用的iptables配置示例和协议分析,帮助构建可靠的IPv6安全防线。

安全部署IPv6在2020年第一部分:互联网面向边界

引言

2020年初告诉我们,互联网互联服务的需求比以往任何时候都高。IPv4已耗尽,过度使用、滥用,且超出其寿命。尽管我们通过变长子网划分英勇尝试,但这给企业路由器带来了巨大负担,并呈指数级增长全球路由表,我们仍然用尽了地址。

网络地址转换(NAT)同样被过度使用和滥用。它并非也从未意图成为一种安全技术。NAT只是地址保护,而我们现在在全球部署了嵌套在其他NAT网络后的NAT网络,这超出了荒谬,更延伸了其原始设计意图。我们向所有勇敢延长IPv4寿命的人致敬,但现在是时候承诺IPv6了。

IPv6基础

IPv6是一个128位地址空间,在以太网头中称为IEEE 802协议0x86DD,或在IPv4头中封装时作为IP协议号41(6in4)携带。截至今天,IANA已将IPv6地址空间分配给各种区域互联网注册机构,包括ARIN、RIPE NCC、APNIC、AFRINIC、LACNIC。

地址分配如下:

  • /12:七个IPv6块分布在不同RIR中
  • /16:一个块用于6to4转换
  • /18:一个块给RIPE NCC
  • /19:两个块,一个给RIPE NCC,另一个给APNIC
  • /20:三个块,一个给RIPE NCC,两个给APNIC
  • /22:三个块给RIPE NCC
  • /23:十八个地址块分布在不同RIR中

这些地址分配巨大!如果只设置12位用于网络前缀,那么互联网服务提供商可以进一步分配116位。纯主机地址术语中,那是2^116,即8.4e24个地址!

大多数服务提供商会进一步分配/32、/48和/64块。参考https://tools.ietf.org/html/rfc6177获取更多信息。要查看当前IPv6 BGP全局路由表状态,参考https://bgp.potaroo.net/v6/as2.0/index.html。

安全主题

IPv6地址和范围

有三种IPv6地址:单播、任播和多播。单播和任播地址有两种不同范围:链路本地和全局。对于多播,第二个地址八位组中的四个最低有效位决定范围。多播地址以“ff0”开头,不同范围地址如下:

  • FF00 => 保留/未使用
  • FF01 => 接口本地(主机绑定/环回多播)
  • FF02 => 链路本地
  • FF03 => 领域本地
  • FF04 => 管理本地
  • FF05 => 站点本地
  • FF08 => 组织本地
  • FF0E => 全局
  • FF0F => 保留/未使用

互联网控制消息协议版本6(ICMPv6)

IPv4地址解析协议(ARP)已消失!IPv6非常依赖多播实现许多功能,大量发现使用ICMPv6和多播一起。类似于v4中的ICMP,数据包中有ICMP类型和代码。

ICMPv6可分为四类:错误消息、信息消息、邻居发现消息和其他IPv6协议控制消息。

错误消息

  • 类型0:保留/未分配
  • 类型1:目的地不可达。代码字段包含原因。
    • 代码0:无路由到目的地
    • 代码1:管理禁止
    • 代码2:未分配
    • 代码3:地址不可达
    • 代码4:端口不可达
  • 类型2:数据包太大。对路径MTU发现机制正常工作很重要。
  • 类型3:时间超出消息
    • 代码0:传输中跳数限制超出
    • 代码1:分片重组时间超出
  • 类型4:参数问题消息
    • 代码0:遇到错误头字段
    • 代码1:未识别下一头类型
    • 代码2:未识别IPv6选项遇到
  • 类型5到127:未分配或保留用于实验

信息消息

  • 类型128:回显请求
  • 类型129:回显回复
  • 类型130:多播监听查询
  • 类型131:多播监听报告
  • 类型132:多播监听完成

邻居发现消息

  • 类型133:路由器请求
  • 类型134:路由器广告
  • 类型135:邻居请求
  • 类型136:邻居广告
  • 类型137:重定向

其他IPv6协议控制消息

类型138到161当前已定义。参考https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml获取更多信息。类型162到255:未分配、保留或实验使用。

边界网络安全

分配地址空间过滤

简短来说,IPv6中有大量未分配地址空间,除非数据包来自分配地址块,否则不应允许进入网络。实际上,这很简单。IANA今天分配了35个地址块。您可以在边界路由器上定义ACL,只允许来自这些35个块的数据包,并丢弃其他所有内容。

反欺骗过滤

黄金规则是:不应有任何数据包进入网络,其源地址代表您的分配地址块。同样,不应有任何数据包离开网络,其目的地址匹配您的分配地址块。

ICMPv6过滤

对于ICMPv6,IPv6协议会中断,使得保护ICMPv6的主题不仅对边界而且对网络内部极其关键。您不能采取IPv4风格的幼稚方法只是丢弃此协议,而是需要更细致。

过滤ICMPv6可分为两类:从边界安全设备发起的流量与应传输通过安全设备的流量。我将讨论部分限于对组织边界安全策略立场重要的传输流量。

应允许传输流量通过往返互联网。所有其他传输ICMPv6流量应丢弃。这些是我的意见结合https://www.ietf.org/rfc/rfc4890.txt的解释。

多播过滤

如果域间多播不可取,那么严格边界过滤至关重要。此外,任何以多播作为源地址的数据包欺骗肯定是欺骗的,应丢弃。假设您的策略是不参与域间多播,那么您应在边界过滤以下内容:

  • 任何源地址为多播的数据包
  • 阻止/丢弃保留和未使用/未分配的多播目的地

协议规范化

IPv6有一个标记为“下一头”的协议头。可以在遇到OSI第4层头之前继续将扩展头链接在一起形成极长的扩展头链。

使用长链扩展头可能创建拒绝服务攻击,所有这些都需要由边界安全防火墙和/或路由器处理。扩展头攻击还可以通过防止完整数据包检查来盲化入侵防御系统(IPS)。

外部边界网关协议安全

边界网关协议(BGP)仍然与我们同在,并广泛用于IPv4和IPv6广域路由表。幸运的是,随着IPv6路由表的引入和类特定地址边界的利用,大小和处理要求显著低于高度分散的IPv4路由表。

在IPv6世界中部署BGP的类似安全关切与IPv4一样存在。

DMZ/互联网面向服务器地址分配

一旦您保护了地址分配,您可能处理/48或/64地址块。现在,当然,像任何其他组织一样,欢迎您进一步子网化此分配。

无论是在云托管情况还是您自己的DMZ/互联网面向部署中,我建议您保持子网规模相当大。例如,您可能选择将/64块切割成/72子网或类似,并可能分配一两个用于组织DMZ。

当您执行子网划分时,虽然您的路由器网关地址可能为一致性可预测分配,但强烈建议以随机方式分配服务器地址。这将减轻扫描/侦察攻击阶段服务器发现的风险。由于地址空间如此巨大,这实际上成为一种“稀疏”分配,使发现显著具有挑战性。

基础设施安全测试工具

在本文中,您已经看到我使用了许多工具进行测试和探测。一些包含在标准Linux发行版中,而一些更高级的工具没有。

结论

毫无疑问,我们有足够的经验深度投身IPv6世界。组织绝对应该考虑在IPv6域中提供具有适当保护的互联网面向服务。住宅互联网服务提供商已经在努力继续任何IPv4,并将继续向IPv6移动。这给我们留下了内部网络安全关切,我将在未来文章中撰写。

许多不同信息源用于构建本文,包括:

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计