SRv6 网络的安全解决方案
当前解决 SRv6 网络源路由安全的方案主要分为基础方案和增强方案两部分。
基础方案:基于 ACL 进行流量过滤,丢弃非法访问内部信息的流量。
增强方案:基于 HMAC 对通信源进行身份验证,并对 SRv6 报文进行校验,防止报文被篡改带来的攻击。
RFC 7855 和 RFC 8402 等标准文稿定义了 SR 网络需要规定明确的网络边缘,确定了明确的网络可信域,可信域内的设备将被认定为是安全的。基于可信域的前提,基础方案是通过部署 ACL 策略对可信域外进入的报文进行防范 。基础方案大致包括 3 个方面:
对外接口上需配置 ACL 规则。若收到的 SRv6 报文的源地址或目的地址来自分配 SID 的地址块,则丢弃报文。这是因为正常情况下不应该将内部 SID 泄露到域外,若被域外获取,则认定携带该地址的报文为攻击报文。
对外接口和对内接口上均需配置 ACL 规则。当 SRv6 报文的目的地址为本地 SID 时,且源地址不是内部 SID 或内部接口地址,或不在 SID 空间范围内时,则将报文丢弃。这是因为只有内部的设备才能进行 SRv6 报文封装,所以当目的地址是 SID 时,源地址必须是内部的 SID 或者内部接口地址。
SRv6 只对显式发布为 SID 的本地 IPv6 接口地址进行 End 操作。即未声明成 SID 的本地 IPv6 接口地址如果被插入 Segment List,将匹配到接口地址路由,而不会触发 SID 的处理操作。如果本地 IPv6 接口地址插入最后一个 SID,即 SL = 0 时,节点需跳过 SRH 的处理。如果该地址被插入 Segment List 中间,即 SL > 0,则它被当作错误处理,丢弃该报文。
在理想情况下,禁止内部 SID 等信息泄露到 SRv6 可信域外,所以以上的安全策略能够在一定程度上保障 SRv6 网络的安全。
不过,在一些情况下,也会有意将域内的 SID 泄露到外域,比如通过泄露 Binding SID 用于 TE 选路。对于这样的例外,需要在边缘设备的对外接口上部署对应的 ACL 规则,允许携带 Binding SID 的流量通行。出于安全考虑, Binding SID 也仅会在有限的范围内泄露,例如一些可信的 SRv6 域,不会造成大的安全问题。
此外,为了提高安全保障,解决泄露 SID 到外域时带来的风险,SRv6 网络增加了 HMAC 机制对 SRH 进行验证,确保从域外进来的 SRv6 报文来自可信数据源。我们称这些安全措施为 SRv6 安全增强方案。
除了 Binding SID 场景可能用到 SRH 以外,在一些特定场景下,例如在云数据中心中,管理者可能将封装 SRH 的能力从路由器委托给主机,从而实现主机自主选路、应用级别精细调优等功能,此时就需要在接入层设备上增加一定的安全机制来确定接收到的 SRv6 报文安全可信,这同样需要用到增强方案的 HMAC 机制。
一般地,HMAC 用于在边缘路由器上校验 SRH,防止 SRH 等数据被篡改,同时也对数据发送源进行身份验证。所以在增强方案中,需要在边缘路由器上配置对应的 HMAC 策略。当携带 SRH 的报文进入 SRv6 可信域时,将触发 HMAC 处理。如果 SRH 不携带 HMAC TLV 或 HMAC 校验失败(计算摘要与携带摘要不一致),则丢弃报文。当且仅当 HMAC 校验成功时,才能放行。
路由器在处理 HMAC 时,需要先检测 IPv6 报文头的目的地址字段与 Segment List 中 SL 指向的 SID 地址是否一致,然后检测 SL 是否大于 Last Entry,最后才基于以上的字段计算校验和,并进行校验。通过 HMAC,不仅可以确认 SRv6 报文来自可信主机,还可以确保 SRv6 SRH 等相关数据在传输的过程中没有被篡改,从而有效保护 SRv6 网络。
基于当前的 IPsec,可以为基础网络提供一定程度的安全保障。在此基础上,通过配置 ACL 规则的 SRv6 安全基础方案和使用 HMAC 校验的安全增强方案,可以确保 SRv6 域的通信源可信以及报文不被篡改,从而保障了 SRv6 域安全,解决了窃听、报文篡改、仿冒、DoS/DDoS 等网络安全问题,为当前的 SRv6 部署提供了充足的保障。
版权声明: 本文为 InfoQ 作者【穿过生命散发芬芳】的原创文章。
原文链接:【http://xie.infoq.cn/article/5dcd91b9ab646750bbed9fcfa】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论