为什么在 IPv6 中 ARP 被 NDP 取代?

Gan*_*gm7 51 ipv6 arp ndp

ARP 被 NDP(邻居发现协议)取代。但我不知道这样做的确切原因。

  • ARP 中是否存在任何安全问题?
  • 为什么ARP被NDP取代?
  • ARP有什么优势?

谁能用简单的术语解释一下?

Dav*_*ill 68

ARP 中是否存在任何安全问题?

是的。这里有一些:

  • ARP 欺骗。

    虚假 ARP 消息通过 LAN 发送,导致攻击者的 MAC 地址与网络上合法计算机或服务器的 IP 地址链接。

    有关 ARP 欺骗/中毒的更多信息,请参见下文。

  • MAC洪水。

    跟踪哪些 MAC 地址位于哪些物理端口的转换表具有有限的内存量。这允许通过泛洪转换表来利用交换机。原始交换机不知道如何处理多余的数据,将“失败打开”并将所有网络帧广播到所有端口。

  • MAC复制。

    在 MAC 复制攻击中,交换机会误认为两个端口具有相同的 MAC 地址。由于数据将转发到两个端口,因此不需要 IP 转发。

TCP/IP 地址解析协议 (ARP) 的安全


为什么ARP被NDP取代?

它为 IPv6 提供了改进和附加功能。

有关 NDP 与协议地址解析协议 [ARP]、ICMP 路由器发现 [RDISC] 和 ICMP 重定向 [ICMPv4] 的比较,请参见下文。


NDP 如何防御 ARP 欺骗/中毒?

它使用安全邻居发现 (SEND) 协议。加密生成的地址确保声明的 NDP 消息源是声明地址的所有者。

IPv6 邻居发现协议 (NDP) 的功能之一是将网络层 (IP) 地址解析为链路层(例如以太网)地址,这是 IPv4 中由地址解析协议 (ARP) 执行的功能。安全邻居发现 (SEND) 协议可防止有权访问广播段的攻击者滥用 NDP 或 ARP 来欺骗主机将攻击者流量发送给其他人,这种技术称为 ARP 中毒。

为了防止 ARP 中毒和其他针对 NDP 功能的攻击,应该在可能无法阻止访问广播段的地方部署 SEND。

SEND 使用 RSA 密钥对来生成加密生成的地址,如 RFC 3972,加密生成的地址 (CGA) 中所定义。这可确保声明的 NDP 消息源是声明地址的所有者。

配置安全 IPv6 邻居发现


ARP 欺骗如何工作?

ARP 欺骗也称为 ARP 中毒路由 (APR) 或 ARP 缓存中毒。

ARP 欺骗是一种攻击类型,其中恶意行为者通过局域网发送伪造的 ARP(地址解析协议)消息。这会导致攻击者的 MAC 地址与网络上合法计算机或服务器的 IP 地址相关联。

一旦攻击者的 MAC 地址连接到一个真实的 IP 地址,攻击者就会开始接收任何针对该 IP 地址的数据。

ARP 欺骗可以使恶意方拦截、修改甚至停止传输中的数据。ARP 欺骗攻击只能发生在使用地址解析协议的局域网上。

源 Veracode ARP 欺骗


ARP 欺骗攻击是如何工作的?

ARP欺骗攻击的步骤通常包括:

  1. 攻击者打开一个 ARP 欺骗工具并设置工具的 IP 地址以匹配目标的 IP 子网。流行的 ARP 欺骗软件的例子包括 Arpspoof、Cain & Abel、Arpoison 和 Ettercap。

  2. 攻击者使用ARP欺骗工具扫描目标子网中主机的IP和MAC地址。

  3. 攻击者选择其目标并开始通过 LAN 发送包含攻击者 MAC 地址和目标 IP 地址的 ARP 数据包。

  4. 由于 LAN 上的其他主机缓存了欺骗性 ARP 数据包,这些主机发送给受害者的数据将转而发送给攻击者。从这里,攻击者可以窃取数据或发起更复杂的后续攻击。

源 Veracode ARP 欺骗

攻击者可以选择检查数据包(间谍),同时将流量转发到实际的默认网关以避免被发现,在转发之前修改数据(中间人攻击),或发起拒绝服务通过导致网络上的部分或全部数据包被丢弃来进行攻击。

来源维基百科ARP 欺骗


[NDP] 与 IPv4 的比较

IPv6 邻居发现协议对应于 IPv4 协议地址解析协议 [ARP]、ICMP 路由器发现 [RDISC] 和 ICMP 重定向 [ICMPv4] 的组合。

在 IPv4 中,虽然主机需求文档 [HR-CL] 确实为死网关检测指定了一些可能的算法(邻居不可达检测解决的问题的一个子集),但对于邻居不可达检测没有普遍同意的协议或机制。

邻居发现协议对 IPv4 协议集进行了大量改进:

  • 路由器发现是基本协议集的一部分;主机不需要“窥探”路由协议。

  • 路由器广告携带链路层地址;不需要额外的数据包交换来解析路由器的链路层地址。

  • 路由器广告携带链接的前缀;不需要有单独的机制来配置“网络掩码”。

  • 路由器广告启用地址自动配置。

  • 路由器可以通告一个 MTU 供主机在链路上使用,确保所有节点在缺少明确定义的 MTU 的链路上使用相同的 MTU 值。

  • 地址解析多播“传播”超过 1600 万 (2^24) 个多播地址,大大减少了目标节点以外的与地址解析相关的中断。此外,根本不应该中断非 IPv6 机器。

  • 重定向包含新的第一跳的链路层地址;接收重定向时不需要单独的地址解析。

  • 多个前缀可以与同一个链接相关联。默认情况下,主机从路由器广告中学习所有的链路前缀。但是,路由器可以配置为从路由器广告中省略部分或全部前缀。在这种情况下,主机假定目的地处于离线状态,并将流量发送到路由器。然后路由器可以根据需要发出重定向。

  • 与 IPv4 不同,IPv6 重定向的接收者假定新的下一跳在链路上。在 IPv4 中,主机会忽略根据链接的网络掩码指定不在链接上的下一跳的重定向。IPv6 重定向机制类似于 [SH-MEDIA] 中指定的 XRedirect 工具。预计在非广播和共享媒体链接上很有用,在这些链接中,节点不希望或不可能知道链接上目的地的所有前缀。

  • Neighbor Unreachability Detection 是基础的一部分,在出现路由器故障、部分故障或分区链路或节点更改其链路层地址的情况下,它显着提高了数据包传递的稳健性。例如,移动节点可以脱离链路而不会因为陈旧的 ARP 缓存而丢失任何连接。

  • 与 ARP 不同,Neighbor Discovery 检测半链路故障(使用 Neighbor Unreachability Detection)并避免向没有双向连接的邻居发送流量。

  • 与 IPv4 路由器发现不同,路由器广告消息不包含首选项字段。不需要首选项字段来处理不同“稳定性”的路由器;Neighbor Unreachability Detection 将检测死路由器并切换到工作路由器。

  • 使用本地链路地址来唯一标识路由器(用于路由器广告和重定向消息)使得主机可以在站点重新编号以使用新的全局前缀的情况下维护路由器关联。

  • 通过将 Hop Limit 设置为 255,Neighbor Discovery 不受意外或有意发送 ND 消息的离线发送者的影响。在 IPv4 中,离线发送方可以发送 ICMP 重定向和路由器广告消息。

  • 将地址解析置于 ICMP 层使该协议比 ARP 更独立于媒体,并使得在适当时使用通用 IP 层身份验证和安全机制成为可能。

RFC 4861 IPv6 中的邻居发现


进一步阅读

  • @DavidPostill 很棒的帖子。但是,您的帖子具有误导性,因为它表明 SeND 是 (a) NDP 的组成部分和 (b) 一个通用解决方案。事实并非如此——SeND 是一个附加组件,除了实验性的之外,没有任何 SeND 实现。此外,SeND 有其自身的缺点,并为拒绝服务攻击提供了可能性。最后,可以合理地假设 SeND 永远不会起飞(至少不会以目前的形式),因此不应该太大声地提出。 (4认同)
  • 嗯,虽然有多少操作系统实际使用 SEND (2认同)
  • @DavidPostill 不,[IPsec](https://en.wikipedia.org/wiki/IPsec) 在与 ARP/NDP 不同的层上工作。它需要一个工作通信通道来建立其安全特性。 (2认同)

jcb*_*rmu 10

NDPARP有更多的特性,包括:

  • 通过NDP,网络上的设备可以确定MAC/链路层地址(与ARP功能相同)。

  • 使用 NDP,网络上的设备可以定位到达外部网络中另一台设备的路径,找到到达目标设备的最佳路由器。

  • NDP 启用 IPv6 地址的自动配置。

与ARP相比,其机制不同:

ARP 使用广播消息,而 NDP 使用多播 ICMPv6 消息。

设备发送称为“邻居请求 ICMP 消息”或NS的多播消息。目标设备以“Neighbor Advertisement ICMP 消息”或NA 进行响应。

NS 消息使用称为请求节点多播地址的特殊多播目标地址,该地址代表具有相同 IPv6 地址最后 24 位的所有主机。使用多播代替广播减少了网络上不必要的流量。


cou*_*ode 7

引入 NDP 代替 ARP 主要是因为希望围绕 IP 整合控制协议。IPv4 享有ICMP、IGMP 和ARP/RARP 等多种控制协议。IPv6 NDP(ARP 的后继者)和 MLD(IGMP 的后继者)被设计为 ICMPv6 的子协议,因此只有一种控制协议。这没有安全原因,ND 和 ARP 一样容易受到欺骗,而且 ND 不是为了安全而设计的。

在IPv6的发展初期的IPsec被视为通用安全措施,因此是强制性的。但是,此要求已降级为建议(RFC 6434,我认为主要是由于嵌入式设备和物联网,它们根本无法执行公钥计算,而且它们会遇到各种 PKI 问题,无论如何)并且不能很好地保护 ND(礼貌地说)。引入 SeND 是为了将安全性添加到 ND 上,但对于以前在追溯安全性软件设计中的几乎所有尝试,结果都不是最佳的。由于除了一些实验性的之外,仍然没有 SeND 的实现,因此对于所有实际目的来说,SeND 是不存在的。此外,有理由相信 SeND——至少在目前的形式下——永远不会起飞。

相比之下,SAVI 看起来更有前景,但需要改变交换基础设施,而且支持 SAVI 的设备价格并不低,因此也不会迅速普及。SAVI 的工作原理是,在站点内应该“知道”硬件地址(即 MAC 地址)和 IP 地址之间的哪些映射是合法的,因此应该可以识别和删除虚假的 NDP 消息。

最好的方法是最简单但经常被忽视的方法:将大型 LAN 分解为较小的 LAN,以便 ARP 和 ND 欺骗仅对同一 LAN 中的目标起作用。因此,只需将不可信设备放入它们自己的 LAN 网段(不需要防火墙/过滤规则)将大大减少攻击面。