一种资产扫描方法及装置与流程

文档序号:24495987发布日期:2021-03-30 21:23阅读:211来源:国知局
一种资产扫描方法及装置与流程
本发明属于资产扫描
技术领域
,尤其涉及一种资产扫描方法及装置。
背景技术
:随着互联网技术的发展,部署在互联网上的业务越来越多,然而随着互联网资产的增多,企业所面临的安全风险也将更多,比如,企业暴露在互联网上的资产容易成为黑客攻击的首要对象。而资产扫描是一种检测本地和远程计算机系统安全隐患的技术,它通过向本地或远程主机发送探测数据包,并获取主机的响应,对主机反馈的数据包进行分析,获得主机的端口开发情况以及主机提供的服务信息,帮助我们发现主机的弱点和漏洞,从而改进网络安全风险,防范黑客攻击。资产扫描主要有两种方式,一种是主动扫描,另一种是自动扫描。主动扫描方式主要是用户通过配置需要扫描的ip地址,利用开源的扫描工具进行扫描。而自动扫描方式则不会配置具体的扫描ip地址,而是由扫描引擎自动去探测网络中存在的资产。目前资产扫描大都采用分布式部署的方案,即一台中心调度服务器搭配多个资产扫描引擎,一般调度服务器部署在公共网络上,而扫描引擎则可能分布在多个私有网络中。针对自动扫描的方式,由于私有网络内部是互通的,多台扫描引擎同时执行资产自动扫描任务时,每台资产扫描引擎所扫描的网络范围都是一样的,因此,一个私有网络内部只需要存在一个资产扫描引擎执行自动扫描任务即可,多台扫描引擎执行自动扫描任务则会造成了扫描引擎的资源浪费。因此,在一个私有网络中部署多台资产扫描引擎时,多台资产扫描引擎重复获取资产自动扫描任务就是需要解决的一个问题。技术实现要素:本发明的目的是提供一种资产扫描方法及装置,解决在一个私有网络中部署多台资产扫描引擎时,多台资产扫描引擎重复获取资产自动扫描任务的问题。为了实现上述目的,本申请技术方案如下:一种资产扫描方法,用于扫描网络中的资产,所述网络中包括调度服务器和多个扫描引擎节点,所述资产扫描方法,包括:目标扫描引擎节点与调度服务器通信,获取主扫描引擎节点的选择策略;目标扫描引擎节点加入预设的组播组,在组播组内发送通告消息,组播组中的其他节点接收到通告消息后发送携带各自的扫描引擎信息的响应消息;目标扫描引擎节点接收其他节点返回的响应消息,建立邻居列表,根据主扫描引擎节点的选择策略、邻居列表中的扫描引擎信息及自身的扫描引擎信息,选择主扫描引擎节点,由选择出的主扫描引擎节点来执行资产自动扫描任务。进一步的,所述由选择出的主扫描引擎节点来执行资产自动扫描任务,包括:如果选择出的主扫描引擎节点是其他节点的原主扫描引擎节点时,目标扫描引擎节点向所述原主扫描引擎节点注册,所述原主扫描引擎节点携带最新的引擎能力信息向调度服务器注册保活,由所述原主扫描引擎节点执行资产自动扫描任务;如果选择出的主扫描引擎节点是目标扫描引擎节点自身时,则发起主扫描引擎节点变更请求,将目标扫描引擎节点自身变更为新的主扫描引擎节点,携带最新的引擎能力信息向调度服务器注册保活,由目标扫描引擎节点自身来执行资产自动扫描任务。进一步的,所述发起主扫描引擎节点变更请求,将目标扫描引擎节点自身变更为新的主扫描引擎节点,包括:目标扫描引擎节点在所述组播组中发送主扫描引擎变更请求,组播组中的其他节点收到主扫描引擎变更请求,根据主扫描引擎节点的选择策略返回同意或拒绝的消息;目标扫描引擎节点接收其他节点返回的同意或拒绝的消息,如果同意的其他节点数超过设定的阈值,则修改自身的主扫描引擎节点为自身;目标扫描引擎节点作为新的主扫描引擎节点向原主扫描引擎节点获取资产扫描任务信息;目标扫描引擎节点在组播组内发送主扫描引擎变更结果,组播组内其他节点接收到主扫描引擎变更结果后,将原主扫描引擎节点变更为新的主扫描引擎节点,原主扫描引擎节点接收到主扫描引擎变更结果时向调度服务器发送消息,通知调度服务器将主扫描引擎节点修改为新的主扫描引擎节点。进一步的,所述资产扫描方法,还包括:目标扫描引擎节点定时在组播组中发送在线确认消息;目标扫描引擎节点在收到其他节点发送的在线确认消息后,更新对应节点的最近发送时间,在发现一个节点的最近发送时间超过预设的时间间隔时,向主扫描引擎节点通告,以便主扫描引擎节点确定该超时的节点是否离线,如果离线则向组播组中发送离线通知,并上报最新引擎能力信息给调度服务器;目标扫描引擎节点接收到主扫描引擎节点发送的离线通知后,将对应的离线节点从邻居列表中删除。进一步的,所述资产扫描方法,还包括:目标扫描引擎节点发现与主扫描引擎节点的保活时间超过预设的保活间隔,则在组播组中发送主扫描引擎节点问询请求,组播组中的其他节点收到问询请求后,与主扫描引擎节点通信,在发现主扫描引擎离线时向发送问询请求的扫描引擎返回确认结果;目标扫描引擎节点接收其他节点的确认结果,如果确认主扫描引擎节点离线,则根据主扫描引擎节点的选择策略重新选择主扫描引擎节点。本申请还提出了一种资产扫描装置,用于扫描网络中的资产,所述网络中包括调度服务器和多个扫描引擎节点,所述资产扫描装置,应用于扫描引擎,包括:选择策略获取模块,用于与调度服务器通信,获取主扫描引擎节点的选择策略;发现模块,用于加入预设的组播组,在组播组内发送通告消息,组播组中的其他节点接收到通告消息后发送携带各自的扫描引擎信息的响应消息;选择模块,用于接收其他节点返回的响应消息,建立邻居列表,根据主扫描引擎节点的选择策略、邻居列表中的扫描引擎信息及自身的扫描引擎信息,选择主扫描引擎节点,由选择出的主扫描引擎节点来执行资产自动扫描任务。进一步的,所述选择模块在由选择出的主扫描引擎节点来执行资产自动扫描任务时,执行如下操作:如果选择出的主扫描引擎节点是其他节点的原主扫描引擎节点时,向所述原主扫描引擎节点注册,所述原主扫描引擎节点携带最新的引擎能力信息向调度服务器注册保活,由所述原主扫描引擎节点执行资产自动扫描任务;如果选择出的主扫描引擎节点是扫描引擎自身时,则发起主扫描引擎节点变更请求,将扫描引擎自身变更为新的主扫描引擎节点,携带最新的引擎能力信息向调度服务器注册保活,由扫描引擎自身来执行资产自动扫描任务。进一步的,所述选择模块在发起主扫描引擎节点变更请求,将扫描引擎自身变更为新的主扫描引擎节点时,执行如下操作:在所述组播组中发送主扫描引擎变更请求,组播组中的其他节点收到主扫描引擎变更请求,根据主扫描引擎节点的选择策略返回同意或拒绝的消息;接收其他节点返回的同意或拒绝的消息,如果同意的其他节点数超过设定的阈值,则修改自身的主扫描引擎节点为自身;作为新的主扫描引擎节点向原主扫描引擎节点获取资产扫描任务信息;在组播组内发送主扫描引擎变更结果,组播组内其他节点接收到主扫描引擎变更结果后,将原主扫描引擎节点变更为新的主扫描引擎节点,原主扫描引擎节点接收到主扫描引擎变更结果时向调度服务器发送消息,通知调度服务器将主扫描引擎节点修改为新的主扫描引擎节点。进一步的,所述资产扫描装置,还包括:在线确认模块,用于定时在组播组中发送在线确认消息;在收到其他节点发送的在线确认消息后,更新对应节点的最近发送时间,在发现一个节点的最近发送时间超过预设的时间间隔时,向主扫描引擎节点通告,以便主扫描引擎节点确定该超时的节点是否离线,如果离线则向组播组中发送离线通知,并上报最新引擎能力信息给调度服务器;接收到主扫描引擎节点发送的离线通知后,将对应的离线节点从邻居列表中删除。进一步的,所述资产扫描装置,还包括:保活模块,用于在发现与主扫描引擎节点的保活时间超过预设的保活间隔后,在组播组中发送主扫描引擎节点问询请求,组播组中的其他节点收到问询请求后,与主扫描引擎节点通信,在发现主扫描引擎离线时向发送问询请求的扫描引擎返回确认结果;接收其他节点的确认结果,如果确认主扫描引擎节点离线,则根据主扫描引擎节点的选择策略重新选择主扫描引擎节点。本发明提供的一种资产扫描方法及装置,通过加入组播组并在组播组中发送通告消息,选择出主扫描引擎节点,如果当前的主扫描引擎节点还是系统中原来的主扫描引擎节点时,则扫描引擎向主扫描引擎节点注册。如果扫描引擎根据扫描引擎节点的选择策略确定最新的主节点发生变化,则向其他扫描引擎通告该消息并取得其他扫描引擎的同意后,所有扫描引擎向新的主扫描引擎节点注册,并修改自身的主扫描引擎节点信息。原扫描引擎上的资产扫描任务以及其他引擎信息同步发送给新的主扫描引擎节点。同时原扫描引擎向调度服务器通知新的主扫描引擎节点信息。通过本申请的技术方案,可以保证同一个私有网络中只有一台扫描引擎向调度服务器注册,因此也就保证了资产自动扫描任务在同一个私有网络中只会被下发一次,从而既降低了调度服务器的负荷,又减少了扫描引擎的资源浪费,避免资产自动扫描任务在同一个网络内重复执行。附图说明图1为本申请应用环境网络结构示意图;图2为本申请一种资产扫描方法流程示意图;图3为本申请实施例主扫描引擎更新流程图。具体实施方式为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。本申请提供的一种资产扫描方法,可以应用于如图1所示的应用环境中。在信息资产管理领域中,如何快速有效的发现网络资产是重中之重。只有发现了网络中的资产,才能在其基础上做进一步的安全防范等工作。而资产扫描作为资产发现的主要手段,通常采用分布式部署方案如图1所示。在图1所示的网络中包括调度服务器和多个扫描引擎节点,调度服务器部署在公网或者其他网络中,扫描引擎部署在公网或者私网。资产扫描除了常规的用户主动扫描模式外,还支持扫描引擎自动扫描探测功能。在自动扫描探测任务中,针对一个私网中只需要有一台扫描引擎执行资产自动扫描任务即可,其他扫描引擎可以去执行其他主动扫描任务。在一个实施例中,如图2所示,提供了一种资产扫描方法,用于扫描网络中的资产,所述网络中包括调度服务器和多个扫描引擎节点,本实施例资产扫描方法应用于扫描引擎节点,包括:目标扫描引擎节点与调度服务器通信,获取主扫描引擎节点的选择策略;目标扫描引擎节点加入预设的组播组,在组播组内发送通告消息,组播组中的其他节点接收到通告消息后发送携带各自的扫描引擎信息的响应消息;目标扫描引擎节点接收其他节点返回的响应消息,建立邻居列表,根据主扫描引擎节点的选择策略、邻居列表中的扫描引擎信息及自身的扫描引擎信息,选择主扫描引擎节点,由选择出的主扫描引擎节点来执行资产自动扫描任务。具体的,调度服务器作为资产扫描的中心调度节点部署在公网或者外网,扫描引擎即可以部署在公网或者外网,也可以部署在私网或者内网,本实施例以部署在公网和私网为例进行说明。由于公网的调度服务器在没有做nat映射的情况下无法直接访问私网中的扫描引擎,因此本实施例采用扫描引擎主动向调度服务器获取资产扫描任务。扫描引擎部署以后,需要在扫描引擎上配置调度服务器在公网的ip地址。当扫描引擎上线时,先与调度服务器进行通信,获取主扫描引擎节点的选择策略。以图1为例,扫描引擎在与调度服务器通信的报文中携带自身的ip地址,当调度服务器接收到该报文时,会提取报文中携带的扫描引擎在私网内的ip地址以及报文发送的源ip地址,如果两者ip地址不一致,则认为该扫描引擎处于私网或者和调度服务器不在同一个网络中。如果两个ip地址一致,则认为扫描引擎不处于私网或者和调度服务器在同一个网络中。调度服务器将该检测结果返回给扫描引擎。对于扫描引擎不处于私网、或者扫描引擎与调度服务器在同一个网络中的情况,如果确认自身不处于私网或者和调度服务器在同一个网络时,则扫描引擎直接向调度服务器注册,并携带自身的引擎能力等信息。扫描引擎注册成功后,就可以正常从调度服务器中获取资产扫描任务并进行资产扫描工作。这在现实的应用中,属于比较成熟的技术,这里不再赘述。本实施例主要考虑扫描引擎处于私网或者与调度服务器不在同一个网络中的情况。此时,在当前扫描引擎所处的网络中,只需要有一台扫描引擎执行自动扫描探测任务即可,其他扫描引擎可以去执行其他主动扫描任务,从而最大化的提高资源利用率,减少资源浪费。本申请以一个扫描引擎为例进行说明,对于网络中的任何扫描引擎均适用,例如以图1网络中的扫描引擎3为例,则在本申请中,也将扫描引擎3称为目标扫描引擎节点,以下不再赘述。为此,调度服务器在与目标扫描引擎节点的通信中,将主扫描引擎节点的选择策略下发给目标扫描引擎节点。主扫描引擎节点的选择策略可以自定义,例如可以按照扫描引擎ip地址的大小,或者按照扫描引擎的引擎能力大小进行选择。本实施例在以下的描述中按照扫描引擎的引擎能力大小进行选择,引擎能力越大就成为主扫描引擎节点。例如,图1的扫描引擎3与调度服务器进行通信,调度服务器发现扫描引擎3处于私网,或与调度服务器不在同一个网络中,则将主扫描引擎节点的选择策略下发给扫描引擎3。在获取到主扫描引擎节点的选择策略后,对于一个网络中有多个扫描引擎的情况,就可以选择出一个主扫描引擎节点,来执行资产自动扫描任务,而其他扫描引擎则可以去执行其他主动扫描任务,从而最大化的提高资源利用率,减少资源浪费。本实施例目标扫描引擎节点上线时先加入预设的某个特定的组播组,例如组播地址为234.255.255.110,端口为12000。容易理解的是,私网内所有扫描引擎都加入相同的组播组,从而可以在组播组中发送消息和接收消息。例如,扫描引擎3、4、5在同一个私网中,都加入组播地址为234.255.255.110,端口为12000的组播组,他们之间可以通过该组播组进行通信。同样扫描引擎6、7、8在同一个私网中,他们也可以都都加入同一个组播组,扫描引擎6、7、8通过组播组进行通信。如图3所示,在组播组内,扫描引擎定时上报,例如每间隔30秒在该组播组内发送通告消息,消息中携带自身的唯一标识、自身的扫描引擎信息,及自身当前的主扫描引擎节点信息。其中,扫描引擎的唯一标识可以通过uuid生成;自身的扫描引擎信息可以是自身的ip地址或引擎能力大小等;自身当前的主扫描引擎节点信息可以是主扫描引擎节点的ip地址,或mac地址,只要能根据该信息相互通信即可。对于首次上线的扫描引擎,主扫描引擎节点的ip地址为空。如果其上有确定的主扫描引擎节点,则携带该确定的主扫描引擎节点的ip地址。例如,扫描引擎3发送的通告消息携带的内容如下表所示:唯一标识ip地址引擎能力当前主节点engine-d2024d8aa0b1a943192.168.1.100100null表1在上述实施例中,自身的扫描引擎信息包括了ip地址和引擎能力,当前主扫描引擎节点为空。当组播组内的其他扫描引擎4、5接收到该通告消息时,会解析出消息中的携带的扫描引擎3的信息,并将扫描引擎3加入自身的引擎邻居列表中。同时将自身的扫描引擎信息通过响应消息返回给扫描引擎3。即在本申请中,扫描引擎在收到其他节点发出的通告消息后,会将发送该通告消息的扫描引擎加入到自身的引擎邻居列表中。如果目标扫描引擎节点在预设的报文超时时间内没有收到其他扫描引擎节点的响应,则将目标扫描引擎节点上的主扫描引擎节点设置为自身的ip地址,即将自身确定为主扫描引擎节点。如果在预设的报文超时时间内,接收到其他扫描引擎的响应消息,则将这些扫描引擎的信息加入目标扫描引擎节点的引擎邻居列表中。示例性地,预设的报文超时时间为10秒,扫描引擎3若在该超时时间内没有接收到其他扫描引擎发送的响应消息,则将扫描引擎3上的主扫描引擎节点设置为自身的ip地址。如果10秒内接收到其他扫描引擎的响应消息,则将这些扫描引擎的信息加入扫描引擎3的引擎邻居列表中。例如扫描引擎3的引擎邻居列表如下表所示:唯一标识ip地址引擎能力当前主节点engine-3cb59b0821404985192.168.1.11080192.168.1.250engine-877c617db32c371a192.168.1.250120192.168.1.250表2在上述表2中,扫描引擎4、5中的主扫描引擎节点是的ip地址是192.168.1.250,即为扫描引擎5。也就是说在扫描引擎3、4、5所在的私网中,原主扫描引擎节点是扫描引擎5。扫描引擎3根据引擎邻居列表和主扫描引擎节点选择策略判断当前的扫描引擎主节点是哪个扫描引擎节点。例如本实施例的选择策略为根据引擎能力的大小进行选择,由于扫描引擎3的引擎能力为100,扫描引擎5的引擎能力为120,由于扫描引擎3没有扫描引擎5的引擎能力大,因此扫描引擎3判断当前的主扫描引擎为扫描引擎5,则扫描引擎3直接向原主扫描引擎节点(扫描引擎5)进行注册。如果当前扫描引擎3的引擎能力为150,由于比其他所有扫描引擎的引擎能力都高,因此此时选择出的主扫描引擎节点是目标扫描引擎节点自身,即扫描引擎3。在选择出一个主扫描引擎节点后,就由选择出的主扫描引擎节点来执行资产自动扫描任务,而其他扫描引擎则可以去执行其他主动扫描任务,从而最大化的提高资源利用率,减少资源浪费。在一个实施例中,由选择出的主扫描引擎节点来执行资产自动扫描任务,包括如下两种情况:第一种情况,如果选择出的主扫描引擎节点是其他节点的原主扫描引擎节点时,目标扫描引擎节点向所述原主扫描引擎节点注册,所述原主扫描引擎节点携带最新的引擎能力信息向调度服务器注册保活,由所述原主扫描引擎节点执行资产自动扫描任务。第二种情况,如果选择出的主扫描引擎节点是目标扫描引擎节点自身时,则发起主扫描引擎节点变更请求,将目标扫描引擎节点自身变更为新的主扫描引擎节点,携带最新的引擎能力信息向调度服务器注册保活,由目标扫描引擎节点自身来执行资产自动扫描任务。对于第一种情况,也就是对于扫描引擎3的引擎能力为100,扫描引擎5的引擎能力为120,由于扫描引擎3没有扫描引擎5的引擎能力大,因此扫描引擎3选择出的主扫描引擎为扫描引擎5。由于其他扫描引擎4、5已经将自身的主扫描引擎的ip地址设置为192.168.1.250,因此扫描引擎3无需向其他扫描引擎发起主节点变更的通知。由于私网中主扫描引擎节点没有变更,则只需要新加入的扫描引擎3向原主扫描引擎节点进行注册即可。主扫描引擎节点接受扫描引擎3的注册后,其引擎能力发生了变更,则需要携带引擎能力信息向调度服务器进行注册保活。向调度服务器注册时需要携带的引擎能力为自身的引擎能力加上扫描引擎邻居列表中的所有扫描引擎的引擎能力之和,即主扫描引擎节点当前的引擎能力为:扫描引擎3+扫描引擎4+扫描引擎5,也即100+80+120=300。此时,私网中主扫描引擎节点没有变更,仍然由原主扫描引擎节点执行资产自动扫描任务。对于第二种情况,即如果当前扫描引擎3的引擎能力为150,由于比其他所有扫描引擎的引擎能力都高,因此需要发生主扫描引擎的变更。此时扫描引擎3将执行主扫描引擎节点变更操作,具体为:目标扫描引擎节点在所述组播组中发送主扫描引擎变更请求,组播组中的其他节点收到主扫描引擎变更请求,根据主扫描引擎节点的选择策略返回同意或拒绝的消息;目标扫描引擎节点接收其他节点返回的同意或拒绝的消息,如果同意的其他节点数超过设定的阈值,则修改自身的主扫描引擎节点为自身;目标扫描引擎节点作为新的主扫描引擎节点向原主扫描引擎节点获取资产扫描任务信息;目标扫描引擎节点在组播组内发送主扫描引擎变更结果,组播组内其他节点接收到主扫描引擎变更结果后,将原主扫描引擎节点变更为新的主扫描引擎节点,原主扫描引擎节点接收到主扫描引擎变更结果时向调度服务器发送消息,通知调度服务器将主扫描引擎节点修改为新的主扫描引擎节点。具体的,扫描引擎3在组播组中发送主扫描引擎变更请求,请求将主扫描引擎节点设置为扫描引擎3,即ip地址为192.168.1.100。其他扫描引擎接收到该主扫描引擎变更请求时,判断请求报文中携带的主扫描引擎节点ip地址对应的扫描引擎的引擎能力是否最高,是的话就返回同意,否则返回拒绝。正常情况下,各扫描引擎学习到的邻居列表加上自身的ip地址应该都是一样的,因此要么全同意,要么全拒绝,理论上不应该出现部分同意,部分拒绝的情况。本实施例扫描引擎接收其他节点返回的同意或拒绝的消息,如果同意的其他节点数超过设定的阈值,则修改自身的主扫描引擎节点为自身。例如,扫描引擎3根据接收到其他扫描引擎的反馈情况,如果接收到超过扫描引擎邻居列表中一半以上的同意投票,则修改自身的主扫描引擎节点为自身的ip地址192.168.1.100。扫描引擎3修改完自身的主扫描引擎节点信息之后,新的主扫描引擎节点192.168.1.100向原主扫描引擎节点192.168.1.250获取原主扫描引擎节点上的资产扫描任务信息。该资产扫描任务信息包含哪些引擎上执行了哪些任务。然后扫描引擎3在组播组内发送主扫描引擎变更结果。组播组内其他扫描引擎接收到主扫描引擎变更结果后,将自身的主扫描引擎变更为通告内的主扫描引擎节点,所有其他的扫描引擎节点需要向新的主扫描引擎节点注册。各扫描引擎将资产扫描任务的结果发送给新主扫描引擎节点。原主扫描引擎接收到主扫描引擎变更结果时向调度服务器发送消息,通知调度服务器当前私网的主扫描引擎节点修改ip地址为192.168.1.100。扫描引擎3作为新的主扫描引擎节点需要向调度服务器注册保活,在注册保活时携带最新的引擎能力信息,最新的引擎能力信息为自身的引擎能力加上扫描引擎邻居列表中的所有扫描引擎的引擎能力之和,即150+80+120=350。原主扫描引擎节点接收到主扫描引擎变更结果时向调度服务器发送消息,通知调度服务器将主扫描引擎节点修改为新的主扫描引擎节点。调度服务器接收到主扫描引擎节点变更的通知时,将调度服务器上记录的原主扫描引擎节点的任务信息都切换给新主扫描引擎节点。在扫描引擎3成为新的主扫描引起后,在私网内将由扫描引擎3来执行资产自动扫描任务。需要说明的是,在选择了新的主扫描引擎节点后,如何通知组播组中的其他节点变更主扫描引擎,本申请并不限制采用的具体方法。例如上述实施例可以通过扫描引擎3发送主扫描引擎变更请求,再发送主扫描引擎变更结果的方法。也可以仅发送一次主扫描引擎变更请求,其他节点收到变更请求后,如果返回同意,则修改自身的主扫描引擎节点的ip为扫描引擎3的ip地址。如果返回拒绝,则不修改。在一个实施例中,所述资产扫描方法,还包括:目标扫描引擎节点定时在组播组中发送在线确认消息;目标扫描引擎节点在收到其他节点发送的在线确认消息后,更新对应节点的最近发送时间,在发现一个节点的最近发送时间超过预设的时间间隔时,向主扫描引擎节点通告,以便主扫描引擎节点确定该超时的节点是否离线,如果离线则向组播组中发送离线通知,并上报最新引擎能力信息给调度服务器;目标扫描引擎节点接收到主扫描引擎节点发送的离线通知后,将对应的离线节点从邻居列表中删除。具体的,各扫描引擎定时在组播组中发送在线确认消息。其他扫描引擎接收到在线确认消息后,更新对应扫描引擎的最近发送时间。例如扫描引擎3发现扫描引擎4的最近发送时间距离现在已经超过3个保活间隔,例如3*30=90秒了,则扫描引擎3向主扫描引擎节点(假设当前主扫描引擎节点为扫描引擎5)通告一下,则主扫描引擎节点(即,扫描引擎5)先与超时节点扫描引擎4进行通信测试。如果扫描引擎4没有响应,则认为扫描引擎4已经离线,则主扫描引擎节点向组播组内发起指定扫描引擎离线通知,通知其他扫描引擎将扫描引擎4从扫描引擎邻居列表中删除。扫描引擎3接到离线通知收,将扫描引擎4从扫描引擎邻居列表中删除。同时主扫描引擎向调度服务器发送引擎能力变更的通知,将删除后的扫描引擎总引擎能力上报给调度服务器。同时主扫描引擎节点将该离线后的扫描引擎4上的任务回收并下发给扫描引擎邻居列表内的其他扫描引擎。在一个实施例中,所述资产扫描方法,还包括:目标扫描引擎节点发现与主扫描引擎节点的保活时间超过预设的保活间隔,则在组播组中发送主扫描引擎节点问询请求,组播组中的其他节点收到问询请求后,与主扫描引擎节点通信,在发现主扫描引擎离线时向发送问询请求的扫描引擎返回确认结果;目标扫描引擎节点接收其他节点的确认结果,如果确认主扫描引擎节点离线,则根据主扫描引擎节点的选择策略重新选择主扫描引擎节点。具体的,如果有其他非主扫描引擎节点发现主扫描引擎节点已经出现超时3个保活间隔了,则在组播组里发送主扫描引擎节点问询请求。例如,扫描引擎3发现主扫描引擎节点(扫描引擎5)保活超时,则发送主扫描引擎节点问询请求。其他扫描引擎例如扫描引擎4接收到该问询请求时,解析出问询请求中携带的主扫描引擎的ip地址。与扫描引擎5进行通信,如果扫描引擎5没有响应,则确认扫描引擎5确实已经离线,并返回离线给发送询问报文的扫描引擎3。如果扫描引擎5正常响应,则确认扫描引擎5依然在线,并返回在线给发送询问报文的扫描引擎3。发送询问报文的扫描引擎3根据接收到问询请求的扫描引擎4返回的在线情况,确认主扫描引擎节点是否离线。在私网内扫描引擎有多个时,会设置一个判断阈值,当返回在线的扫描引擎节点数超过该判断阈值时,表明该主扫描引擎节点依然在线,则本次问询结束,不进行修改。或者,当返回离线的扫描引擎节点数超过该判断阈值时,表明该主扫描引擎节点已经离线,则根据主扫描引擎节点的选择策略,选出最新的主扫描引擎节点。同时将主扫描引擎节点修改为最新的主扫描引擎节点。关于新的主扫描引擎节点的变更,在前面实施例中已经进行过详细的阐述,这里不再赘述。扫描引擎完成主扫描引擎节点的选择后,后续其他扫描引擎都向该扫描引擎获取任务和上报任务结果。然后由主扫描引擎节点向调度服务器转发对应的获取任务请求和上报任务结果。例如某引擎向主扫描引擎节点请求获取任务。主扫描引擎将该任务请求转发给调度服务器,并携带上请求任务的扫描引擎的引擎能力信息。调度服务器根据该请求引擎的引擎能力大小下发对应的资产扫描任务给主扫描引擎节点。主扫描引擎节点将资产扫描任务信息记录在自身的资产扫描任务分配表中,并转发给请求的扫描引擎。如果扫描引擎资产扫描任务执行结束,将结果上报给主扫描引擎节点,主扫描引擎节点再将资产扫描任务结果转发给调度服务器。这样整个资产扫描任务流程就结束了。本实施例对于资产自动扫描任务,只允许在主扫描引擎节点上。其他非主扫描引擎节点无法获取资产自动扫描任务。如果发生主扫描引擎节点变更的时候,需要先将原主扫描引擎节点上的资产自动扫描任务取消,并将资产自动扫描任务转移给新的主扫描引擎节点,并完成调度服务器上的自动扫描任务信息变更操作。该任务信息变更操作可以在主扫描引擎节点向调度服务器发起主扫描引擎节点变更时一起完成。通过以上方案可以保证,一个私网中只有一个扫描引擎与调度服务器进行通信,因此也就保证了同一个私网中只会有一个扫描引擎执行资产自动扫描任务。同时由于其他扫描引擎不再直接与调度服务器进行通信,因此可以使得调度服务器的业务压力降低,整个扫描系统的性能会提升。在一个实施例中,本申请还提供了一种资产扫描装置,用于扫描网络中的资产,所述网络中包括调度服务器和多个扫描引擎节点,所述资产扫描装置,应用于扫描引擎,包括:选择策略获取模块,用于与调度服务器通信,获取主扫描引擎节点的选择策略;发现模块,用于加入预设的组播组,在组播组内发送通告消息,组播组中的其他节点接收到通告消息后发送携带各自的扫描引擎信息的响应消息;选择模块,用于接收其他节点返回的响应消息,建立邻居列表,根据主扫描引擎节点的选择策略、邻居列表中的扫描引擎信息及自身的扫描引擎信息,选择主扫描引擎节点,由选择出的主扫描引擎节点来执行资产自动扫描任务。需要说明的是,本实施例资产扫描装置可应用于任何一个扫描引擎中,关于资产扫描装置的具体限定可以参见上文中对于资产扫描方法的限定,在此不再赘述。上述资产扫描装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。在一个实施例中,所述选择模块在由选择出的主扫描引擎节点来执行资产自动扫描任务时,执行如下操作:如果选择出的主扫描引擎节点是其他节点的原主扫描引擎节点时,向所述原主扫描引擎节点注册,所述原主扫描引擎节点携带最新的引擎能力信息向调度服务器注册保活,由所述原主扫描引擎节点执行资产自动扫描任务;如果选择出的主扫描引擎节点是扫描引擎自身时,则发起主扫描引擎节点变更请求,将扫描引擎自身变更为新的主扫描引擎节点,携带最新的引擎能力信息向调度服务器注册保活,由扫描引擎自身来执行资产自动扫描任务。在一个实施例中,所述选择模块在发起主扫描引擎节点变更请求,将扫描引擎自身变更为新的主扫描引擎节点时,执行如下操作:在所述组播组中发送主扫描引擎变更请求,组播组中的其他节点收到主扫描引擎变更请求,根据主扫描引擎节点的选择策略返回同意或拒绝的消息;接收其他节点返回的同意或拒绝的消息,如果同意的其他节点数超过设定的阈值,则修改自身的主扫描引擎节点为自身;作为新的主扫描引擎节点向原主扫描引擎节点获取资产扫描任务信息;在组播组内发送主扫描引擎变更结果,组播组内其他节点接收到主扫描引擎变更结果后,将原主扫描引擎节点变更为新的主扫描引擎节点,原主扫描引擎节点接收到主扫描引擎变更结果时向调度服务器发送消息,通知调度服务器将主扫描引擎节点修改为新的主扫描引擎节点。在一个实施例中,所述资产扫描装置,还包括:在线确认模块,用于定时在组播组中发送在线确认消息;在收到其他节点发送的在线确认消息后,更新对应节点的最近发送时间,在发现一个节点的最近发送时间超过预设的时间间隔时,向主扫描引擎节点通告,以便主扫描引擎节点确定该超时的节点是否离线,如果离线则向组播组中发送离线通知,并上报最新引擎能力信息给调度服务器;接收到主扫描引擎节点发送的离线通知后,将对应的离线节点从邻居列表中删除。在一个实施例中,所述资产扫描装置,还包括:保活模块,用于在发现与主扫描引擎节点的保活时间超过预设的保活间隔后,在组播组中发送主扫描引擎节点问询请求,组播组中的其他节点收到问询请求后,与主扫描引擎节点通信,在发现主扫描引擎离线时向发送问询请求的扫描引擎返回确认结果;接收其他节点的确认结果,如果确认主扫描引擎节点离线,则根据主扫描引擎节点的选择策略重新选择主扫描引擎节点。以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1