作者:宋崟川,现就职于 Red Hat。持有微软 Azure 解决方案专家认证,微软 MCSE 核心基础设施认证,红帽系统管理员认证,甲骨文 Solaris 11 系统管理员认证。对中西方信息化基础设施有深入了解和丰富实战经验,尤其对高校信息化发展有独到见解。
如果你在内网使用了6,7,11,21,22,26,28,29,30,33,55,214,215 开头的公网 IPv4 地址。你的内网流量有较高风险会经过互联网传送到美国国防部控制的网络。
这并不是美国国防部的网络攻击,也不是网络设备的后门,而是你自己的网络设计规划中的缺陷造成的。
美国国防部(Department of Defense,简称 DoD)拥有全世界最多的 IPv4 地址。过去三个月,美国国防部的一个数字精英部门 DDS,通过一个名为 Global Resource Systems LLC 的公司,使用 AS8003 向互联网路由表宣告了自己(美国国防部)拥有的大批 IPv4 地址段。所谓宣告地址,便是让这些地址可以在互联网上直接访问。根据 HE.NET 的 BGP 路由信息系统[1],截至发稿时,这些地址段共有 174,784,512 个(约1.75亿)IPv4 地址。
分配给美国国防部的 /8 IPv4 地址列表:
这些地址在过去近 30 年的时间内,没有在互联网路由表中出现,成为事实上的不可路由地址。美国国防部的这些地址以及和它们的相邻的地址,在世界各地的内网被错误地使用了。
为什么会出现在内网使用公网地址的现象呢?
大部分读者都知道国家最近两三年在大力推进 IPv6规模部署,目的是从根本上解决我国 IPv4 地址短缺的情况。IPv4 地址短缺是全世界面对的共同问题,只是在我们这样一个人口众多的,互联网起步较晚的国家,地址短缺更加严重而已。并且,不仅仅是互联网上 “公网” IPv4 地址短缺,平时被 NAT 机制“隐藏”的,内部网络“私网”IPv4 地址同样存在严重的地址短缺,这种现象在大中型网络中更为明显。
以最常用的 A 类内网地址空间 10.0.0.0/8为例,共可以划分 65536 个大小为 /24 的子网,然而现实中的分配则相当粗犷,为了便于人类识别,往往为某个功能块分配几十个 /24 的子网,形如 10.20.20.0/24,10.200.20.0/24。组织结构稍微复杂一点或者经常变动,地址很快就不够分配了。
此外,还有一些不称职的网络工程师无视私有地址段 192.168.0.0/24 的范围,一厢情愿认为 192.0.0.0/8,即 192 开头的所有 IPv4 地址也是合法内网地址,开始在自己网络使用。相似的例子还有 100.64.0.0/10,在这一段地址之后的100.128.0.0-100.255.0.0属于美国 T-mobile通讯公司,这段地址之前地址分别属于多家运营商和AWS。
这次 AS8003 宣告的地址值得注意的见下图,包括了完整的 7.0.0.0/8,11.0.0.0/8,21.0.0.0/8,22.0.0.0/8,30.0.0.0/8 等大地址块,也包括了 192 开头的几个小地址块。
当上述两个条件(内网使用公网地址,公网地址开始在互联网上宣告)同时满足时,一些服务可能无法访问,但更严重的是内网信息泄露风险。
具体来说有这样几种情况
1、内网存在使用这些地址的用户,无法访问互联网上正常使用这些地址段提供的服务。这是因为指向内部的明细路由,比到互联网的默认路由优先级高。
最经典的例子莫过于 Cloudflare 在 2018 年开始使用 1.1.1.1 提供 DNS 服务,结果发现很多用户无法访问,除了一些运营商的配置问题外,很多网络设备操作系统或默认配置中存在包含1.1.1.1的路由。[4]
2、错误配置的网络和客户端,通过默认路由,会将本应访问内部的应用的数据包发送到互联网上地址的所有者/宣告者网络。
3、如果此网络使用 BGP 与上游运营商交换路由信息,可能遇到以下两个风险
不谨慎的配置将不属于自己的这段地址路由泄露到互联网,使得互联网的一部分用户可以访问内部资源。
从互联网上收到自己内部地址段的明细路由,或前缀大小相同的路由,由于很多路由器,在遇到相同网络不同协议传来的路由时,优先选择 eBGP 传来的路由,而不选择 OSPF 等内部路由协议传来的路由信息(即 Administrative Distance 管理距离机制),路由器会将本应在内网的数据包发送到地址所有者/宣告者的网络。
在当前严峻的网络安全形势下,很多关键部门的关键业务,由于业务需要,无法与互联网彻底隔离。这些部门的网络安全大多依赖“内网”“外网”的划分,获得了虚幻的安全感。在“内网”“外网”的边界,可能除了 NAT 没有任何安全措施。“放在内网就安全了”,是一种普遍的、掩耳盗铃式的网络安全观。根据公开信息,中国一些公有云和运营商网络,内网中存在不同程度的使用分配给国外政府、军队、公司的公网地址。可以想到,内网使用公网地址的模式长期运行,由于误配置造成的敏感数据流向互联网是必然的。
这些敏感数据有三层四层的IP地址和端口,也有一些七层应用数据。美国国防部完全有权分析进入他们网络的所有数据包,针对不同类型数据包,可以获得以下信息:
TCP 会话,构建服务器响应客户端握手,进而获得泄露出来的敏感数据;
UDP 是无连接协议,客户端发送敏感数据不需要事先与服务器端握手建立连接;
统计单个原地址发来数据包的目的地址和端口,可以构建该地址对应内网的服务器和端口列表。
要应对上述安全威胁,笔者给出了当前问题评估方法、彻底解决方案和临时补救措施。
当前问题评估:
1、识别内部网络的路由,找出既不是众所周知的私有地址,也不是合法渠道获得的公网地址。以下是思科和华为、新华三设备上查看路由表的方法:
- Cisco#show ip route
- display ip routing-table
2、识别不合法地址的数据包,配置太长,此处仅给出思路
- 在识别阶段,最好不要阻断数据包;
- 配置扩展 IP 访问控制列表,添加涉及到的地址,启用此条目的日志功能;
- 在互联网接口的出方向,检测目的地为非法地址的数据包;
- 在互联网接口的入方向,直接阻断源地址或目的地为内网地址段的数据包。
彻底解决方案:
1、内部网络只使用分配给自己或符合国际网络规范的私有地址
a、IPv4 内部网络只可以使用以下私有地址空间和合法的公有地址空间
b、IPv6 只建议使用运营商分配或向地区 NIC 申请获得的 IPv6 地址空间
- 确定未来不需要接入互联网情况下,可使用 RFC4193 [3] 介绍的方法在 fd00::/8的空间内生成一个 /48 空间
- 路由器互联可使用 fe80::/10 空间,链路本地地址
2、引入 IPv6,摆脱内部 IPv4 地址短缺的情况。内部地址向 IPv6 迁移,是 IPv6 规模改造的深水区。
- 一个超大型组织可以申请 /32 前缀长度的 IPv6 地址空间,共有 2^32 个(与 IPv4 地址数量相同) /64 大小的子网
- 大型组织可以申请 /40,共 256 个 /48
- 中型组织可以申请 /44,共 16 个 /48
- 小型组织可以申请 /48,这也是大中型组织中一个站点的地址范围
3、在二进制边界划分地址段,提高 IP 地址空间利用率
如果一个地址段不能写成 x.x.x.x/xx 这样“网络号/前缀长度”的形式,划分就不科学。
例如 10.10.0.0 - 10.19.0.0 无法写成“网络号/前缀”长度形式,而 10.0.0.0 - 10.15.255.255 可以写成 10.0.0.0/12 这样前缀。
4、针对内部地址分配模式,在网络边界配置相应的安全策略
- 阻止源地址是内网的数据包进入网络
- 阻止目的地址是内网的数据包进入网络
- 阻止源地址是内网的数据包离开网络
- 阻止目的地址是内网的数据包离开网络
一个思科风格的访问控制列表配置示例,仅用于展示思路,不可以直接应用于生产环境。
临时补救措施:
1、评估网络内地址的使用模式,制定阻断、丢弃数据包策略(阻断策略)针对美国国防部的地址,可以先在边界路由器上配置黑洞路由。
2、评估网络内地址的使用模式,过滤路由信息
可以参考下面思科路由器上的 ip prefix-list,在 route-map 配置中引用该 prefix-list,配置合适方向的 BGP 路由过滤器。
此外,网络设备厂商的手册中,如果为了提高可读性,在文档中需要使用公网可路由地址,则需说明此地址不代表真实网络,仅作为示例使用。大部分时候可以使用 RFC 5737[5] 规定的文档专用地址,包括
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
IP地址的规划短则影响数年,长则影响数十年。20世纪90年代初的地址分配[6],在2021年给互联网造成了巨大影响。然而当时没有人能预计到互联网如此迅猛发展,IPv4地址成为了稀缺资源。抱着侥幸心理使用他人拥有的地址,破坏了互联网运行的规则,一方面随着当年IPv4地址的转让出售,会形成未来互联互通的障碍,另一方面对自身造成了极大的信息安全风险。
由此可见,网络规划过程中遵循业界规范,自觉维护网络世界秩序,主动修复网络架构和规划中的隐患,才能有效降低总体网络安全风险。
参考资料
[1] AS8003 在互联网上的路由概况 https://bgp.he.net/AS8003
[2] 分配给美国国防部的地址块:https://en.wikipedia.org/wiki/List_of_assigned_/8_IPv4_address_blocks#List_of_assigned_/8_blocks_to_the_United_States_Department_of_Defense
[3] RFC 4193, 本地唯一 IPv6 单播地址: https://tools.ietf.org/html/rfc4193
[4] Cloudflare 博客《全球修复 1.1.1.1 的可达性》(英文):https://blog.cloudflare.com/fixing-reachability-to-1-1-1-1-globally/
[5] RFC 5737, IPv4 文档专用保留地址块:https://tools.ietf.org/html/rfc5737
[6] IANA 已分配的 IPv4 地址空间:https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xhtml
热门跟贴