司震宇
(东北农业大学网络信息中心,哈尔滨 150030)
随着信息技术的不断发展,网络安全等问题日益关注,现有网络安全产品不能够充分满足用户对网络安全的需求,主要表现在:①已有网络安全产品不能充分满足用户需要,产品升级需很高费用;②传统网络安全产品只针对特定的网络安全事件做出相应的决策,对于突发的网络安全事件不能做出反应;③传统的网络安全产品只注重对已有网络安全问题的防御和打击,不能及时反应网络安全状态,对网络的当前安全状态不能够进行实时监控。网络安全态势评估技术能够综合各方面的安全因素,从整体上动态反映网络安全状况,并对安全状况的发展趋势进行预测和预警,为增强网络安全性提供可靠的参照依据[1]。网络安全态势感知是在传统网络安全产品不能够充分满足网络安全需要情况下提出,网络态势感知系统缺少一种有效、直观的显示方式把当前的网络态势信息报告给网络管理者[2]。网络拓扑不仅能够反映受控网络的连接,而且能够加以利用使其为网络态势感知提供实时、准确的监控平台。以网络拓扑发现为基础,通过网络拓扑可视化描述网络态势信息能够便于管理员了解网络态势,及时发现网络异常行为。网络层拓扑发现技术是网络安全态势感知系统的关键技术,是网络态势信息得以充分展现的基础[3-4]。
国外的一些研究机构主要采用基于Traceroute命令的拓扑方法,该网络拓扑发现方法对Internet的要求低,不需获得网络特殊权限。本文综合分析目前较为流行的几种网络层拓扑发现方法的优缺点,提出一种由2种拓扑方法相结合的方式进行网络层拓扑,主要使用基于SNMP的网络层拓扑方法,辅助基于OSPF的网络层拓扑方法,该方法能弥补基于SNMP的拓扑方法不能访问未开启SNMP协议路由器的缺限,具有重要的理论意义。
网络层拓扑发现技术主要采用网络层拓扑方法获得路由器及其相互连接的信息和子网信息。网络层拓扑发现技术是配置管理核心、故障和性能管理基础,也是衡量一个商业网络管理系统成败的重要尺度。因此拓扑发现算法的设计在整个网管系统的研发中起重要作用[5-6]。
网络层拓扑发现常用的协议主要有:SNMP协议、ICMP协议、OSPF协议和ARP协议。
拓扑发现采用广度优先遍历对网络层设备进行搜索,以网络中某一个路由器P0为起点,采用SNMP及其他辅助协议搜索与P0相邻的路由器P1,P2,P3…Pi,接着再依次访问与P1,P2,P3…Pi分别相邻的所有节点,依次类推。
网络层拓扑发现有很多种方法,每种方法都有其优缺点及其适应的网络环境,需要对其优缺点及其适应的网络环境进行分析,选出适用于网络安全态势感知的拓扑发现方法[12-13]。
1.2.1 基于SNMP协议的网络层拓扑方法
基于SNMP的网络层拓扑发现方法目标明确,拓扑发现效率高、速度快,对网络带来的负载小,系统开销低。能够通过SNMP协议直接从路由器路由表中获取下一跳路由器地址信息,容易获得比较完整的拓扑结构。网络安全态势感知同样使用SNMP协议进行网络监测。但缺点有:①对路由器的要求高,要求目标网络中的路由器必须开启SNMP协议,对与未开启SNMP协议的设备无法获取到拓扑发现所需要的信息;②通过SNMP协议访问设备MIB库时,必须知道设备MIB库的community值,否则无法访问设备MIB库;③ipRoute Table表是以IP地址作为表项的索引,路由器每个端口都有一个IP地址,同一路由器多个端口ipRoute Table表的冗余信息多。
1.2.2 基于OSPF协议的网络层拓扑方法
优先开放最短路径协议OSPF(Open shortest path first,开放式最短路径优先)是一种基于优先开放最短路径链路状态选择算法的路由协议。使用OSPF的路由器之间通过交换信息来共享整个网络的链路状态。OSPF协议以其高效的路由收敛速率和较低的网络资源占用率等优点适用于大规模网络环境的网络拓扑发现。但是该方法依赖路由器采用的路由协议,对于未使用OSPF协议的路由器不能够获取到其与其他路由器的连接状态。
1.2.3 基于ICMP协议的网络层拓扑方法
基于ICMP协议的网络拓扑发现方法主要分为两类,基于Ping命令的拓扑方法和基于Traceroute命令的拓扑方法。基于Ping命令的网络拓扑发现方法主要针对于链路层进行拓扑,向目标主机进行Ping测试,如果主机可达便返回相应报文。基于Traceroute命令的网络拓扑发现方法用于网络层拓扑发现,这种方法通过向目标地址发送TTL值从1递增的UDP报文来探测该路径上的路由器.当TTL值经过一个路由时其TTL减1,当TTL为0时,该路由器将向源地址返回一个超时差错报文,通过这种方式可以得到网络中存在的路由器信息。
基于Traceroute命令的网络拓扑发现方法具有很好的适用性,对目标网络及路由器没有要求,但是这种方法具有缺限:①效率不高,与基于SNMP的网络拓扑发现方法相比,速度和准确度远远不够;②具有盲目性,拓扑发现只能通过向目标地址发送报文来探测该条路径上的路由器信息,不能够全面、准确地获取到网络的拓扑信息。
为了克服以上几种方法的缺点,本文提出了一种融合两种拓扑方法相结合的方式进行网络层拓扑。主要使用基于SNMP的网络层拓扑方法,并使用基于OSPF的网络层拓扑方法作为辅助。这样能够弥补基于SNMP的拓扑方法不能访问未开启SNMP协议路由器的缺点。
算法流程如下:
①初始化路由器列表ipRouteTable,将拓扑初始路由器信息加入到列表。
②判断ipRouteTable是否为空,为空执行8),不为空则执行3)。
③取出ipRouteTable中的一个路由器信息,存入Router_tmp。
④判断Router_tmp是否支持SNMP协议,支持执行5),不支持则执行6)。
⑤使用基于SNMP协议的网络层拓扑方法获取与该路由直连的路由信息,并将其存入ipRoute Table和XML文件Router-SNMP中,同时将路由器连接关系二元组存入到Link-R。
⑥使用基于OSPF协议的网络层拓扑方法获取与该路由直连的路由信息,并将其存入ipRoute Table和XML文件Router-OSPF中,同时将路由器连接关系二元组存入到Link-R。
⑦继续执行步骤2)。
⑧将Router-SNMP和Router-OSPF中的信息存入到Routers。
基于SNMP协议的网络层拓扑方法改进主要算法如下:
①对子网队列、路由器队列及连接队列进行初始化。
②将缺省网关IP地址加入路由器ipRouteTable队列中。
③在对应的拓扑信息库文件中分别记录路由器队列及连接队列信息、子网队列记录。
下面对路由表ipRouteTable结构进行分析,ipRouteTable列表见表1。
表1 ipRouteTable列表Table1 ipRouteTable
ipRouteDest是ipRouteTable路由信息的索引。ipRouteDest表示该条路由信息的目的地址,ipRoute Mask表示子网掩码,我们能够通过ipRouteDest和ipRouteMask得到该条路由信息对应子网的信息。将从IP数据包中的目的地地与子网掩码ipRoute Mask逐位进行与运算,如果结果等于网络地址ipRouteDest,则说明该IP数据包能够在本路由器中找到对应的路由,最终按照本条路由信息对IP数据包进行转发。
ipRouteIndex表示路由端口的索引值,该索引值与ifTable表中的接口索引值对应,IP数据包通过该接口转发给下一个路由,由其进行转发或接收。拓扑发现过程中,对路由器端口表信息进行分析,能够获得下一级网络的网络类型信息。ipRouteType表示路由类型:当ipRouteType为indirect时,表示间接路由,意味着到达目标地址还需要经过其他的路由器。
当ipRouteType为direct时,表示直接路由,意味目标地址与该路由器直连,那么ipRouteDest表示目标子网的网络地址,而ipRouteNextHop表示了要到达该子网需通过的路由器端口地址。ipRouteProto表示本条路由是通过什么协议建立。路由项可通过OSPF或者RIP建立,也可管理员手动添加(local)。通过分析路由表ipRouteTable中的信息,可以得到路由器之间的连接关系,同时也能得到与路由器直连的子网信息。通过读取ipRouteTable表中的ipRouteNextHop字段,能够得到与该路由器相连的路由器信息。同时通过ipRouteDest和ipRouteMask,也能够判断ipRoute NextHop是否在ipRouteDest标识的子网中。
每台OSPF路由器通过相互之间发送链路状态通告[17](Link-State Advertisement,LSA)来传递链路信息。链路状态通告描述了与路由器相连链路状态信息,可以通过获取这样的链路状态信息来获得网络的拓扑结构。所以,可以通过获取并分析LSA的方法进行网络拓扑发现。由于LSA封装在LSU报文中,所以通过分析LSU报文便可以得到需要的网络拓扑信息。
对从Router LSA和Network LSA中分析得出的关于传输网transit类型的连接关系信息进行整合。找到Router LSA和Network LSA中DR接口IP地址相同的项,从Network LSA中找到与Router LSA路由器ID匹配的传输网地址。该算法的伪代码如下:
网络层拓扑采集模块主要实网络层拓扑并将拓扑测量获得的拓扑信息存储到网络拓扑信息库中。该模块采用基于SNMP协议和基于OSPF协议两种不同的网络拓扑发现方法进行网络拓扑,以基于SNMP协议的网络拓扑发现方法为基础,以基于OSPF的网络拓扑发现方法为辅助弥补基于SNMP协议的网络拓扑发现方法的不足。最后,将拓扑测量获得的拓扑信息存储到网络拓扑信息库中。网络层拓扑采集模块工作流程如图1所示。
根据拓扑起点信息初始化ipRouteTable队列;其次,读取ipRouteTable中存储的路由器配置信息,判断该路由器是对SNMP协议的支持情况。对支持SNMP协议的路由器使用SNMP拓扑模块进行拓扑信息采集,对不支持SNMP协议的路由器使用OSPF拓扑模块进行拓扑信息采集,并将采集到的路由器信息存入到ipRouteTable中。继续遍历ipRouteTable队列,直到ipRouteTable为空为止。
图1 网络层拓扑采集模块工作流程Fig.1 Work flow chart of the network layer topology acquisition module
本试验的目的是验证经改进后的网络层拓扑算法对网络环境适应性,测试环境是在实验室中搭建,由6台路由器{R1、R2、R3、R4、R5、R6}和一个节点主机构成,如图2所示。
试验配置如下:
R1-使用OSPF路由协议,并开启SNMP服务;
R2-不使用OSPF路由协议,只开启SNMP服务;
R3-使用OSPF路由协议,并开启SNMP服务;
R4-使用OSPF路由协议,并开启SNMP服务;
R5-使用OSPF路由协议,未开启SNMP服务;
R6-使用OSPF路由协议,并开启SNMP服务。
试验设计如下:分别在节点主机开启基于SNMP的网络层拓扑方法、基于OSPF的网络层拓扑方法和SNMP和OSPF结合的网络层拓扑方法测试程序,进行网络层拓扑发现。
通过3种网络层拓扑方法获得的拓扑信息如图3、4所示。
图2 网络层拓扑发现方法实验环境Fig.2 Network layer topology discovery experimental environment
通过试验数据可以看出,在本试验环境下基于SNMP的网络层拓扑方法获取到了6条路由器信息,基于OSPF的网络层拓扑方法获取到2条路由器信息,SNMP、OSPF相结合的网络层拓扑改进方法获取到7条拓扑信息。
但是,试验环境中有6台路由器,而SNMP、OSPF相结合的网络层拓扑改进方法获取到了7条路由器信息。从实验环境示意图中可以发现,125.223.50.2和125.223.60.2两个IP地址属于同一台路由器,是同一台路由器的不同端口地址,这就是文中所说同名IP问题,需要通过拓扑信息分析模块的处理才能够解决。所以,基于SNMP的网络层拓扑方法获取到了5条路由器信息,基于OSPF的网络层拓扑方法获取到2条路由器信息,SNMP、OSPF相结合的网络层拓扑改进方法获取到6条拓扑信息。所以,在本实验环境下,SNMP、OSPF相结合的网络层拓扑改进方法具有更大的网路拓扑范围,具有更好的网络环境适应性。
图3 基于SNMP协议的网络层拓扑方法获得的网络层拓扑信息Fig.3 SNMP-based network layer topology of the network layer topology information
图4 基于OSPF协议的网络层拓扑方法获得的网络层拓扑信息Fig.4 OSFP-based network layer topology of the network layer topology information
本文分析和比较现有的网络安全态势评估的研究现状,通过对现有的网络层拓扑发现方法进行总结,提出一种融合多种网络层拓扑发现技术的网络安全态势感知方法,有效弥补单种网络拓扑发现方法的不足。经过试验验证,该方法具有可行性,为进一步开展网络安全态势感知等相关研究奠定基础。
[1]韦勇,连一峰.基于日志审计与性能修正算法的网络安全态势评估模型[J].计算机学报,2009,32(4):763-772.
[2]贺英杰,王慧强,周仁杰.面向网络态势感知的实时网络拓扑发现[J].计算机工程,2009,35(24):127-129.
[3]刘玉华,余胜生,周敬利,等.基于AFT的链路层自动拓扑发现算法[J].小型微型计算机系统,2004,25(12):2211-2214.
[4]Donnet B,Friedman T.Internet topology discovery:A survey[J]IEEE Communications Surveys and Tutorials,2007(9):115-119.
[5]刘海华,倪少权,王萍萍,等.一种基于SNMP的网络层拓扑发现算法[J].计算机安全,2007(9):52-53.
[6]庄锁法,龚俭.网络拓扑发现综述[J].计算机技术与发展,2007,17(10):80-91.
[7]施锋,吴秋峰.网络多层拓扑发现算法的分析[J].网络信息技术,2004,23(3):30-32.
[8]李明江.SNMP简单网络管理协议[M].电子工业出版社,2007.
[9]张干.基于OSPF路由协议的实时网络拓扑搜索的研究与实现[D].北京:北京邮电大学,2006:31-39.
[10]凌军,曹阳,李莉,等.基于ARP和SNMP的网络拓扑自动发现算法[J].武汉大学学报:理学版,2001(2):67-70.
[11]何鹏,邱建林.几种网络拓扑搜获方法的分析研究[J].微机发展,2005,15(7):17-23.
[12]闫兴篡,殷建平,蔡志平.网络拓扑发现算法综述[J].计算机工程与应用,2007,43(14):131-135.
[13]倪勇,史怀洲,朱培栋.基于OSPF链路状态数据库构建网络拓扑[J].计算机技术与发展,2009,19(3):1-4.