跳到主要内容

7. 安全考虑

本节概述与 SSM 相关的安全问题. 涉及的主题包括 IPsec, 拒绝服务攻击, 源地址伪造, 以及与管理范围相关的安全问题.

7.1. IPsec 和 SSM

如果接收者使用支持组播的 IPsec 实现, 即 [RFC4301] 所要求的实现, 则可以使用 IPsec Authentication Header (AH) 和 Encapsulating Security Payload (ESP) 来保护 SSM 流量.

7.2. SSM 和 RFC 2401 IPsec 注意事项

对于 RFC 2401 IPsec 的现有实现, 现已由 [RFC4301] 取代, 有几个与 SSM 相关的注意事项如下. 在 RFC 2401 IPsec 中, 源地址不会作为 SAD 查找键的一部分. 因此, 如果两个发送者恰好使用相同的 SSM 目的地址和相同的 Security Parameter Index (SPI), 那么在同时接收这两个信道的任何主机上, 二者都会在 SAD 中 "冲突". 由于信道地址和 SPI 都由发送者自主分配, 因而没有合理办法确保每个发送者都使用唯一的目的地址或 SPI.

如果接收者同时订阅两个使用 IPsec 的无关信道, 而这些信道的源恰好使用相同的 IP 目的地址 (IPDA) 和相同的 IPsec SPI, 就会出现问题. 由于信道目的地址由发送者自主分配, 任意两个主机都可以同时使用相同目的地址, 且没有合理办法确保这种情况不会发生. 不过, <IPDA,SPI> 元组由通常随机选择的 56 位组成, 即 IP 目的地址的 24 位和 SPI 的 32 位, 因此随机发生冲突的可能性不大.

如果发生这种冲突, 接收者将无法同时接收来自两个冲突源的 IPsec 保护流量. 接收者可以通过发现自己正在接收来自两个不同源, 但具有相同 SPI 和相同 SSM 目的地址的流量来检测这种情况.

7.3. 拒绝服务

订阅请求会在路由器中创建 (S,G) 状态以记录该订阅, 调用该路由器上的处理, 并且可能导致相邻路由器进行处理. 主机可以通过请求大量订阅来发起拒绝服务攻击. 在以下情况下可能导致拒绝服务:

  • 原本不需要的大量流量到达, 消耗网络资源来递送这些流量, 并消耗主机资源来丢弃它们.

  • 网络路由器中创建大量源特定组播状态, 使用路由器内存和 CPU 资源来存储并处理这些状态.

  • 为管理源特定状态而生成大量控制流量, 使用路由器 CPU 和网络带宽.

为减少这类攻击造成的损害, 路由器可以提供配置选项来限制例如以下项目:

  • 任一接口上所有主机被允许发起订阅的总速率, 以限制伪造源地址攻击造成的损害.

  • 可从任一单个接口或主机发起的订阅总数.

不过, 实现者在决定人为限制订阅速率或数量时应谨慎, 因为未来应用可能会使用大量信道. 对信道订阅速率或数量设置过紧限制会阻碍这类应用的部署.

路由器应该验证订阅请求的源是否为接收该请求的接口上的有效地址. 如果不这样做, 会加剧伪造源地址攻击.

需要注意, 这些攻击并非 SSM 所特有, 它们也存在于任意源组播中.

7.4. 伪造源地址

攻击者可以通过伪造数据报中的源地址, 在属于另一主机的信道上传输数据报, 从而可能违反 SSM 服务模型. 因此, 需要强认证的应用不应在缺少更高层认证机制时假定某个信道上到达的所有数据包均由所请求的源发送. 例如, 可以使用 IPSEC Authentication Header [RFC2401, RFC4301] 对 SSM 传输的源进行认证.

组播中针对伪造源地址的某种程度保护已经相当普遍, 因为常见部署的 IP 组播路由协议 [PIM-DM, PIM-SM, DVMRP] 包含 "反向路径转发检查" (reverse-path forwarding check), 用于验证组播数据包是否从其源地址预期对应的接口到达. 用于 SSM 的路由协议应该纳入这样的检查.

源路由 [RFC791] (包括松散源路由和严格源路由) 与源地址伪造结合使用时, 可能使真实信道源的冒充者能够向 SSM 信道注入数据包. SSM 路由器默认应该禁止到 SSM 目的地址的源路由. 路由器可以提供允许源路由的配置选项. 也强烈鼓励使用反源地址伪造机制, 例如在网络边缘进行源地址过滤.

7.5. 管理范围

不应依赖管理范围作为安全措施 [ADMIN-SCOPE]. 不过在某些情况下, 它是安全解决方案的一部分. 需要注意, IPv4 源特定组播不存在管理范围. 一种替代方法是在必要时手动配置流量过滤器来创建这种范围.

此外, 对于 IPv6, 源地址范围和目的地址范围都不应用作安全措施. 在一些当前已部署的 IPv6 路由器中, 即不符合 [SCOPINGv6] 的路由器, 作用域边界并不总是应用于所有源地址. 例如, 某个实现可能过滤链路本地地址, 但不过滤其他地址. 这样的路由器可能会错误地通过 S 的作用域边界转发 SSM 信道 (S,G).