随着国家电子政务网络规模和业务应用的不断深化,通过网络传输的数据和业务变得越来越敏感和重要。为了保障业务数据在网络传输交换过程中不被非法获取与篡改,相应的网络信息安全防护措施已在不同层面进行了部署。然而,大多数的业务专网对于网络的访问控制几乎都集中在网络的出入关口,而对网络内部结构和接入边界却没有施行必要的监测与管理。这种只注重网关出入防护的安全策略虽然配置了大量的防火墙、多重安全网关和网闸等网络安全设备,却无法对网络运行的状态和网络结构的变化有一个全面的了解,而且对来自于网络接入边界甚至是网络内部的非法访问常常束手无策。在过度强化“大门”的安全建设的同时,却往往忽略了“围墙”的筑造与管理,从而使得网络接入边界往往成为网络安全防护中最薄弱的防线。
信息网络是一个自治域,应该有其自身的收敛性,一个可管理的网络应该具有确定的边界,并且在网络边界发生变化时,能够及时地发现差异并定位。在传统意义上,网络边界是一个网络安全域与其外部域的分界线,是网络之间互联的“关口”,而本文所提到的网络边界则更加注重对“围墙”的管理,为了避免与传统的边界名词相混淆,称其为“网络接入边界”。首先定义直接面向终端,提供网络接入服务的设备称其为边界接入设备,又称为边界设备。所谓网络接入边界就是通信网络中接入设备的最边缘,也就是网络结构中边界设备的位置。该接入边界在网络初始设计和建设维护阶段确定,并预期不得无故更改与扩展。
1 当前网络监测存在的不足
面对当前网络规模的不断增长,网络结构日趋复杂,加之网络设备的多样性,目前的网络监测手段已不能满足当前网络管理的需要,主要不足体现在以下几点:
(1)网络运行状态不够全面。在日常网络管理中对网络运行状态的实时监控是非常必要的。通过对网络流量、拓扑结构、网络设备及终端运行等情况的全面监测,管理者可以对当前网络的运行状态有一个全面的了解和把握,并可对一些异常情况作出及时反应,保障网络安全正常地运行。然而,由于网络设备的复杂多样性,至今还没有一个第三方的网络管理软件可以对不同厂家的网络设备进行全面的远程管理与控制,使用当前网络监测手段往往无法获取全面的网络运行状态信息。
(2)网络结构化变化无从知晓。在较大规模网络中,保持网络拓扑结构的稳定对于整个网络的安全尤为重要。网络建设时期设计的拓扑结构与正常运行时期的真实结构经常存在较大的差异。如果运行过程中有设备发生故障或者有用户私自在网络中违规接入网络设备,必将影响到网络真实结构的变化,并由此带来巨大的安全隐患。有一些网络拓扑发现方法可以根据简单网络管理协议SNMP(Simple Network Management Protocol)来完成对网络层和链路层连接的自动发现,生成网络运行时的拓扑结构,然而在现实中的应用却相对滞后,没有一种由宏观到具体、兼顾整体与局部的视图展示方法,而且没有对网络结构进行全面的监测,几乎没有涉及网络结构的差异变化情况,更没有发现结构异常时的报警提示了。
(3)网络接入边界无法掌握。网络接入边界作为网络用户的接入区域通常处于网络结构的最末端,随着网络接入终端多样化的出现,边界接入方法与过程变得非常容易。有些用户可能会随意更换工作终端、改变终端的接入接口,或者通过自行架设的小型网络设备进行多用户违规接入,甚至非法提供网络转发、代理和地址转换服务等,这些情况都将会影响网络接入边界的收敛性,使网络接入边界变得不可预测,并对网络的安全稳定运行造成严重威胁。而现阶段的网络监测管理手段无法及时获取网络接入边界状态变化的信息,更无法对接入边界变化区域进行准确的定位,这是现有网络管理体系中普遍存在的盲点和隐患。
2 系统功能结构
当前网络规模和数量大量增长,组网设备的类型也多种多样,来自于不同厂家的各类设备常常同时存在,如何在统一的架构体系内对这些设备进行管理就变得十分重要。本系统主要采用目前普遍使用的SNMP标准协议,通过对网络结构的定时扫描和对网络接入边界的实时监测来实现所需的功能。
(1)全面扫描网络拓扑结构,实现网络结构树的自动生成与存储打印,通过与历史结构的比对发现网络结构的差异变化,并及时报警通知网络管理员。
(2)监测网络设备的运行状态,主要监测CPU、内存和接入端口的工作情况,对于工作状态或者网络流量异常的情况能及时发出报警信号。
(3)在专用和保密网络中实现所有入网终端与设备的登记认证,对终端与设备的上网档案和监测数据进行存储记录,对接入终端的运行状态、接入方式、路由转发、地址转换和代理服务等异常状态进行实时监测,发现异常时能够及时阻断,实现对网络边界的常规性看护,对工作主机的工作状态给出健康建议。
系统通过对整个网络运行状态数据进行实时的采集与分析,将网络拓扑结构信息及其组成节点的工作状态信息存储在数据库中,对这些数据进行加工分析后,通过列表、拓扑视图等方式将其展现在网络管理界面上。系统体系结构如图1所示。
在网络中心位置部署结构监测服务器、结构存储服务器和结构视图服务器,用于整个网络结构的实时动态扫描存储、边界守护和视图生成功能;在网络内部设置固定或移动的监测终端,用于网络管理人员随时查看网络实时运行状态,接收服务器的报警信号并进行相应的处理。
位于整个网络内部,支持TCP/IP协议的路由器、交换机、服务器、工作主机和无线接入点等所有的网络设备和终端都属于网络结构监测的对象,需要定期接受结构监测服务器的扫描并提供自身运行的状态和数据。当有异常情况发生时,这些监测对象应该能够主动向上汇报,以达到实时掌握整个网络运行状态的目的。
3 系统实时性设计
系统通过SNMP协议扫描获取网络设备、终端及其连接关系的基本信息,主要包括管理信息库中的路由表、接口表、地址映射表和运行状态信息等,并逐步获取实时的网络结构信息。在使用广度优先算法扫描的过程中,尽可能准确地辨识扫描目标的类型和身份,根据情况启动网络层扫描[3]和链路层扫描[4],并通过梳理节点间的父子连接关系,最终判定网络接入边界所在,更新存入后台支持数据库[5]。当扫描过程完成以后,整个网络的结构信息便被获取,实时的网络边界得以确定,网络自身的运行状态得以全面掌控。
在系统监测运行过程中,需要在第一时间内发现网络结构的异常变化和接入边界的违规行为并作出响应,以便尽可能早地对潜在的网络安全隐患进行定位,减少对网络安全运行的实质性破坏。因此,迅速准确地发现网络的拓扑结构,提高系统扫描检测过程的实时性就成为了保障系统可靠运行的一个基本要求。
3.1 多线程扫描
网络结构的获取与更新一般通过周期性的扫描来完成。通过指定扫描起始地址,获得与该节点相连的其他节点的运行信息,使用广度优先算法依次遍历网络中的每个节点,这种全网单线程扫描方法(以下简称方法一)常常用在网络规模较小、结构较为简单的情况下。
对于规模较大的网络,考虑到扫描过程中大部分时间都浪费在等待设备准备数据的阶段,为了能合理利用这段空闲时间,在更短的时间内尽快完成对整个网络的扫描分析,实际过程中常常根据子网划分使用多个扫描起始地址的子网多线程扫描的方法(以下简称方法二)。在系统初始化后,读取指定的子网扫描起始地址列表,启动多个扫描线程对所在子网进行扫描。多个线程之间共同维护一个节点访问列表,对已经扫描过的地址不再执行重复的操作。
方法二中每个扫描线程对应一棵子树,扫描线程的数量一般可参考管理人员最熟悉的核心层设备的数量来设置,但是最好不要手工设置。实际应用时可以在扫描3层设备路由列表的过程中,在得到与该设备所连接的子网设备地址后,立即开启一个新的子网扫描线程,这种改进方式也可称为设备多线程扫描方法,其扫描流程如图2所示。
在扫描流程图中的每个线程都能独立完成各自的扫描分析任务,在对每一个设备扫描完成之后,立即读取目标的安全设置,完成结构边界的确认、检验、存储和展现工作。
对于较大规模的网络,在采用了设备多线程扫描的方法后,完成全网扫描所耗费的时间已经大幅减少,如表1所示,其中,①②③为扫描算法分别在3个不同的时间段内运行的结果。但是详细分析后发现,扫描线程仍然有一部分空闲时间在等待设备准备数据,而这部分空闲时间正是再次提高扫描速度的希望。在分析了设备的扫描过程后发现,为了实现网络结构的自动发现与监测,每个设备都需要扫描接口表、路由表、端口映射表、地址映射表等多张表格,虽然在扫描流程上采用了子网多线程扫描,但是每个扫描线程依然是按照顺序对这几张表格进行扫描的,由此得出了通过多线程方式来获取这些表格的表格多线程扫描方法(以下简称方法三)。
为了验证这3种扫描方法的性能,特意选择长安大学校园网络进行实际测试,表1是这3种扫描方法分别在3个不同的时间段内测试运行的结果数据。
在对扫描方法的性能进行比较时,扫描完成时间以及扫描对网络带宽的影响是两个重点指标。本来每秒钟获得的记录数量也可以作为一个性能指标来指示扫描算法的性能优劣,但是该指标与网络流量成正比关系(记录条数越多网络流量越大),因此在比较过程中只使用了完成时间和波特率两项指标,3种方法性能比较如图3所示。从测试的结果可以看出,这3种方法在3次测试过程中性能表现均较为稳定,方法一的完成时间是最长的,在使用了多线程以后方法二和方法三的完成时间有了大幅的减少。同时,随着完成时间的缩减,网络流量也逐步升高,由于目前主干网络多是千兆的情况,因此多线程的使用对网络带宽的压力实在小到可以忽略不计。
3.2 异常情况自动上报
在实际应用时,单靠周期性的扫描来发现网络结构的异常变动显然不够,应该设计一种异常自动上报机制,使得接入设备能够在异常发生的第一时间将自身变动信息自动上报给服务器,而不是等待扫描模块下一次周期性的轮询,而这恰恰就是SNMP陷阱(SNMP Trap)的用武之地。
SNMP陷阱不同于SNMP的主动采集,SNMP主动采集是按照固定的时间间隔,由管理工作站以询问的方式采集被管理设备的各项MIB信息,因此,发现网络结构的变化与异常的及时性取决于扫描采集的频率。在一个较大规模的网络内,轮询过于频繁会产生大量不必要的通信量,容易引起网络拥塞;轮询周期过长,则不能保证网络故障被及时发现,严重影响了系统的实时性[6]。而SNMP陷阱使用事件驱动机制,在被监控设备上设置陷阱,一旦被监控设备出现异常情况,立即向管理工作站发送陷阱消息,因此能够在最短的时间内发现异常,避免由设备异常而带来的经济损失。
在SNMP的管理模型中,管理代理会向管理工作站发送一些重要事件的异步通告,其中包括设备的冷启动、热启动、接口上线和接口下线等几种消息,而这些消息将由代理主动通知SNMP管理器,而不是等到管理工作站为获得这些错误情况而轮询的时候才会报告,这将有助于系统以最快的速度接收到来自于被管理设备的异常通知。系统在收到这些消息后可以通过单独查询这个设备或查询其周边的相关设备来获得这个事件更加详细的情况并向管理人员发送告警,以便对异常情况作出正确的判断和处理。
当然,使用SNMP陷阱也需要消耗一定的系统资源,如果该陷阱需要传输大量的数据,则被管设备就要消耗更多的时间来处理这些数据,从而降低了设备的运行速度。此外,如果接连发生相同类型的陷阱,每次都要报告给管理站,这样又造成了资源的浪费,可能会造成网络拥堵甚至瘫痪。因此,本系统仅仅使用了设备启动、接口上线和接口下线这几种与网络结构和边界安全监测关系最为密切的陷阱事件,以减轻网络压力,提高系统的实时性能。
网络规模大、涉及范围广、设备种类多以及用户数量大是目前网络的基本特点,因此网络的维护管理和安全防护便成为了一个难题。本系统在保障网络出口安全的同时,重点加强了网络边界的安全监测与防护,使网络管理人员能及时全面地了解实时的网络结构和边界接入变化情况,并通过使用多线程和SNMP陷阱技术来提高网络结构扫描的效率,从而有效解决了目前网络使用过程中比较常见的用户随意更改接入状态和非法接入网络设备的问题,避免了由此产生的网络运行不稳定问题,消除了网络安全监管盲区和网络安全隐患,保障了网络运行的可靠与安全。