一个基于Web的网络漏洞扫描系统的设计与实现

时间:2022-09-03 08:46:06

一个基于Web的网络漏洞扫描系统的设计与实现

摘要:网络漏洞扫描工具已经成为安全管理员的必备工具。本文针对当前网络漏洞扫描工具的不足,设计和实现了一种适合安全管理员使用的基于Web的网络漏洞扫描系统。

关键词:网络安全;Nessus;漏洞扫描;Web

中图分类号:TP393文献标识码:A文章编号:1009-3044(2007)12-21575-03

Design and Implementation of Network Vulnerability Scanning System Based on Web

YANG Zhong-yi

(Hunan Vocational College of Commerc, Changsha 410205, China)

Abstract: Network Vulnerability Scanner has become an indispensable tool for security administrators. Based on the current network vulnerability scanning tools inadequate, the paper gives the Web-based network vulnerability scanning system that is more adapt to security administrators.

Key words: Network Security; Nessus; Vulnerability Scan; Web

1 引言

随着互连网的日趋普及,网络的重要性和对社会的影响也越来越大。网络安全正日益成为国内外网络计算机专家们研究的焦点。越来越多的系统都存在着不同程度的安全漏洞,从而遭到入侵攻击的威胁。但如何使漏洞在被恶意利用之前就被发现?安全扫描技术是一个良好的技术解决方案。

目前,网络安全问题成为因特网上备受关注的焦点,安全漏洞的存在是导致计算机网络安全问题最直接的原因之一,对待漏洞最可取的方法是尽早发现存在的漏洞并修补它们。安全扫描技术为安全漏洞的发现提供了技术支持。

随着安全扫描技术的发展,目前出现了许多不同种类的安全扫描器(系统)。所谓安全扫描器,是一种通过收集系统的信息来自动检测远程或本地主机安全性脆弱点的程序。基于安全扫描器的整体结构和采用的扫描检测方法的不同,安全扫描器主要可以分为两类:主机型安全扫描器和网络型安全扫描器。主机型安全扫描器主要是针对操作系统的扫描检测,通常涉及系统的内核、文件的属性、操作系统的补丁等问题,还包括口令解密等;网络型安全扫描器是针对远程网络或者主机的端口、开放的服务以及已知漏洞等。基于网络的安全扫描系统具有检测速度快、检测范围广、与操作系统无关、不占用受保护系统的系统资源等优点,目前已经出现了很多不同网络安全扫描器(系统),比较著名的如:

ISS Internet Scanner[1]作为商业的专用漏洞扫描器,技术特点是功能强大,漏洞检查集完备,图形界面友好,是集扫描、监视、漏洞修复于一体的安全评估软件。但Internet scanner系统升级较慢。

Nessus[2]是法国人Renaud Deiasion编写的。Nessus 是最好的免费网络漏洞扫描器,它可以运行于几乎所有的UNIX平台之上。它免费提供多达11000种插件,且永久升级。它的主要功能是远程或本地(已授权的)安全检查,客户端/服务器架构,GTK(Linux下的一种图形界面)图形界面,内置脚本语言编译器,可以用其编写自定义插件,或用来阅读别人写的插件。Nessus 3已经开发完成,其现阶段仍然免费,除非想获得最新的插件。

尽管出现了不少安全扫描系统,但这些系统的开发人员通常将重点放在这些系统的核心技术上,而忽略了系统操作的灵活性,便利性,使得用户操作、维护、管理这些系统很繁琐,而且系统检测的结果通常也不能满足不同用户的需求。本文设计和实现了一个基于Web的网络漏洞扫描系统,它能实时或定时地对所管辖的网络进行分段扫描,对扫描结果进行统一分析和风险评估,为网络管理员的漏洞检测提供极大的方便。

2 基于Web的网络漏洞扫描系统设计

2.1 体系结构

目前,网络漏洞扫描系统大都采用C/S或B/S的体系结构,这样的系统设计与实现均比较简单,但它的缺点是交互性比较差,扩展性不好,操作管理比较繁琐,系统的升级维护比较复杂。为了设计一个具有灵活性、安全性和可扩展性的网络漏洞扫描系统,本系统采用了一种由浏览器端、扫描控制端和扫描服务器端组成的分布式网络漏洞扫描系统体系结构。扫描服务器被部署到网络的各个个逻辑子网中、由扫描控制端进行集中管理,可实现分布式网络漏洞扫描,所有用户操作通过浏览器来完成。整个系统的系统结构如图1所示:

图1 网络漏洞扫描系统结构

扫描服务端作为扫描任务的执行者,对目标主机或子网进行安全扫描。扫描控制端是真正的扫描发起者,它虽然没有直接执行扫描任务,但是它负责将每个扫描服务端扫描的内容配置好再传送给扫描服务端进行扫描,然后再接收扫描报告。管理员可通过浏览器端在扫描控制端上管理各分布扫描服务端的任务配置和执行。

该体系结构中每一层均实现一个比较独立的功能,我们可以方便地向每层添加不同的资源来扩充扫描服务端的规模,而不会影响到其它的层面。在这种结构中,我们可将3个层面都部署在一个主机上,也可将每个层面部署在独立的主机上,但是为了保证各层的独立性,提高系统的性能,通常我们将各层分别放置在不同的主机上,使得各层不会消耗其它层面的系统资源。同时,这种部署方式,还可以更有效地控制系统的权限,增加系统的安全性。

2.2 系统功能设计

(1)浏览器端:系统的所有程序都在服务器端运行,所有的功能都可以通过Web浏览器,在远程进行访问。

(2)Web服务器:Web服务器提供远程客户机利用浏览器进行访问,通过浏览器下载HTML页,利用CGI脚本程序完成对整个系统的管理,如负责授权用户登录,进行数据库管理(制定扫描任务,维护Web用户账户,维护扫描策略,维护扫描目标集,维护扫描服务器集,查询扫描结果等),更新漏洞插件,控制和显示扫描任务的状态等。它主要由用户管理、参数设置模块、任务管理模块、报告管理模块、插件管理模块等部分组成。

①用户管理模块:系统用户管理模块是整个扫描器系统的权限管理内容,它能够对系统的用户进行权限设置(如可用扫描服务器,可扫描地址范围),以达到保护系统的目的,包括系统用户的划分、系统用户的添加和删除、用户的认证工作等。

本系统设置三种类型的用户:“管理员”、“扫描用户”和“普通用户”。不同类型的用户具有不同的权限。需要拥有授权的用户名和密码才能够登录系统。

②参数设置模块:用户可以设置扫描服务器的参数、选择扫描插件建立起扫描策略,形成扫描参数文件。它是扫描任务信息的重要组成部分,在向Nessus服务器提交扫描任务时被提交给服务器。

③任务管理模块:扫描任务模块的主要任务是对扫描任务建立与编辑和扫描任务过程控制。一个扫描任务信息包括扫描参数文件、扫描服务器列表、扫描目标列表、任务调度时间周期和执行时间、任务状态等。它保存在数据库中,方便在用户对其管理。扫描可以实时进行,也可定时进行,扫描过程中,用户可以暂停或终止扫描任务。

④报告管理模块:根据用户的要求,从数据库中导出扫描结果信息,满足用户对扫描结果的查询需要。如果该主机存在漏洞,网络安全管理员则把相应的扫描结果信息通知该主机管理员,以便及时对该机采取相应的补救措施。

⑤扫描插件管理模块:管理员通过该功能模块实现扫描服务器从扫描控制台更新漏洞插件脚本。

(3)控制台接口:连接扫描服务端,发送扫描任务文件和扫描任务操作指令,获取服务器扫描任务状态和扫描结果,把任务状态和结果存入数据库。

(4)扫描服务器:它的主要功能是接收和执行扫描控制台的指令,如接收到扫描请求,就会根据扫描策略调用漏洞扫描插件进行外部扫描和模拟入侵,将扫描结果信息返回给扫描控制台。

(5)数据库:数据库包含如下方面的信息:登录Web的用户账户信息,扫描任务信息,扫描策略信息,扫描目标集信息,扫描服务器集信息,漏洞插件信息,扫描结果信息等。采用数据库可实现对数据多样化的查询和维护。

3 基于web的网络漏洞扫描系统实现

该系统总体上主要由4个核心功能模块构成:扫描服务器、扫描控制台、数据库和Web服务器。对于扫描服务器模块来说,我们可以利用C语言的API函数库(如Libpcap)基于Socket来开发自己的扫描服务器模块,也可以使用现有的开源的扫描系统为核心,本系统采用Linux平台下的Nessus 3作为扫描服务器。扫描控制台模块使用Linux平台下的Nessus字符客户端[3],与扫描服务器Nessus通信。数据库可采用多种关系型数据库,本系统使用了MySQL数据库作为数据库,它也支持远程的连接访问。Web服务器为用户提供一个操作界面,Web服务器工具使用Apache,数据库接口使用Adodb。本系统是基于Nessus系统设计和实现的,故下面将描述Nessus字符客户端的工作原理、数据库模块的实现和Web服务器模块的实现。

3.1 Nessus字符客户端

Nessus字符客户端以命令行的方法直接向Nessus服务器提交指定扫描参数文件、扫描目标、扫描服务器地址、扫描服务器端口、输出格式以及输出文件等等,服务器根据这些参数进行扫描。一个标准的扫描命令格式如下:

#/opt/nessus/bin/nessus -c -T Cq [-pPS]

-c指定扫描参数文件,如不指定则使用系统用户主目录下的“.nessussrc”文件。-T 指定输出格式,可用的格式有“html”、“xml”、“text”、“nsr”等等。Cq指定一个标准的请求列表,列表的格式为:扫描服务器IP地址、扫描服务器端口、nessus用户名、nessus密码、保存扫描目标主机列表的文件、输出文件,各个段之间用空格隔开。

本文利用nessus字符客户端实现与Nessus服务器的交互。

3.2 数据库模块

数据库服务器主要是把用户账户信息、扫描任务文件信息、扫描策略信息、扫描服务器信息、扫描目标地址信息和扫描结果信息等导入到一个关系数据库中,方便系统对这些数据的管理。本系统可支持很多种不同的关系数据库,我们采用的是MySQL数据库。

从MySQL的官方网站上下载MySQL数据库的源文件,然后编译源文件后进行安装,或者我们可以直接下载RPM包文件,直接进行安装。如果需要在主机上操作MySQL数据库,我们还需要安装MySQL的客户端工具。安装完毕后,可启动MySQL服务,进入其命令行状态,创建存放网络漏洞扫描系统信息的数据库,并建立网络漏洞扫描系统所需要的各种数据表,用来存放各类数据信息。从系统的安全性方面考虑,我们需要为安全扫描系统专门创建一个新的数据库用户,用以连接该数据库,查询、更新系统数据。

3.3 Web服务器模块

Web服务器为用户提供一个操作界面,Web服务器应用程序主要功能模块包括用户管理、参数设置、任务管理、报告管理、插件管理等部分。系统使用php脚本语言,实现Web服务器功能页面,使用perl脚本语言完成Web服务器功能扩展程序,Web服务器工具使用Apache Http Server。下面介绍Web服务器任务扫描的具体实现。

(1)扫描任务流程

一个标准的扫描任务流程如图2所示。

图2 扫描系统工作流程

(2)扫描参数文件的格式

扫描参数文件是纯文本文件,由一些参数段组成。下面是一个参数段的例子:

begin(SERVER_PREFS)

max_hosts=20

max_checks=4

port_rang=1-1024

end(SERVER_PREFS)

表1列出了几个主要的参数段以及用途。实际上许多参数可以忽略,只需要关心那些最可能改变的内容。例如端口范围、插件列表等等。

表1 扫描参数文件的格式

用户通过Web界面设置扫描参数,形成一个扫描参数文件。一个扫描任务信息包括扫描参数文件、扫描服务器列表、扫描目标列表、任务调度时间周期和执行时间、任务状态等。用户建立扫描任务后,需设置任务执行时间;系统自动把扫描任务信息存入数据库。

(3)任务时间调度周期

任务调度的时间周期有一次、每天、每周、每月等几种类型。任务的调度是通过使用脚本perl编辑Linux系统的crontab,调度Nessus字符客户端扫描命令来实现的。

4 结束语

针对网络管理员操作的需求,本文在网络漏洞扫描工具Nessus的基础上设计并实现了一个由扫描服务端、扫描控制端和浏览器端组成的分布式网络漏洞扫描系统。该系统具有如下特点:①美观友好、简单易用的全中文化图形界面;②采用浏览器/服务器结构,可移植性、可扩展性好;③支持多Nessus服务器分布扫描;④多用户分级管理;⑤可以在指定时间自动完成定时扫描任务或周期扫描任务。

实际运行表明:该系统具有良好的性能,确实能方便网络管理员的工作。

参考文献:

[1]/.

[2]/.

[3]/.

[4]钱秀槟. Web中间件方式的隐患扫描器[J]. 计算机工程与应用,2004,8:168-169,176.

上一篇:智能建筑弱电系统接地连接技术 下一篇:虚拟现实技术在雷达干扰仿真中的应用