中国科技论文在线
http://www.paper.edu.cn
OSPF 路由协议安全性研究分析
康威,罗守山,辛阳
北京邮电大学计算机系,北京 (100876)
E-mail: nonokangwei@163.com
摘 要:路由协议作为网络中的基础协议,其安全是网络安全的基础。本文分析了当前流行
的链路状态路由协议 OSPF 的安全性,通过分析协议自身机制的漏洞,提出潜在的安全威胁。
最后本文结合当前的研究成果给出了防范策略。
关键词:网络安全;路由协议;OSPF 协议;协议分析
1 引 言
随着 Internet 的高速发展,网络规模与日俱增,拓扑结构也愈发复杂,使得 Internet 对
网络基础设施的依赖性大大提高。路由协议是 Internet 基础设施的核心,在路由协议的规定
下路由信息得以传递、更新,路由器通过收集整合这些路由信息来构建路由表从而提供报文
转发的服务。如果没有正确的路由信息,数据在网络中的传输面临着低效乃至失败的威胁。
虽然路由协议非常重要,不幸地是由于历史原因,它们对恶意的或偶然的错误路由信息
的传播缺乏保护措施。在这些路由协议被设计的时期,大家对网络中计算机的认识,还停留
在感性上可信性上,网络中设备之间的通信被假设在一种安全可信的环境下进行。但是对于
现今的网络环境,这种假设遗留下很多安全漏洞。由于网络中路由器以一种协作的方式进行
工作,相互之间通过传递、交换各自的路由信息以获得整个网络的路由信息,但是在这些路
由信息在传递、交换的过程中,面临着被篡改、伪造等威胁。
OSPF[1、2](Open Shortest Path First)路由协议是伴随着 Internet 快速发展而出现的一种
内部网关协议,为各大设备商实施应用,已经成网络部署中使用最广泛的域内路由协议之一。
随着网络安全被人们日趋重视,路由协议作为网络传输的基础,所以它的安全性有着至关重
要的意义。OSPF 虽然在设计时引入了一些安全措施,但是由于自身协议机制上的漏洞,使
得这些措施并不能完全保证它的安全性。本文将就 OSPF 存在的漏洞进行全面的分析,并给
出一些可行的解决建议。
2 OSPF 协议简介
OSPF(Open Shortest Path First)路由协议是基于网络链路状态变化而动态进行路由选
择的一种内部网关路由协议。在基于链路状态的路由协议中,每个路由器维持一个描述自治
系统(运行在同一内部网关路由协议下的网络)拓扑信息的数据库。这个数据库被称为链路
状态数据库。自治系统中的每个路由器都拥有一个相同的数据库。数据库是由每个路由器的
链路状态信息集合起来构成的。域内路由器通过泛洪机制来将自己的链路状态信息传播给整
个网络中的其它路由器。之后路由器利用这些拓扑信息,通过最短生成树算法生成路由表。
最短生成树生成过程中,每个路由器都各自以自己为根,从而就获得它到域内其它路由器或
网络的最短路径。
OSPF 路由协议路的核心是邻居的发现和邻接的建立。邻居的发现是每个路由器生成自
身链路状态信息的基础,而邻接的建立是链路状态信息传递、交换的基础。OSPF 路由协议
通过 Hello 报文、DD(Database Description)报文、LSU(Link State Update)报文、LSR(Link State
Request)报文、LSA(Link State Acknowledgment)报文五类报文来完成上述邻居的发现和邻
接的建立过程的。图 1 描述发现和建立过程:
-1-
中国科技论文在线
http://www.paper.edu.cn
图 1 OSPF 邻居发现过程和邻接建立过程
路由器通过发送 Hello 报文来发现和维持邻居关系;DD 报文用来描述路由器各自数据
库中链路状态信息,这类信息是链路状态信息的摘要,建立邻接关系的路由器通过交换各自
的路由状态信息,便可知道自己的链路状态数据库有哪些缺失;LSR 报文是在知道自己链
路状态数据库中信息有哪些缺失后,有选择的向对方发出请求,请求对方发送该缺失信息;
LSU 报文即用来将具体的链路状态信息发送给对方;LSA 报文用来确认链路状态更新报文。
3 OSPF 路由协议的安全性介绍
相对于其他一些内部网关路由协议,OSPF 有着比较复杂的内部状态机,所以攻击者如
果发起攻击,实现过程也相应地复杂度比较高。另外,OSPF 协议本身的一些机制也为其提
供了安全性。下面主要就协议本身的一些保护机制进行分析:
3.1 层次化路由结构
OSPF 允许将自治系统内的多个网络和主机组合在一起,这个组合由网络、主机及含有
连接这些网络和主机接口的路由器组成,称为一个区域。一个运行 OSPF 路由协议的自治系
统可化为若干区域,每个区域各自拥有自己的链路状态数据库,各自在本区域内执行链路状
态路由算法。这样使得本区域内的拓扑可以对区域外的网络实现隐藏,在自治系统交换、传
播路由信息时,可以减少网络流量,加快收敛速度。OSPF 将自治系统划分为骨干区域和若
干非骨干区域,各骨干区域通过 ABR(Area Border Router)与骨干区域相连。非骨干区域
内部路由信息通过 ABR 汇总进入骨干区域,再由骨干区域中与其他非骨干区域相连的 ABR
通告给其他区域。路由器依据待转发报文的源地址和目的地址的所在区域来选择路由:当源
地址和目的地址属于同一区域,则选择域内路由;反之,如果源地址与目的地址属于不同区
域,则选择域间路由。并且在协议中规定,域内路由的优先级高于域间路由,这样保证了区
域内的路由选择不受其他区域错误路由信息的影响。
3.2 可靠的泛洪机制
OSPF 路由协议中用 LSU 报文来携带路由信息,通过协议本身定义的泛洪机制,使得区
域内的路由器的链路状态数据库的一致性,进而保证路由选择的一致性。在 OSPF 路由协议
-2-
中国科技论文在线
http://www.paper.edu.cn
中路由协议的最小单元称为 LSA(Link State Advertisement),用它来描述网络中的拓扑结构
信息。LSA 由路由器生成,其中包含有生成该 LSA 的路由器的标识信息(在区域内唯一识
别该路由的路由器号码),根据该标识及下面的机制,使得 OSPF 具有了自我纠错能力。当
区域内某一路由器伪造或篡改的 LSA 并传播来污染网络时,当该 LSA 的父亲(即与该 LSA
中的路由器号码相同的路由器)收到该 LSA 时,会发现该 LSA 的信息与真实信息不符,该
路由器将生成新的 LSA,将其传播到网络中,使被污染的路由器将错误信息丢弃。上述过
程被称为泛洪,这种机制使得 OSPF 具有一定的自我纠错能力(后文中我们称这种自我纠错
行为为自卫),可以从一定程度上抵御不良路由信息。
与距离向量路由协议比较起来,OSPF 作为链路状态路由协议,其每个路由器都使用来
自最初路由信息发布者通告的未经加工的路由信息,而不是来自于其邻居的经过整合的理由
信息。这种信息的相互独立性,有助于路由器发现非法的路由信息,并确定问题出现在哪里。
当恶意攻击者试图伪造和篡改路由信息时,路由信息的最初发布者将进行纠错,来抵御不良
信息的蔓延。
3.3 报文验证机制
在 OSPF 的报文中含有认证类型和认证数据字段,目前协议支持空认证、明文认证、密
码认证三种模式。认证类型支持以端口为单位进行配置。明文认证是在路由器互相传递的报
文中填充上预先配置的口令,如果接收到的报文中的口令与配置口令不符,则该报文将被丢
弃。使用明文认证时,口令以明文方式在网络中传输,任何可访问到该网络的人都可以获得
该口令,攻击者可以很容易伪造报文,进而危及 OSPF 路由域的安全。在这种认证类型下,
路由信息的安全性基本上得不到保障。相对于明文认证,密码认证就提供了良好的安全性。
通过为接入同一网络或子网的路由器配置一个共享密码,之后这些路由器发送至该网络的每
一个 OSPF 报文都携带一个根据该共享密码生成的信息摘要。该信息摘要是根据 OSPF 报文
和共享密码通过 MD5 算法生成的,当路由器接收到 OSPF 报文时根据 OSPF 报文和本地配
置的共享密码生成一个信息摘要与接收到报文中的信息摘要进行比对,如果相符,接收,反
之,丢弃。由于共享密码从不在网络中传输,所以排除了在网络中被窃取的可能。但这并不
意味着完全的安全,当 OSPF 路由域内的某一合法路由器沦陷或者被控制时,其他路由器并
不能发现这样的错误。
3.4 报文接收与状态机
OSPF 在接收一个协议报文之前有着严格的检验机制,从 IP 层检验到 OSPF 协议层检验,
其中包含了很多字段,所以攻击者在构造畸形报文时存在着一定的复杂性。另外,上一节已
经介绍过 OSPF 邻居发现和邻接建立过程,OSPF 的五类报文的接收和状态机是密切相关的,
特定类型的报文只在接口在相应的状态下才被接收。如果攻击者想发起攻击,并不是简单的
伪造或篡改单个报文可以实现的,可能需要一系列的报文来实现。这也为 OSPF 协议的安全
性提供了一定的保障。
4 OSPF 协议漏洞分析
对于协议的攻击大致可以分为两类:伪造攻击和重放攻击。伪造攻击是对协议报文进行
针对性地畸形构造,通过修改报文中的字段来达到攻击的目的;重放攻击是通过监听网络中
的协议报文,将它们保存下来,进行周期性有规则地重新发送。在分析 OSPF 协议漏洞之前,
我们先定义两种安全场景。正如我们所了解的 OSPF 协议提供了空认证、明文认证、加密认
-3-
中国科技论文在线
http://www.paper.edu.cn
证三种认证模式。我们将空认证归为一类安全场景,在此场景下,攻击者无需获取密钥即可
实现伪造攻击和重放;第二类安全场景为 OSPF 协议启用密钥认证,无论明文认证,加密认
证,如果攻击者无法获得密钥将无法进行伪造攻击,但可以进行重放攻击。下面分别 OSPF
协议中的伪造攻击漏洞和重放攻击漏洞。
4.1 伪造攻击漏洞
在 OSPF 协议报文中,不同的报文中不同的字段在协议运行过程中扮演着重要的角色,
协议中很多机制的触发都是依赖于报文中的内容来实现的。如果攻击者恶意的篡改其中的一
些字段,很可能引导路由器进行非预期的操作。下面我们分别针对 OSPF 的五类报文来说一
说。
4.1.1 Hello 报文
Hello 报文可以说是 OSPF 协议的基础。OSPF 作为链路状态路由协议,每个路由器自身
各个接口的链路状态信息都是通过 Hello 报文来获取的。路由器通过 Hello 报文来发现相邻
路由器并与他们建立邻居关系,从而产生描述自身链路状态信息的 LSA。我们可以把 OSPF
路由域的拓扑想象为一幅地图,每个路由器生成的 LSA 就是地图上的一角,如果不能正确
地生成 LSA 来描述这一角,将影响到整个网络拓扑。
OSPF 通过周期性的发送 Hello 报文来确认链路的状态,当两个路由器成为邻居后,他
们的 Hello 报文中会相互携带对方的路由器 ID 信息。当路由器接收到对方的 Hello 报文中含
有自己的路由器 ID 信息,则它认为该链路是连通、存活的。如果攻击者将 Hello 报文中的
路由器 ID 信息进行篡改或者删除,将引发路由器间的邻居关系和邻接关系被破坏,进而路
由器会重新生成描述自身链路状态信息的 LSA。根据前面介绍的泛洪机制,路由器会将错
误的 LSA 传播至整个区域。
在广播网络下,为了减少 OSPF 协议间的通信流量,通过选举 DR(指定路由器)和 BDR(备
用指定路由器)来实现。攻击者如果篡改 Hello 报文中的 DR 和 BDR 字段,引发指定路由器
和备用指定路由器的重新选举。有经验的攻击者可能伪造出一个并不存在的指定路由器,这
将导致该网络在 OSPF 路由域中被屏蔽。因为在 OSPF 路由协议中指定路由器通过生成
Network LSA(网络链路状态信息声明),向路由域中其他路由器传播该网络的路由信息。
4.1.2 DD 报文、LSR 报文和 LSA 报文
DD 报文、LSR 报文和 LSA 报文都是在路由器间建立邻接关系时候被发送,正如我们
前面看到的邻接关系的建立,各种报文的发送是有时序性的,只有当与邻居的状态机到达某
一状态时,相应的报文才会被接收。对于一般的攻击者来说,在网络中很难把握当前链路上
的状态,对于单纯地篡改这些报文,如果相应邻居状态不正确,攻击并不能够生效。但是攻
击者可以通过伪造不存在的路由器或先将邻居关系破坏掉,从而实现对时序的控制。在攻击
者掌控时序的状态下,攻击者可以通过篡改这三种报文来消耗路由器上的存储资源。在邻接
关系建立的过程中,每个路由器维持着请求类表,重传列表等,攻击者通过伪造并不存在的
信息使得路由器相应的列表无限膨胀,将影响路由器的正常工作性能。
4.1.3 LSU 报文
LSU 报文是 OSPF 协议的核心,它承载着网络的拓扑信息,不正确的拓扑信息可能导致
报文传输低效甚至失败。当路由器间建立了邻接关系后,LSU 报文就会随时被接收。LSU
-4-
中国科技论文在线
http://www.paper.edu.cn
报文中的一些字段有着特殊的意义,它跟泛洪机制有着紧密的联系,如果它们被攻击者利用
有可能引发不必要的网络流量,更严重的是导致路由服务失效。
路由域中的路由器的链路状态数据库中的每一条 LSA 都有生存时间,路由器为它们启
动计时器来控制它们。当在计时器被触发时,说明在规定存活时间内该路由没有被刷新,该
路由已经失效,此时路由器将该 LSA 中的 MaxAge 字段置成最大值,并将其泛洪到路由域
中,通告其它路由器该路由信息已经失效。当该 LSA 的源生成者收到该 LSA 时,会发起一
个新的 MaxAge 为零的 LSA 来更新路由域。利用这个漏洞攻击者可以通过篡改网络中 LSU
报文,将其中包含的 LSA 中的 MaxAge 字段设为最大值,这将引起路由域的不稳定。在网
络再次收敛前,可能导致部分网络无法访问。虽然在泛洪机制中,源路由器可以通过自卫操
作来抵抗这种攻击,但是如果攻击者周期性的进行这种攻击,会导致网络服务质量严重下降。
另外攻击者还可以通过修改 LSU 报文中的 Sequence Number 字段来实现攻击。在路由
器收到两条相同路由信息时,通过比较 Sequence Number 来判断哪个比较新。攻击者可以通
过截获 LSU 报文,将其中 Sequence Number 字段作加一操作,并将链路代价改为比较大的
值。这将使得路由器接收伪造的路由信息,并通过泛洪机制将错误路由信息向网络中扩散。
同样地,在源路由收到错误路由信息进行自卫之前,网络将受到影响。
4.2 重放攻击漏洞
上面介绍的篡改攻击漏洞,在 OSPF 路由域没有启用密码认证机制或攻击者破解密码的
情况下是可以实现的。明文认证时的密码获取比较简单,但是对于密码认证就比较困难,因
为共享密码不在网络上传输所以无法截获。这时攻击者可以利用重放攻击来实现攻击,虽然
通过 MD5 算法可以有效地防止报文被篡改,但在防重放攻击上还是存在漏洞。在密码认证
模式下,OSPF 报文通过 32 位的无符号递减数作为密码序号来防止重放攻击。但是在路由
器发出 232 个报文后序列号将会出现回绕,攻击者如果之前截获一些 OSPF 报文,这个时候
传输进网络将被路由器接受。另外路由器在使用过程中进行重启操作也会使序列号归零。对
于上面在篡改攻击中介绍的方法都可以应用到重放攻击中,通过截取网络中的 OSPF 报文,
在特定时间进行重放就可实现攻击目的。
5 小结
本文分析并提出了 OSPF 的安全漏洞,通过分析我们可知,良好的路由协议的安全性不
但可以抵御外部攻击,同时可以抵御内部攻击。通过上面的研究分析我们可以看到目前 OSPF
协议本身还是存在着很多的漏洞,目前已经提出的解决方案主要是利用更合理的密码体制。
Perlman[5,6]使用在链路状态信息发布和公钥发布中引入非对称加密技术框架,非对称加密技
术框架也称作数字签名框架。在数字签名框架中,消息的签名和认证使用不同的密钥。
Murphy 和 Badger[7]提出了一种设计方案,该方案通过数字签名框架实现 OSPF 路由协议中
链路状态信息和公钥的安全发布。数字签名框架是一个解决链路状态信息发布问题的有力候
选者。然而,在[7]中作者同时指出,该方案用于生成和验证签名的开销是巨大的。一个路由
器需要验证签名的数量受很多因素的影响:网络中路由器的数量;网络区域的划分;链路状
态信息变化和刷新的频率;网络内部和外部不同子网数量;以及使用的路由协议种类。在
OSPF 中,由于每一条外部子网路径有一条单独的链路状态信息描述,所以网络中可能会有
成百上千此类链路状态信息。为了缓解这些对性能的影响,Murphy 和 Badger 给出了一些建
议:在路由器上使用额外的硬件;改进优化 OSPF 路由协议;周期性或按需验证签名。针对
-5-
中国科技论文在线
http://www.paper.edu.cn
于最后一条建议,Hause,Przygienda,Tsudik[8]提出了一种减少链路状态信息认证开销的技
术。他们的技术是以一种称作哈希链的原理为基础,该原理由 Lamport 在[9]中设计提出。
尽管在开销减少方面该方案有它的独到之处,但是仍然存在一些缺陷。目前已经有人提出新
的研究方向,在利用密码体制安全性的同时引入入侵检测技术,来使 OSPF 的安全性更好的
被实现。
参考文献
[1] Gray Malkin. Rip Version 2 Carrying Additional Information[D]. Internet RFC 1723, Xylogics, Inc.,
November 1994.
[2] John Moy. Ospf Version 2. Internet RFC 2328[D], Proteon, Inc., April 1998.
[3] Joint Technical Committee ISO/IEC JTC 1 Information Technology. Information Technology -
Telecommunications and Information Exchange between Systems – Intermediate System to Intermediate System
Intra-domain Routing Information Exchange Protocol for use in Conjunction with the Connectionless-mode
Network Service(ISO 8473). ISO/IEC 10589, International Organization for Standardization, April 1992.
[4] Joint Technical Committee ISO/IEC JTC 1 Information Technology. Information Technology -
Telecommunications and Information Exchange between Systems – Protocol for Exchange of Inter-domain
Routing Information among Intermediate Systems to Support Forwarding of ISO 8473 PDUs. ISO/IEC 10747,
International Organization for Standardization, October 1993.
[5] R. Perlman. Network Layer Protocols with Byzantine Robustness[D]. PhD thesis, Massachusetts Institute of
Technology, August 1998.
[6] R. Perlman. Interconnections: Bridges and Routers[D]. Addison-Wesley, 1992.
[7] S. Murphy and M. Badger. Digital signature Protection of the OSPF routing protocol[D]. In Proceedings of the
Symposium on Network and Distributed System Security (SNDSS ’96), pages 93-102, February 1996.
[8] R. Hauser, T. Przygienda, and G. Tsudik. Reducing the cost of security in link-state routing[D]. In
Proceedings of the Symposium on Network and Distributed System Security (SNDSS ‘97), pages 93-99, February
1997.
[9] L. Lamport. Password authentication with insecure communication [D]. Communications of the ACM, 24(11):
770-772, November 1981.
[10] R. Rivest. The MD5 message-digest algorithm[D]. RFC 1321, IETF, April 1992.
Research and Analysis of the Security Mechanism in OSPF
Kang Wei, Luo Shoushan, Xin Yang
Beijing University of Posts and Telecommunications, Beijing, China (100876)
Abstract
Routing protocol is the infrastructure of the network, its security is important for network security.
This paper analyze the link-state routing protocol OSPF’s security. With the research on limitation of
protocol mechanism, we give the potential security threat. In the end, we introduce some solutions and
put forward the new direction of research.
Keywords: network security; routing protocol; OSPF protocol; protocol analysis
-6-