李炳彰,李雨菡,赵海强,3,赵 松
(1.中国电子科技集团公司第五十四研究所,河北 石家庄 050081;2.西北农林科技大学 水利与建筑工程学院,陕西 杨凌 712100;3.通信网信息传输与分发技术重点实验室,河北 石家庄 050081)
随着网络技术与信息技术的广泛应用和快速发展,网络安全事件的发生愈演愈烈,黑客的入侵手段也变得纷杂多样,入侵对象从单个计算机终端、应用系统逐步向网络系统发展,作为网络节点的路由器也经常被入侵,黑客利用路由器的后门和协议漏洞[1],直接控制路由器,威胁用户业务和数据的安全。但是,至今这些安全问题并未引起人们的重视,而针对网络基础设施尤其是路由协议的攻击却呈现出增长的趋势。
通信网络作为赛博空间的基础[2],其安全问题直接关系到赛博空间的安全[3],路由协议作为通信网络的核心协议,负责路由选择和网络连通,保障业务信息实时转发[4],其安全直接影响通信网络能否正常工作。路由协议主要来自互联网IETF组织,这些协议随着通信网络IP化的发展,大量应用在民用和军用通信网络中。路由协议为网络提供路由信息[5],本身存在着某些安全缺陷,例如:协议对等体间的认证强度不够;路由信息交互过程对协议内容保护缺失;路由协议由传输层或网络层协议承载和传输,这些承载协议的缺陷或漏洞将为路由协议带来安全威胁[6]。
开放最短路径优先(Open Shortest Path First,OSPF)路由协议是目前最为广泛使用的内部网关协议,由于其具有响应网络变化迅速、路由收敛速度快和网络带宽占用少的优点,已被作为主流路由协议应用于多个大型网络中。所以保证OSPF协议的安全性,成为保障网络可靠运行的关键所在。但目前对于OSPF协议安全性的研究成果主要集中在OSPF路由协议处理机制和LSA的数字签名[7],对于利用通过对等体认证实现OSPF协议安全增强方法较少。本文将通过改进路由协议的认证机制来提高其安全性,防止协议伪造、篡改等攻击对路由协议造成影响,同时利用认证过程产生会话密钥实现OSPF协议的完整性保护,增强协议抗篡改攻击能力。
OSPF协议是IETF于1988年提出的一种基于链路状态的动态路由协议,它引入“分层路由”的概念,将网络分割成相互连接的区域,每个区域如同独立的网络,区域内每个路由器向域内泛洪链路状态宣告(Link State Advertisement,LSA)保持链路状态数据库的同步,利用相同的Dijkstra算法计算出一致的最短路径树。
在OSPF协议中,定义了5种协议报文[8],分别用于邻居发现、邻接关系建立和链路状态数据库的同步。
① Hello报文:是OSPF协议的基础,用于获取路由器各个接口的链路状态信息、发现相邻路由器、建立与维持邻居关系以及选举指定路由器等。
② 数据库描述(Database Description,DD)报文:用于2个路由器间链路状态数据库的同步,DD报文中携带各自LSA的头部描述,对端路由器通过比较可以获知自己缺少的链路状态。
③ 链路状态请求(Link State Request,LSR)报文:通过DD报文获知自身需要的链路状态信息后,用于向邻接路由器发送LSR报文,请求对方发送详细的链路状态信息。
④ 链路状态更新(Link State Update,LSU)报文:响应邻居路由器发送的LSR,根据请求的链路状态信息标识将详细的链路状态信息发回邻居路由器。
⑤ 链路状态确认(Link State Acknowledgment,LSAck)报文:用于对收到邻居路由器发送的LSU报文的确认。
OSPF协议的运行目标是动态地保持区域内所有路由器的链路状态数据同步,其工作机制是从邻接路由器间的链路状态数据同步逐步扩散到整个区域。2个邻接路由器的链路状态数据同步包括2个过程:一是通过Hello报文动态地发现邻居并建立邻接路由器间的双向通信;二是通过DD报文发现邻接路由器间链路状态数据的差异,通过LSR/LSU的交互实现双方链路状态数据的同步[9]。OSPF协议的2个过程分为多个不同的状态,其状态转移过程如图1所示。
图1 邻居状态转移过程
Down:该状态为初始状态,表示一段时间内未收到邻接路由器的信息;
Attempt:该状态仅在NBMA环境中有效,处于本状态时,定期向那些手工配置的邻接路由器发送HELLO报文来保持联系;
Init:该状态表示已收到邻接路由器的HELLO报文,但报文中列出的邻居中没有自身的IP地址,双向通信尚未建立起来;
2-Way:该状态表示双方互相收到了对端发送的HELLO报文,双向通信已经建立;
Exstart:该状态下,邻接路由器之间通过互相交换DD报文来决定发送时的主/从关系;
Exchange:该状态下,路由器将本地的链路状态信息用DD报文来描述,发送给邻接路由器;
Loading:该状态下,路由器发送LSR报文向邻接路由器请求对方的链路状态数据;
Full:该状态为邻居状态机最后一个状态,2个邻接路由器间链路状态数据已经同步。
OSPF协议设计当初只考虑到一些网络问题,如链路的增加和减少、路由节点的宕机和重启、简单的路由认证等,并没有充分考虑安全问题,协议本身的不完善性,有可能给路由协议带来安全隐患,而这些隐患可被利用作为攻击OSPF协议的手段。
OSPF协议自身已经设计了内建的安全机制来保证协议的正常运行,但这些机制仍存在被攻击者利用的漏洞。
2.1.1 层次化的路由机制
层次化的路由机制在一定程度上可以缩小攻击的影响范围,但不能起到防护作用,尤其当攻击者仿冒一个区域/自治系统边界路由器发起攻击或者控制一个边界路由器后,反而会更容易使攻击影响整个区域或自治系统。
2.1.2 OSPF的泛洪机制
泛洪机制使得OSPF协议具有一定的自我纠错能力,通常被称作反击机制,可以在一定程度上抵御仿冒或篡改攻击。但不能阻止攻击者利用反击机制发起拒绝服务攻击,若攻击者发送大量伪造的报文,会致使路由器不断纠正错误路由,从而造成路由震荡甚至网络瘫痪。
2.1.3 报文的验证机制
OSPF协议自身的验证机制包括空认证、明文认证和密码认证3种方式。明文认证方式下,验证口令直接在报文中传输,任何可捕获该报文的用户可轻松获得口令;MD5密码认证方式增加了认证破解的难度,提高了安全性[10],但这并不意味着足够安全,MD5算法现在已证明能够被破解[11],攻击者可以破解后再入侵路由器,实施攻击行为。
2.2.1 OSPF协议数据报文头部缺陷
当OSPF自治系统内某一个路由器重启或者序号回滚时,邻居路由器就会重置它们交互的序列号状态。此时,恶意攻击者就可以利用序列号的漏洞将之前的数据包重放,而在网络中的路由器看来,这些报文是合法的。如果重放的数据包序列号足够大,就能导致被重放的路由器与其他路由器在一定时间内无法建立邻接关系。
2.2.2 Hello报文字段缺陷
2个邻接路由器的Hello报文头部中的字段不一致时,验证不通过,会导致路由器丢弃HELLO报文。所以只要篡改HELLO报文的这些字段,例如AreaID、RouterDeadInterval和HelloInterval等,就可以造成Hello报文被邻接丢弃,影响邻接关系。
2.2.3 LSU报文头部缺陷
路由器在接收LSU报文时,将首先比对其头部字段,确认无误后才进行下一步处理。因此,不正确的头部字段(RouterID、AreaID和AuType等)将使得整个路由报文被丢弃。
2.2.4 LSA头部缺陷
LSage字段代表了LSA产生后所经过的时间,如果恶意攻击者把该字段篡改为最大值,则会引起不必要的泛洪和链路状态数据库(LSDB)刷新,造成路由震荡。
LSsequencenumber字段标识一个LSA的序列号,序列号越大表示LSA越新,其他路由器更新序列号大的链路状态数据。恶意攻击者可通过改大序列号字段并加入伪造的链路状态信息,使接收路由器把虚假的链路状态信息更新到链路状态数据库。
2.3.1 计时器缺陷
计时器参数对OSPF协议的管理至关重要,Hello Interval计时器数值发生变化时,所有远程域内成员都将拒绝接收该发生变化的路由器的Hello数据报文,而后在Router Dead Interval时间间隔后中断与该路由器的邻接关系。
2.3.2 资源消耗的威胁
在路由请求、路由更新、指定路由器选举和DD报文交换阶段,如果持续恶意地以一定的频率发送报文,则目的路由器将会耗费大量内部资源,无法正常工作,甚至瘫痪。
OSPF协议安全增强是在OSPF协议流程基础上通过增加基于数字证书的协议对等体认证实现的。协议对等体使用数字证书作为有效身份信息标识,双向认证通过后产生会话密钥,协议交互流程中使用会话密钥生成安全认证信息增加到报文中,为OSPF报文提供完整性保护。
协议对等体认证过程是在经典的Needham-Schroeder公钥认证协议的修订版基础之上结合OSPF协议流程改进实现的。协议参与主体双方都事先拥有自己的证书,同时证书的私钥只有证书持有者知道。认证过程如图2所示。
图2 协议对等体认证过程
协议对等体认证的具体处理流程如下:
① 在邻居学习过程中,RT1发送HELLO报文时,携带发送方路由器的认证信息,包括数字证书、认证参数等;RT2接收HELLO报文时,进行安全增强标识判断,如果没有安全增强标识,则丢弃报文;如果有安全增强标识,则对HELLO报文携带的数字证书进行验证,验证不通过则直接丢弃报文,验证通过则进行HELLO报文的处理;
② 在密钥通知过程中,RT1发送密钥通知Key_Notify报文,携带发送方路由器密钥和签名,RT2收到密钥通知报文后对签名进行验证,签名正确则保存密钥,并回送密钥确认报文Key_Ack;
③ 在完整性保护过程中,双方发送OSPF协议报文时,生成原始报文的摘要,再使用双向认证过程中所产生的会话密钥,使用HMAC-SHA-1摘要信息进行加密,生成完整性保护信息,并置位安全增强标识;收到OSPF协议报文后,进行安全增强标识判断,如果没有安全增强标识,则丢弃报文;如果有安全增强标识,对OSPF协议报文进行认证及完整性保护的验证,验证不通过则直接丢弃报文,验证通过则进行后续的协议处理。
为实现OSPF协议安全增强,需对OSPF协议进行相应的扩展。扩展的内容包括:
① 增加密钥通知和密钥确认2种报文用于双方会话密钥的确认;
② 修改OSPF报文头中Type域定义;
③ 修改OSPF报文Options域,增加安全增强标识;
④ 修改HELLO报文格式,增加证书字段;
⑤ 修改其他协议报文,增加完整性保护字段。
密钥通知报文格式如图3所示。
图3 密钥通知报文格式
OSPF协议安全增强系统是在商用OSPF协议软件基础上进行安全性改进实现的[12],模块组成如图4所示,主要由数据收发模块、数据预处理模块、状态机处理模块、对等体认证模块、密钥处理模块、协议保护模块以及维护管理模块组成等组成。
图4 软件组成示意
其中,状态机处理模块用于OSPF协议状态机的处理,在邻居学习过程中,发送HELLO报文时,按照改造后的报文格式封装HELLO报文,携带发送方路由器的数字证书;接收HELLO报文时,读取HELLO报文中携带的数字证书,并调用对等体认证模块对数字证书进行验证,验证不通过则直接丢弃报文;邻居学习完成后,调用密钥处理模块启动密钥确认过程;密钥确认后,需要发送OSPF协议报文时调用协议保护模块对协议报文增加安全保护机制,接收到OSPF协议报文时,调用协议保护模块对收到的报文进行完整性保护验证。
对等体认证模块,使用发送路由器的公钥和数字证书进行签名比对,比对一致则为认证通过,不一致则为认证不通过,并保存通过认证的发送路由器的数字证书和公钥。
密钥处理模块,负责完成密钥的通知确认过程,发送密钥通知报文时携带发送方路由器密钥,接收方收到密钥通知报文后对密钥进行验证和保存,并回送密钥确认报文。
协议保护模块,负责完成OSPF协议报文的完整性保护,发送协议报文时,使用发送方路由器的密钥生成哈希运算消息认证码(Hash-based Message Authentication Code,HMAC)信息,并封装到协议报文中;接收到协议报文时,用所缓存的密钥对报文进行完整性保护的验证,并返回验证结果。
试验验证环境使用3台装载OSPF协议安全增强系统的路由器组网模拟通信网络,协议攻击系统接入模拟网络发起OSPF协议攻击,在路由器上通过使能OSPF安全增强功能对协议攻击进行防护。本文分别模拟了LSR报文伪造攻击[13]、DD报文伪造攻击[14]、最大序列号攻击和最大年龄攻击[15]共4种OSPF协议攻击方法,其中LSR报文伪造攻击和DD报文伪造攻击用于测试OSPF安全增强系统对协议伪造类攻击的防护能力,最大序列号攻击和最大年龄攻击用于测试OSPF安全增强系统对协议篡改类攻击的防护能力。
经过测试OSPF安全增强系统对4种协议攻击均有防护效果。其中对DD报文伪造攻击防护的试验结果如图5所示。
图5 DD报文伪造攻击防护效果
DD报文伪造攻击的效果为引起被攻击的路由器的占用率提高,未进行攻击的情况下,路由器的CPU占用率稳定在2%左右;发起攻击后CPU占用率增高至99%,并一直维持;路由器使能OSPF协议安全增强功能后,路由器CPU占有率恢复到正常的2%。
本文提出的基于对等体认证的安全增强方法,保证了协议主体的真实性、消息的新鲜性,所生成的会话密钥具有保密性、新鲜性和主体关联性,实现了双向认证安全、双向密钥协商安全及协议报文交互的完整性保护,并在此基础上进行了设计实现和攻击试验验证。试验证明,OSPF协议的安全增强方法可为提高OSPF协议安全性提供一种解决途径。
[1] 潘道欣,王轶骏,薛质.基于网络协议逆向分析的远程控制木马漏洞挖掘[J].计算机工程,2016(2):146-150.
[2] 周未,解文彬,李磊.赛博空间安全框架设计及风险评估方法[J].计算机工程与应用,2016(18):122-126.
[3] 吴巍.赛博空间技术发展现状与通信网络安全问题[J].无线电通信技术,2012,38(3):1-4.
[4] 李吉良.下一代网络路由交换关键技术研究[J].无线电通信技术,2008,34(2):1-5.
[5] DOYLE Jeff.Routing TCP/IP Volume 1[M].葛建立,吴建章,译.北京:人民邮电出版社,2002.
[6] 杨静,谢蒂,王雷.OSPF路由协议的安全分析及其漏洞防范[J].山东大学学报(工学版),2003,33(5):550-553.
[7] MURPHY S,BADGER M.Digital Signature Protection of the OSPF Routing Protocol[C].In Proceedings of the Symposium on Network and Distributed System Security (SNDSS.96),1996.
[8] 高明成.开放最短路径优先协议原理及攻击分析[J].电脑知识与技术,2009,30(5):8391-8392.
[9] 林思一.OSPF路由选择协议研究[J].哈尔滨商业大学学报,2003,19(6):651-653.
[10] 姚小兰.OSPF协议报文认证分析与安全研究[J].现代商贸工业,2008,20(1):266-267.
[11] 李丹,龙毅宏.MD5算法破解对实际应用的影响[J].信息安全与通信保密,2005(4):91.
[12] 刘兴涛,康宾,周三友,等.自主可控路由器控制交换系统设计[J].无线电工程,2016,46(8):5-8.
[13] 陈海燕,季仲梅,李鸥,等.OSPF路由协议安全性分析及其攻击检测[J].微计算机信息,2005(5):234-235.
[14] 安宁刚,李国栋,覃尊颖,等.OSPF协议DD报文的脆弱性分析与验证[J].微电子学与计算机,2015,32(2):52-55.
[15] 高峥,李林涛.OSPF协议安全性分析[J].黑龙江科技信息,2011(4):77.