IPv6网络的可操作安全考虑——RFC9099解析(四)

2.6 记录和监控

为了在发生安全事件或检测到异常行为的情况下进行取证(forensic)研究,网络运营商应记录多个信息片段。在某些情况下,这需要通过网络管理站对设备进行频繁的轮询。

日志包括但不限于:

  • 在可用时,使用网络的所有应用程序(包括用户空间和内核空间)的日志(例如,网络运营商管理的web服务器;
  • IPFIX数据【RFC7011】;
  • SNMP MIBs或来自RESTCONF/NETCONF的YANG数据;
  • 历史的邻居缓存表项数据(Neighbor Cache entries);
  • 有状态DHCPv6的租约缓存,特性是当使用relay agent【RFC6221】时;
  • 源地址验证改进(SAVI)【RFC7039】事件,特别是将ipv6地址绑定到mac地址和特定的交换机或路由器接口的情况;
  • 防火墙ACL日志;
  • 认证服务器日志;
  • RADIUS【RFC2866】记账日志。

请注意,这些日志在如何收集、存储、使用和安全丢弃方面存在隐私问题或法规。我们敦促运营商检查他们国家的立法(例如,欧盟的一般数据保护法规【GDPR】)。

所有这些信息都可用于:

  • 取证(forensic)调查:谁、什么时间、做了什么;
  • 关联分析:哪个特定节点使用了哪个IP地址;
  • 资产分析:我的网络上有哪些IPv6节点;
  • 异常行为检测:不寻常的流量模式通常是一种异常行为,而这反过来又是一种潜在的攻击(拒绝服务、网络扫描、一个节点是僵尸网络的一部分,等等)。

2.6.1 数据来源

本节列出了对操作安全有用的最重要的数据来源。

2.6.1.1 应用日志

这些日志通常是文本文件,其中远程ipv6地址以明文(不是二进制)存储。这可能会使处理复杂化,因为一个ipv6地址,例如2001:db8::1,可以以多种方式写入,例如:

  • 2001:db8::1(大写);
  • 2001:0db8::0001(0开头);
  • 以及许多其他方式,包括反向dns映射到完全限定域名(fqdn)(不应该信任)

【RFC5952】详细解释此问题,并建议使用单一规范格式。本文档建议在所有可能的情况下使用ipv6地址。如果现有的应用程序不能使用规范格式进行日志记录,则建议使用外部后处理程序,以规范所有ipv6地址。

2.6.1.2 ipv6 router的ip flow信息输出

IPFIX【RFC7012】定义了一些对安全很有用的数据元素:

  • nextHeaderIPv6, sourceIPv6Address, and destinationIPv6Address
  • sourceMacAddress and destinationMacAddress

涉及到的数据处理和传输IPFIX是非常高效的。可以通过关键字(key)聚合流量,如sourceMacAddress聚合相关数据。本文档建议使用这些聚合进行数据处理。

2.6.1.3 SNMP MIB和IPv6路由器的NETCONF/RESTCONF YANG模型数据

【RFC4293】为IP的两个地址协议族定义了管理信息库(MIB)。本备忘录建议使用:

  • ipIfStatsTable table收集每个接口的流量计数器;
  • ipNetToPhysicalTable table是邻居高速缓存的内容,即ipv6和数据链接层地址之间的映射

还有与两个ip地址族相关的YANG模块可以使用【RFC6241】和【RFC8040】。本备忘录建议使用:

  • interfaces-state/interface/statistics包含接口的统计信息;
  • ipv6/neighbor是邻域缓存的内容,即ipv6和数据链接层地址之间的映射。

2.6.1.4 IPv6路由器的邻居缓存

路由器的邻居缓存包含ipv6地址和数据链路层地址之间的所有映射。有多种方法可以收集邻居缓存中的当前条目,特别地但不限于:

  • 使用SNMP MIB;
  • 使用流遥测或NETCONF/RESTCONF收集邻居缓存的操作状态;
  • 通过安全管理通道(如ssh)进行连接,并通过命令行接口(cli)或其他监视机制显式地请求一个邻居缓存dump。

邻居缓存是高度动态的,因为当网络上出现一个新的ipv6地址时,就会添加映射。这可能是相当频繁的,当删除他们,或当状态从UNREACH到被删除时(对于主机windows7,每个算法的默认时间是38秒)。这意味着邻居缓存的内容在不耗尽路由器资源情况下仍然能提供值信息(建议值为30秒,但应该在实际部署中验证)并存储以供以后使用。

这是一个重要的信息来源,因为要阻止数据链路层地址和ipv6地址之间的映射很简单。换句话说,访问邻居缓存的当前和过去的内容对于取证和审计跟踪具有最重要的值。还应指出,在某些威胁模型中,这些信息也被认为是有价值的,而且它们本身可能是一个目标。

当每台主机使用1/64(第2.1.8节)或DHCP-PD时,如果结合严格的源地址前缀,可以保留分配的前缀,以防止IPv6欺骗。

2.6.1.5 有状态DHCPv6 lease

在某些网络中,ipv6地址/前缀由一个有状态的地址管理,它将ipv6地址/前缀出租给客户端。它确实与ipv4的dhcp非常相似,所以使用这个dhcp租赁文件文件来发现ipv6地址/前缀和数据链接层地址之间的映射,就像在ipv4网络中常用的那样。

这在ipv6网络中并不容易,因为不是所有节点都使用dhcpv6(有些节点只能进行无状态自动配置),而且dhcpv6客户端不是像ipv4那样通过硬件客户端地址,而是通过dhcp唯一标识符(duid)标识的。duid可以有几种格式:数据链路层地址、随时间信息准备的数据链路层地址,甚至是需要与其他数据源有相关性的不透明数字。此外,当duid基于数据链路地址时,该地址可以是任何客户端接口(如无线接口,而客户端实际上使用其有线接口连接到网络)。

2.6.1.6 RADIUS记账日志

对于通过RADIUS服务器进行验证的接口,如果启用了RADIUS记账,则RADIUS服务器会在连接开始和结束时接收Acc-Status-Type记录,包括了用户使用的IPv6/IPv4地址。此技术可特别用于具有wi-fi保护访问 (WPA) 或其他802.1x以太网交换机上的其他有线接口。

2.6.1.7 其他数据源

还有其他必须收集的日志信息的数据源 (如当前在ipv4网络中收集的那样):

  • IPv6地址到远程访问VPN用户的历史映射;
  • MAC地址到有线网络中交换端口的历史映射

2.6.2 使用收集的数据

本节利用收集的数据,如第2.6.1节所述,以实现几个安全利益。【RFC7934】 的第9.1节包含有关主机跟踪的更多详细信息。

2.6.2.1 取证(Forensic)和用户问责

取证的用例是网络运营商必须定位某个时间存在于网络中或当前存在于网络中的IPv6地址 (以及相关的端口、接入点/交换机或VPN隧道)。要在运营商控制所有资源的企业网络中定位IPv6地址,信息源可以是邻居缓存,或者如果找不到,可以是DHCP租约文件。然后,程序是:

基于IPv6地址的IPv6前缀; 找到一个或多个用于到达此前缀的路由器 (假设使用了反欺骗机制),也许是基于IPAM;

  • 基于这一有限的路由器集、事件时间和IPv6地址; 从实时邻居缓存、历史邻居缓存数据或SAVI事件中检索数据链接地址,或从DHCP租约文件中检索数据链接地址;
  • 基于数据链路层地址; 查找与数据链路层地址关联的交换机接口。对于带有RADIUS计费的无线lan (请参阅第2.6.1.6节),RADIUS日志具有用户标识和MAC地址之间的映射;
  • 如果使用了配置管理数据库 (CMDB),则可以使用它将数据层地址映射到交换机端口。

在该过程结束时,已经确定了发起主机的接口或与所讨论的活动相关联的用户身份。

为了识别住宅互联网服务提供商中IPv6地址的用户,起点是覆盖IPv6地址的dhcp-pd租约前缀;此前缀通常可以通过RADIUS日志附加到用户。或者,电缆调制解调器终端系统 (CMTS) 或宽带网络网关 (BNG) 的转发信息库 (FIB) 指示用户的设备 (CPE),并且可以使用RADIUS日志来传输。

更一般地说,上述技术的混合可以在大多数网络中使用。

2.6.2.2 资产(Inventory)

【RFC7077】描述了攻击者扫描IPv6网络的困难,因为每个链路有大量的IPv6地址 (以及为什么在某些情况下仍然可以这样做)。虽然巨大的寻址空间有时可以被视为一种 “保护”。这也使IPv6网络中的清单任务变得困难,而在IPv4网络中却很容易完成 (所有IPv4地址的简单枚举,然后是ping和TCP/UDP端口扫描)。获取所有连接设备的清单对于安全的网络运行至关重要。

有许多方法可用来盘点IPv6网络资产:

第一种技术是使用被动检查,例如IPFIX。使用导出的IPFIX信息并提取所有IPv6源地址的列表,可以找到通过路由器发送数据包的所有IPv6节点。这是非常有效的,但是,不会发现从未传输过IPFIX目标路由器的数据包的静默节点。另外,必须注意,通过这种方式永远不会发现链路本地地址。

第二种方法是再次使用收集的邻居缓存内容来查找缓存中的所有IPv6地址。此过程还将发现所有链接本地地址。

另一种仅适用于本地网络的方式包括将ICMP ECHO_REQUEST发送到链接本地多播地址ff02::1,该地址寻址网络上的所有IPv6节点。所有节点都应回复此ECHO_REQUEST【RFC4443】。

其他技术包括从DNS获取数据、解析日志文件和利用服务发现 (如mDNS)。

枚举DNS区域,尤其是查看反向DNS记录和cname,是各种工具采用的另一种常见方法。如前所述【RFC7707】,这允许攻击者修剪IPv6反向DNS树,从而在可行的时间内枚举它。此外,允许区域传输 (即权威传输 (AXFRs)) 的权威服务器可能是进一步的信息源。一篇有趣的研究论文分析了各种IPv6地址中的熵。

2.6.2.3 相关性

在ipv4网络中,很容易将多个日志关联起来,例如,查找与特定ipv4地址相关的事件。一个简单的unix grep命令就足以扫描多个文本基础的文件文件,并提取与特定ipv4地址相关的所有行。在ipv6网络中,这可以稍微不同一些,因为有两个不同的字符串可以表达相同的ipv6地址。因此,不能使用简单的unix grep命令。此外,一个ipv6节点可以有多个ipv6地址。

为了在与ipv6相关的日志中实现相关性,建议将所有日志的格式设置为仅为规范的ipv6地址。然后,必须搜索当前(或历史)邻居高速缓存数据集,以正确查找ipv6地址的数据链路层地址。接下来,必须搜索当前和历史邻居缓存数据集,以查找与此数据链接层地址关联的所有ipv6地址,以获得搜索集。最后一步是在所有日志文件(只包含规范格式的ipv6地址)中搜索集中的任何ipv6地址。

此外,【RFC7934】建议每个前缀使用多个ipv6地址,因此也必须在这些多个ipv6地址之间进行关联。例如,通过在NDP缓存中发现与属性中相同的mac地址和接口。

2.6.2.4 异常行为检测

异常行为(如网络扫描、垃圾邮件、dos)可以以与ipv4网络相同的方式检测到:

  • 由接口计数器(snmp)或聚合流量检测到的流量的突然增加;
  • 高速缓存大小的快速增长;
  • 流量模式(每秒连接数量、托管的连接数量等)的变化,通过IPFIX的观察与使用。

2.6.3 总结

一些数据源(ipfix、mib、交换内容可寻址内存(cam)表、日志等)在ipv4中使用的,也用于ipv6网络的安全操作,dhcpv6租约文件不太可靠,邻居缓存更重要。

事实上,在字符中表示相同的ipv6地址,这使得当必须进行关联时,必须使用过滤器。

------Part4 End-----

你可能感兴趣的:(IPv6安全,网络安全,安全)