书籍来源:《SRv6网络编程:开启IP网络新时代》
这本书已经出了很多年了,但多年之后因为工作需要再来读一遍,除了温习之外,发现自己学到了更多的知识。一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:SRv6网络编程自学系列 | 汇总_COCOgsta的博客-CSDN博客
为保障SRv6网络安全,需要确保以下两点:确认通信源可信;确保报文在传输过程中不被篡改等非法使用。所以SRv6的安全解决方案将围绕这两点展开设计。
设计SRv6网络安全方案时,需要从IPv6和源路由两方面入手,解决上面提到的“确认通信源可信”和“确保报文在传输过程中不被篡改等非法使用”的问题。接下来的内容将从IPv6和源路由两个方面对SRv6的安全方案展开介绍。
7.4.1 IPv6的安全措施
IPv6采用IPsec(Internet Protocol Security,互联网络层安全协议)作为其网络安全的基础必选协议。
基于IPv6数据平面的SRv6可以用IPsec来对报文进行加密和验证,提高网络安全性。但为了提供更灵活的可编程能力,当前文稿定义SRH的字段均为可变字段,所以计算AH认证摘要时,需要跳过SRH,这样AH就无法确保SRH不被非法篡改。
7.4.2 源路由的安全措施
源路由的安全问题在于如果内部信息被攻击者获取,则可被用于发现远程网络,攻击者可绕过防火墙和进行DoS/DDoS等攻击。
一个SRv6网络可以被称为一个SRv6可信域,在这个域内的设备默认是可信的。SRv6可信域如图7-13所示。在可信域内的路由器被称为SRv6内部路由器,在边缘的被称为SRv6边缘路由器。在网络边缘,连接到可信域外设备的接口被称为SRv6外部接口,而用于连接可信域内设备的接口被称为SRv6内部接口。
图7-13 SRv6可信域
在发布SRv6信息时,默认只能将SID等信息发布给域内的设备,而不允许泄露给可信域外的设备。同样,当报文离开SRv6可信域时,也不能将域内的信息带到域外。
此外,面对一些特殊的情况,SID需要被发布到域外。为了确保来自域外的流量安全可信,还需要在网络的边缘和内部部署对应的过滤规则或安全校验,比如ACL(Access Control List,访问控制列表)或者HMAC进行安全校验,将非法携带域内信息的流量丢弃。
7.4.3 SRv6网络的安全解决方案
当前解决SRv6网络源路由安全的方案主要分为基础方案和增强方案两部分。
- 基础方案:基于ACL进行流量过滤,丢弃非法访问内部信息的流量。
- 增强方案:基于HMAC对通信源进行身份验证,并对SRv6报文进行校验,防止报文被篡改带来的攻击。
RFC 7855和RFC 8402等标准文稿定义了SR网络需要规定明确的网络边缘,确定了明确的网络可信域,可信域内的设备将被认定为是安全的。基于可信域的前提,基础方案是通过部署ACL策略对可信域外进入的报文进行防范。基础方案大致包括3个方面,详情见图7-14。
图7-14 SRv6网络安全基础方案
在理想情况下,禁止内部SID等信息泄露到SRv6可信域外,所以以上的安全策略能够在一定程度上保障SRv6网络的安全。
不过,在一些情况下,也会有意将域内的SID泄露到外域,比如通过泄露Binding SID用于TE选路。对于这样的例外,需要在边缘设备的对外接口上部署对应的ACL规则,允许携带Binding SID的流量通行。
此外,为了提高安全保障,解决泄露SID到外域时带来的风险,SRv6网络增加了HMAC机制对SRH进行验证,确保从域外进来的SRv6报文来自可信数据源。我们称这些安全措施为SRv6安全增强方案,如图7-15所示。
图7-15 SRv6网络安全增强方案
一般地,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网络。