6. Security Considerations (安全考虑事项)
本节描述与 PIM-SM 协议相关的各种可能的安全问题。读者可以参考 [8]、[14] 和 [15] 以进一步讨论 PIM-SM 和组播安全性。
请注意, PIM 依赖于在 PIM 外部填充的 MRIB; 因此, 建议 (RECOMMENDED) 保护 MRIB 更改来源的安全性。
6.1. Attacks Based on Forged Messages (基于伪造消息的攻击)
可能造成的损害程度取决于接受的伪造消息的类型。接下来我们考虑可能的伪造的影响, 包括伪造的链路本地消息 (Join/Prune、Hello 和 Assert) 和伪造的单播消息 (Register 和 Register-Stop)。
6.1.1. Forged Link-Local Messages (伪造的链路本地消息)
Join/Prune、Hello 和 Assert 消息都发送到链路本地 ALL-PIM-ROUTERS 组播地址, 因此不会被符合标准的路由器转发。此类型的伪造消息只有在由本地主机发送或被受损或不符合标准的路由器允许进入 LAN 时才能到达 LAN。
-
伪造的 Join/Prune 消息可能导致组播流量被传递到没有合法请求者的链路, 从而可能浪费该链路上的带宽。在多路访问 LAN 上伪造的 leave 消息通常不是 PIM 中的重大攻击, 因为 LAN 上任何合法加入的路由器都会在上游路由器停止向 LAN 转发数据之前用加入覆盖 leave。
-
通过伪造 Hello 消息, 未经授权的路由器可以使自己在 LAN 上被选举为指定路由器 (Designated Router)。LAN 上的指定路由器 (在没有断言的情况下) 负责代表任何本地成员向该 LAN 转发流量。指定路由器还负责将 LAN 上的主机发起的任何数据包注册封装到 RP。因此, 本地主机发送和接收组播流量的能力可能会受到伪造的 Hello 消息的影响。
-
通过在多路访问 LAN 上伪造 Assert 消息, 攻击者可能导致合法的指定转发者停止向 LAN 转发流量。此类伪造将阻止该 LAN 下游的任何主机接收流量。
6.1.2. Forged Unicast Messages (伪造的单播消息)
Register 消息和 Register-Stop 消息由中间路由器使用正常 IP 转发转发到其目的地。如果没有数据源身份验证, 网络中任何位置的攻击者都可能伪造 Register 或 Register-Stop 消息。接下来我们考虑伪造这些消息的每一个的影响。
-
通过伪造 Register 消息, 攻击者可以使 RP 将伪造的流量注入共享组播树。
-
通过伪造 Register-Stop 消息, 攻击者可以阻止合法 DR 向 RP 注册数据包。这可以阻止该 LAN 上的本地主机发送组播数据包。
上述两个 PIM 消息不会被中间路由器更改, 并且只需要由预期的接收者检查。因此, 这些消息可以进行端到端身份验证。对 Register 和 Register-Stop 消息的攻击不适用于仅 PIM-SSM 的实现, 因为 PIM-SSM 不需要这些消息。
6.2. Non-cryptographic Authentication Mechanisms (非加密认证机制)
PIM 路由器应该 (SHOULD) 提供一个选项来限制它将接受 Join/Prune、Assert 和 Hello 消息的邻居集合。可以使用 IP 地址的静态配置或 IPsec 安全关联。此外, PIM 路由器不应该 (SHOULD NOT) 接受来自尚未收到有效 Hello 消息的路由器的协议消息。
指定路由器绝对不能 (MUST NOT) 对数据包进行注册封装并将其发送到 RP, 除非数据包的源地址对于接收数据包的子网是合法地址。同样, 指定路由器不应该 (SHOULD NOT) 接受其 IP 源地址不是本地域的有效 RP 地址的 Register-Stop 数据包。
实现应该 (SHOULD) 提供一种机制来允许 RP 限制它接受注册封装数据包的源地址范围。
所有限制接受数据包的地址范围的选项必须 (MUST) 默认为允许所有数据包。
6.3. Authentication (身份验证)
本文档参考 RFC 5796 [8], 该文档指定了使用 IPsec 封装安全载荷 (Encapsulating Security Payload, ESP) 或 (可选) 认证头 (Authentication Header, AH) 对 PIM-SM 链路本地消息进行身份验证的机制。它还指出, 非链路本地的 PIM-SM 消息 (即 Register 和 Register-Stop 消息) 可以通过两个通信方之间的正常单播 IPsec 安全关联 (Security Association, SA) 来保护。
6.4. Denial-of-Service Attacks (拒绝服务攻击)
对 PIM 有许多可能的拒绝服务攻击, 这些攻击可能由生成虚假 PIM 协议消息甚至生成虚假流量引起。对 PIM 协议流量进行身份验证可以防止某些 (但不是全部) 此类攻击。两种可能的攻击包括以下内容:
-
快速向许多不同的组地址发送数据包本身就可能是拒绝服务攻击。这将导致许多注册封装的数据包, 给 DR、RP 以及 DR 和 RP 之间的路由器带来负载。
-
伪造 Join 消息可能导致组播树被建立。大量伪造的加入可能会消耗路由器资源并导致拒绝服务。