【4. 扫描节点】 分布式漏洞扫描系统设计与实现

四? 扫描节点

4.1 概述

此文原出自【爱运维社区】: http://www.easysb.cn

扫描节点(scanner)是整个分布式扫描系统的终端节点,负责具体漏洞扫描。由于我们的漏洞扫描系统需要集中许多不同的扫描工具,在这些工具当中,有的是只能运行在Windows上,比如WVS,而有的则是只能运行在Linux上,比如openvas,而有的则是可以同时在两种系统上运行,比如nmap。所以,为了能够更好的地集中这些工具,就必须解决系统的异构问题,达到同时支持Linux扫描节点和Windows扫描节点,才能更大地发挥集中扫描平台的优势。

4.2 扫描框架

4.2.1 系统异构

出于系统设计的需求,扫描节点必须需要同时运行在Linux和Windows节点,所以我们在设计扫描节点的框架时,必须要考虑到系统的异构问题。此外,为了减少代码的开发时间和运维工作量,我们不希望在Linux开发一套扫描系统,而在Windows上开发另外一套系统,这样无疑会增加我们的开发和运维成本,而且对以后的升级都是比较棘手的。所以,我们采用脚本语言python开发整个扫描系统,所有的扫描工具都是采用插件的形式封装,然后根据扫描任务动态加载。举个例子,扫描系统启动的时候,它是不会加载任何插件的,保证系统能够同时运行在Linux和Windows节点上,当用户发起的一个WEB扫描任务时,那么该任务会被发送到Windows消息队列,Windows扫描节点会从该消息队列中提取任务,然后动态加载WVS插件,然后调用WVS进行漏洞扫描。同理,假如用户发起的主机扫描任务,那么该任务就会发送到Linux消息队列,Linux扫描节点会从该消息队列中提取任务,然后动态加载openvas插件,然后调用openvas进行漏洞扫描。如此一来,同一个扫描系统可以同时兼容Windows和Linux系统,就很好地解决系统的异构问题。

4.2.2 框架结构

在【消息通信】章节中,整个分布式系统主要是通过消息队列(ActiveMQ)来进行扫描任务的分发。同时,为解决系统异构问题,我们使用了Windows和Linux两个消息队列,用于不同类型的任务分发,扫描节点的框架如下图4-1所示。

图4-1 扫描节点的框架结构

从上图中,我们可以看到扫描节点存在好几个不同类型的线程,分别负责不同的功能,其功能如下表3-1所示。

表3-1 扫描节点内部主要的线程和进程功能表

对照图3-1和表3-1,我们可以看出,扫描节点的内部有任务队列【Task Queue】和结果队列【Result Queue】两个队列,而接收任务线程【Receive
MQ Thread】首先从ActiveMQ中获取扫描任务,然后将其推入到内部的任务队列【Task Queue】中,主线程【Main Porcess Thread】会从内部队列【Task Queue】中提取扫描任务消息,然后根据任务消息启动一个扫描线程【Scan Thread】, 而扫描线程【Scan Thread】启动之后会创建一个插件进程【Plugin Process】,该进程会调用nmap, WVS,openvas等相关工具,待执行结束后会将扫描的结果推入到结果队列【Result Queue】。结果同步线程【Sync
Result Thread】从结果队列【Result Queue】中获取扫描结果,然后通过WEB的REST接口同步到中央数据库。而查询任务状态线程【Query Task status Thread】则是周期性地通过WEB的REST接口查询当前扫描任务的状态,如果发现有任务被取消的话,那么它就会发送一个取消【Cancel】的消息到任务队列【Task Queue】中,然后主线程【Main Porcess Thread】取出这个消息后,就会终止相应的扫描线程【Scan Thread】和插件进程【Plugin Thread】。

扫描节点内的多个线程,不同的线程负责不同的功能,虽然看起来比较复杂,但是这样可以尽量解耦各个模块之间,以增强可扩展性和稳定性,也可以大大降低后期的维护和升级的成本。

4.2.3扫描线程和插件进程的启动

扫描节点中主线程会根据扫描任务通过内部线程管理器【Thread Manager】启动一个扫描线程,其框架如下图4-2所示。

图 4-2 扫描线程与插件进程

从上图4-2可以看出,线程管理器启动了扫描线程之后,扫描线程会根据任务任务从插件工厂【Plugin Factory】获取任务相对应的插件进程实例,并启动插件进程。比如扫描线程1的任务类型是主机安全扫描,那么它会通过插件工厂获得一个openvas的插件实例(plugin
A),然后启动该插件进程,扫描线程2的任务类型是Web漏洞扫描,那么它会通过插件工厂获得WVS的插件实例(Plugin B),然后启动该插件进程。

4.2.4扫描线程和插件进程的通信

当扫描任务被取消的时候,主进程会找到相对应的扫描线程【Scan Thread】,然后通过扫描线程来终止相对应的插件进程【Plugin Thread】,其通信的框架如图4-3所示。

图 4-3 扫描线程和插件进程的通信结构图

扫描线程【Scan Thread】在启动插件进程时,会创建一个队列Queue用于和插件进程【Plugin Process】通信。在插件进程内部有任务扫描【Task
Scanning】和通信【communication】两个线程,其中任务扫描线程是调用具体的扫描工具或者脚本的,比如openvas,nmap,WVS等等,在调用结束后会将扫描的结果推入到扫描节点内部的结果队列【Result Queue】中,而通信线程则是通过队列【Queue】与扫描线程通信。

当任务被取消时,主线程会通过相对应的扫描线程发送一个终止的命令到队列queue中,插件进程中的通信线程收到这个消息时就会调用终止函数(stop_script)来结束当前的线程。各个插件的终止函数略有不同,这样可以让各个插件进程在终止前做一些必要的工作,比如同步已有结果,清理扫尾等,增加插件的灵活性。但是,如果超过一定的时间相关进程和线程还没有被终止的话,那么就会被主进程强制杀掉,避免进程僵死的情况发生。

4.4 小结

为了解决系统的异构问题,我们采用了两个任务消息队列来下发扫描任务,扫描节点中的各个扫描功能模块全部采用插件的形式,在需要的时候动态加载,保证了系统的稳定性和可扩展性。

作者:胡杨<[email protected]><[email protected]>

此文原出自【爱运维社区】: http://www.easysb.cn

如转载请标明原出处,谢绝阉割党。

时间: 2024-08-29 01:34:56

【4. 扫描节点】 分布式漏洞扫描系统设计与实现的相关文章

网络漏洞扫描的原理和相关程序

1 引言 网络扫描,是基于Internet的.探测远端网络或主机信息的一种技术,也是保证系统和网络安全必不可少的一种手段.主机扫描,是指对计算机主机或者其它网络设备进行安全性检测,以找出安全隐患和系统漏洞.总体而言,网络扫描和主机扫描都可归入漏洞扫描一类.漏洞扫描本质上是一把双刃剑:黑客利用它来寻找对网络或系统发起攻击的途径,而系统管理员则利用它来有效防范黑客入侵.通过漏洞扫描,扫描者能够发现远端网络或主机的配置信息. TCP/UDP端口的分配.提供的网络服务.服务器的具体信息等. 2 漏洞扫描

2018-2019-2 网络对抗技术 20162329 Exp6 信息搜集与漏洞扫描

目录 Exp6 信息搜集与漏洞扫描 一.实践原理 1. 间接收集 2. 直接收集 3. 社会工程学 二.间接收集 1. Zoomeye 2. FOFA 3. GHDB 4. whois 5. dig 三.直接收集 1. arp_sweep模块 2. Nmap命令 3. OpenVAS漏洞扫描 四.基础问题回答 1. 那些组织负责DNS.IP的管理 五.总结与体会 Exp6 信息搜集与漏洞扫描 一.实践原理 1. 间接收集 概念:不接触目标 无物理连接 不访问目标 方法:使用第三方信息源如 who

2018-2019-2 网络对抗技术 20165227 Exp6 信息搜集与漏洞扫描

2018-2019-2 网络对抗技术 20165227 Exp6 信息搜集与漏洞扫描 实践问题回答 1.哪些组织负责DNS,IP的管理 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管理.全球一共有5个地区性注册机构:ARIN主要负责北美地区业务,RIPE主要负责欧洲地区业务,APNIC主要负责亚太地区业务,LACNIC主要负责拉丁美洲美洲业务,AfriNIC负责非洲地区业务 2.什么是3R信息 注册人(Registrant) 注册商(Registra

漏洞扫描原理——将主机扫描、端口扫描以及OS扫描、脆弱点扫描都统一放到了一起

漏洞扫描原理及程序 1 引言 网络扫描,是基于Internet的.探测远端网络或主机信息的一种技术,也是保证系统和网络安全必不可少的一种手段.主机扫描,是指对计算机主机或者其它网络设备进行安全性检测,以找出安全隐患和系统漏洞.总体而言,网络扫描和主机扫描都可归入漏洞扫描一类.漏洞扫描本质上是一把双刃剑:黑客利用它来寻找对网络或系统发起攻击的途径,而系统管理员则利用它来有效防范黑客入侵.通过漏洞扫描,扫描者能够发现远端网络或主机的配置信息. TCP/UDP端口的分配.提供的网络服务.服务器的具体信

安犬漏洞扫描云平台整合云盾防护功能

国庆之前,安犬漏洞扫描云平台将迎来一次重大更新.这次更新对于安犬平台非常重要,因为这意味着安犬漏洞扫描云平台从过去的检测扫描进化成防御防护与扫描一体的全面型安全平台. 历史更新版本功能: (点击蓝字即可进入版本更新说明 2.0.5更新说明-多语言版本更新 2.0.6更新说明-扫描模块加载Acunetix引擎 2.0.7更新说明-漏洞推送功能上线 2.0.8更新说明-定制API模块 OEM部分功能整合 2.0.9更新说明-域名绑定与资产发现 2.0.10更新说明-界面改版,友情链接及扫描测试 2.

安犬——漏洞扫描云平台操作手册

安犬漏洞扫描云平台是一个基于Saas服务模式的漏洞扫描云平台,扫描引擎包括Qualys.Nessus.Acunetix世界三大漏洞扫描引擎.用户无需安装任何硬件设备,无需下载任何软件,只需在云平台提交扫描IP或者扫描网址即可扫描系统漏洞. 产品优势: 1.基于云端:扫描引擎基于云端平台,无需部署硬件设备,无需安装软件设备,无需在服务器做任何部署,只需要添加域名或者IP即可扫描,基于Saas分布式扫描模式,根据扫描网站服务器承受压力自动负载均衡,扫描速度快,最快可30分钟显示报告. 2.基于移动平

Nessus漏洞扫描教程之使用Nmap工具扫描识别指纹

Nessus漏洞扫描教程之使用Nmap工具扫描识别指纹 Nmap工具的准备工作 当用户对Nessus工具有清晰的认识后,即可使用该工具实施扫描.但是,在扫描之前需要做一些准备工作,如探测网络中活动的主机.主机中运行的服务及主机的操作系统等.当用户对一个主机比较熟悉后,进行扫描也就非常容易了.因为对于Nessus工具,针对不同的系统.漏洞都提供了相应的插件.如果用户对目标主机很了解的话,使用Nessus工具扫描目标就不会像个无头苍蝇似的瞎扫描.而且,可以更容易获取到非常有价值的信息了.本章将介绍实

Ossim 中漏洞扫描详解

Ossim 中漏洞扫描详解 Openvas是一套开源漏洞扫描系统,如果手动搭建需要复杂的过程,花费不少人力和时间成本,此文主要针对OSSIM平台下如何以图形化方式操作漏洞扫描的过程. 准备工作:首先确保没有运行的扫描进程和任务 扫描漏洞同时升级漏洞库会导致升级失败. 第一步:同步插件 #openvas-nvt-sync 同步数万个插件时间比较长,可以去喝杯咖啡啦,或者了解一下插件的组成. 表1 Openvas主要脚本分类及分布情况 规则名称 数量 备注 IIS_frontpage_DOS_2.n

Kali linux安装漏洞扫描工具Nessus指南

引子:Nessus是著名信息安全服务公司tenable推出的一款漏洞扫描与分析软件,号称是"世界上最流行的漏洞扫描程序,全世界超过75,000个组织在使用它".尽管这个扫描程序可以免费下载得到,但是要从Tenable更新到所有最新的威胁信息,每年的直接订购费用是$1,200,也就是每个月100美刀.在Linux, FreeBSD, Solaris, Mac OS X和Windows下都可以使用 Nessus. Nessus目前分为四个版本:Nessus Home.Nessus Prof