CN114595457A - 任务处理方法、装置、计算机设备和存储介质 - Google Patents
任务处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114595457A CN114595457A CN202011406878.7A CN202011406878A CN114595457A CN 114595457 A CN114595457 A CN 114595457A CN 202011406878 A CN202011406878 A CN 202011406878A CN 114595457 A CN114595457 A CN 114595457A
- Authority
- CN
- China
- Prior art keywords
- task
- server
- distributed
- vulnerability
- vulnerability scanning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请涉及一种任务处理方法、装置、计算机设备和存储介质。所述方法涉及云计算和云安全技术,所述方法包括:接收待扫描网站对应的漏洞扫描任务;将漏洞扫描任务依次存入第一消息队列中;从第一消息队列中提取漏洞扫描任务;获取对提取的漏洞扫描任务进行任务分解得到的子任务;响应于分布式探测服务器的任务请求,将子任务推送至分布式探测服务器,以使分布式探测服务器根据子任务向待扫描网站发送漏洞探测请求。采用本方法能够提高漏洞扫描效率。
Description
技术领域
本申请涉及云安全技术领域,特别是涉及一种任务处理方法、系统、装置、计算机设备和存储介质。
背景技术
漏洞扫描系统是一种漏洞自动化扫描工具,通用的漏洞扫描系统,通过发送带有定制规则的网络请求到被扫描网络站点,根据被扫描网络站点的响应内容判断该被扫描网络站点是否有漏洞。
随着互联网技术的飞速发展,网络站点也日益增多,漏洞扫描系统要处理的扫描任务的并发量非常大,这使得上述通用的漏洞扫描系统面临着扫描耗时过久、扫描效率较低的问题,如何快速完成漏洞扫描是个亟需解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高漏洞扫描效率的任务处理方法、系统、装置、计算机设备和存储介质。
一种任务处理方法,由分布式调度服务器执行,所述方法包括:
接收待扫描网站对应的漏洞扫描任务;
将所述漏洞扫描任务依次存入第一消息队列中;
从所述第一消息队列中提取所述漏洞扫描任务;
获取对提取的所述漏洞扫描任务进行任务分解得到的子任务;
响应于分布式探测服务器的任务请求,将所述子任务推送至分布式探测服务器,以使所述分布式探测服务器根据所述子任务向所述待扫描网站发送漏洞探测请求。
在一个实施例中,所述将所述漏洞扫描任务依次存入第一消息队列中,包括:对所述漏洞扫描任务进行解析,获得所述待扫描网站的网址和扫描配置信息;将所述待扫描网站的网址及所述扫描配置信息对应存入第一消息队列中。
在一个实施例中,所述从所述第一消息队列中提取所述漏洞扫描任务,包括:确定当前正在处理的漏洞扫描任务的总数量;当所述总数量小于预设的处理上限值时,则按预设的时间间隔,依次从所述第一消息队列中提取漏洞扫描任务;当所述总数量大于或等于预设的处理上限值时,则暂停从所述第一消息队列中提取所述漏洞扫描任务。
在一个实施例中,所述获取对提取的所述漏洞扫描任务进行任务分解得到的子任务,包括:将从所述第一消息队列中提取的漏洞扫描任务发送至分解服务器;接收所述分解服务器对所述漏洞扫描任务进行任务分解后返回的子任务。
在一个实施例中,所述分解服务器为分布式分解服务器,所述将从所述第一消息队列中提取的漏洞扫描任务发送至分解服务器,接收所述分解服务器对所述漏洞扫描任务进行任务分解后返回的子任务,包括:将从所述第一消息队列中提取的漏洞扫描推送至任务信道;从所述任务信道中获得所述漏洞扫描任务后,生成关于所述漏洞扫描任务的分解请求;发送所述分解请求至所述分布式分解服务器;接收所述分布式分解服务器响应于所述分解请求,对所述漏洞扫描任务进行任务分解后所返回的子任务。
在一个实施例中,所述分解服务器对所述漏洞扫描任务进行任务分解的步骤包括:遍历插件列表,所述插件列表包括用于检测不同类型漏洞的插件;根据所述漏洞扫描任务的扫描配置信息,从所述插件列表中确定用于检测所述漏洞扫描任务的指定插件;遍历所述指定插件所对应的测试样例列表;根据所述漏洞扫描任务的扫描配置信息,从所述测试样例列表中确定用于检测所述漏洞扫描任务的指定测试样例;根据所述指定测试样例生成关于所述漏洞扫描任务的子任务。
在一个实施例中,所述获取对提取的所述漏洞扫描任务进行任务分解得到的子任务之后,上述方法还包括:将所述子任务依次存入第二消息队列中;所述响应于分布式探测服务器的任务请求,将所述子任务推送至分布式探测服务器,包括:接收所述分布式探测服务器的任务请求;当查询到所述第二消息队列中存在子任务时,则响应于所述任务请求,将所述子任务推送至所述分布式探测服务器。
在一个实施例中,上述方法还包括:接收所述分布式探测服务器的令牌请求;当查询到当前存在所述待扫描网站的探测令牌时,则响应于所述令牌请求,向所述分布式探测服务器返回所述待扫描网站的探测令牌,所述探测令牌用于控制所述分布式探测服务器在获取到所述探测令牌后向所述待扫描网站发送漏洞探测请求。
在一个实施例中,上述方法还包括:从所述漏洞扫描任务的扫描配置信息中,获取所述待扫描网站的扫描速度;按照所述扫描速度产生所述待扫描网站的探测令牌。
在一个实施例中,上述方法还包括:通过所述分布式探测服务器接收所述待扫描网站响应于所述漏洞探测请求返回的响应结果;将所述响应结果与所述子任务对应的漏洞检测规则进行匹配,获得所述待扫描网站的漏洞检测结果。
一种任务处理系统,包括分布式调度服务器和分布式探测服务器,其中:
所述分布式调度服务器用于接收待扫描网站对应的漏洞扫描任务,将所述漏洞扫描任务依次存入第一消息队列中,从所述第一消息队列中提取所述漏洞扫描任务,获取对提取的所述漏洞扫描任务进行任务分解得到的子任务;
所述分布式调度服务器还用于响应于所述分布式探测服务器的任务请求,将所述子任务推送至所述分布式探测服务器;
所述分布式探测服务器用于根据所述子任务向所述待扫描网站发送漏洞探测请求。
一种任务处理装置,所述装置包括:
接收模块,用于接收待扫描网站对应的漏洞扫描任务;
持久化模块,用于将所述漏洞扫描任务依次存入第一消息队列中;
提取模块,用于从所述第一消息队列中提取所述漏洞扫描任务;
获取模块,用于获取对提取的所述漏洞扫描任务进行任务分解得到的子任务;
任务分发模块,用于响应于分布式探测服务器的任务请求,将所述子任务推送至分布式探测服务器,以使所述分布式探测服务器根据所述子任务向所述待扫描网站发送漏洞探测请求。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收待扫描网站对应的漏洞扫描任务;
将所述漏洞扫描任务依次存入第一消息队列中;
从所述第一消息队列中提取所述漏洞扫描任务;
获取对提取的所述漏洞扫描任务进行任务分解得到的子任务;
响应于分布式探测服务器的任务请求,将所述子任务推送至分布式探测服务器,以使所述分布式探测服务器根据所述子任务向所述待扫描网站发送漏洞探测请求。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收待扫描网站对应的漏洞扫描任务;
将所述漏洞扫描任务依次存入第一消息队列中;
从所述第一消息队列中提取所述漏洞扫描任务;
获取对提取的所述漏洞扫描任务进行任务分解得到的子任务;
响应于分布式探测服务器的任务请求,将所述子任务推送至分布式探测服务器,以使所述分布式探测服务器根据所述子任务向所述待扫描网站发送漏洞探测请求。
一种计算机程序,所述计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中,计算机设备的处理器从所述计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行上述任务处理方法中的步骤。
上述任务处理方法、系统、装置、计算机设备和存储介质中,调度服务器是分布式的,可以按需扩容,分布式调度服务器接收待扫描网站对应的漏洞扫描任务之后,将漏洞扫描任务依次持久化存入第一消息队列中,然后再由各个分布式调度服务器从该第一消息队列中依次提取扫描任务,相比于传统方式中直接处理所有的扫描任务而言,不仅可以避免扫描任务过多导致系统崩溃,还可以从整体上把控当前处理的扫描任务的数量;此外,对待扫描网站发送探测请求的探测服务器也是分布式的,也可以按需扩容,分布式调度服务器获取到各分布式探测服务器的任务请求后,就将获取的各个子任务分别推送至不同的分布式探测服务器,分布式探测服务器就可以根据子任务向所述待扫描网站发送漏洞探测请求,这样,即便漏洞扫描任务的并发量很大时,也能实现快速、有序地处理每个漏洞扫描任务,提升扫描效率。
附图说明
图1为一个实施例中任务处理方法的应用环境图;
图2为一个实施例中任务处理方法的流程示意图;
图3为一个实施例中任务处理系统的架构示意图;
图4为另一个实施例中任务处理系统的架构示意图;
图5为一个实施例中任务分解的流程示意图;
图6为又一个实施例中任务处理系统的架构示意图;
图7为另一个实施例中任务处理方法的流程示意图;
图8为一个实施例中多个分布式探测服务器抢占探测令牌的示意图;
图9为一个实施例中分发探测令牌的流程示意图;
图10为一个实施例中任务处理方法的时序图;
图11为一个具体的实施例中任务处理方法的流程示意图;
图12为一个实施例中任务处理装置的结构框图;
图13为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的任务处理方法,可以应用于如图1所示的应用环境中。其中,分布式调度服务器102通过网络与分布式探测服务器104进行通信。分布式调度服务器102接收待扫描网站对应的漏洞扫描任务,将漏洞扫描任务依次存入第一消息队列106中,从第一消息队列106中提取漏洞扫描任务,获取对提取的漏洞扫描任务进行任务分解得到的子任务,响应于分布式探测服务器的任务请求,将子任务推送至分布式探测服务器104,以使分布式探测服务器104根据子任务向待扫描网站108发送漏洞探测请求。
其中,分布式调度服务器102及分布式探测服务器104均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一个实施例中,参照图1,分布式调度服务器102可以接收终端110发送的漏洞扫描任务,终端110通过网络与分布式调度服务器102进行通信。终端110上可以运行有漏洞扫描客户端,该漏洞扫描客户端的漏洞扫描服务,可以由漏洞扫描服务器100提供,漏洞扫描服务器100可以包括分布式调度服务器102和分布式探测服务器104。用户可以通过该漏洞扫描客户端提交漏洞扫描任务,通过漏洞扫描服务器100处理用户提交的漏洞扫描任务。
其中,终端110可以但不限于是各种个人计算机、智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
本申请实施例提供的任务处理方法,该任务处理方法的执行主体可以是本申请实施例提供的任务处理装置,或者集成了该任务处理装置的计算机设备,其中该任务处理装置可以采用硬件或软件的方式实现。计算机设备可以是上述的分布式调度服务器102。
本申请实施例提供的任务处理方法,涉及云计算(cloud computing)技术,云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
例如,本申请实施例提供的任务处理方法,将漏洞扫描任务分布在大量的分布式调度服务器上,在分布式调度服务器将漏洞扫描任务依次存入第一消息队列中之后,由各个分布式调度服务器依次从第一消息队列中提取漏洞扫描任务,还可以将任务分解得到的子任务分布在大量的分布式探测服务器,由各个分布式探测服务器根据子任务向待扫描网站发送漏洞探测请求,能够在漏洞扫描任务的并发量很大时,实现快速、有序地处理每个漏洞扫描任务,提升扫描效率。
本申请实施例提供的任务处理方法,还涉及云安全(Cloud Security)技术,云安全是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
云安全主要研究方向包括:1、云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机系统安全、用户数据的安全存储与隔离、用户接入认证、信息传输安全、网络攻击防护、合规审计等;2、安全基础设施的云化,主要研究如何采用云计算新建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能力及风险控制能力;3、云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,如防病毒服务等。
例如,本申请实施例提供的任务处理方法,还可以通过作为云服务器的分布式探测服务器根据分解得到的子任务向待扫描网站发送漏洞探测请求,接收待扫描网站返回的响应结果后,将响应结果与子任务对应的漏洞检测规则进行匹配,获得待扫描网站的漏洞检测结果。
在一个实施例中,如图2所示,提供了一种任务处理方法,以该方法应用于图1中的分布式调度服务器102为例进行说明,包括以下步骤:
步骤202,接收待扫描网站对应的漏洞扫描任务。
其中,漏洞扫描任务是待进行漏洞扫描的任务,根据漏洞扫描任务可以确定要进行漏洞扫描的网站。漏洞扫描任务包括待扫描网站对应的网址,该网址可以是待扫描网站最上层的网址,例如待扫描网站首页的网址https://www.xxx.com/,该网址还可以是对应待扫描网站某个具体功能网页的网址,例如用户登录页面、支付页面或用户信息展示页面,等等。
具体地,漏洞扫描任务可以是用户通过终端提交至分布式调度服务器的,分布式调度服务器的数量有多个,每个分布式调度服务器均可以接收待扫描网站对应的漏洞扫描任务。
可选地,分布式调度服务器接收的漏洞扫描任务,还可以包括扫描配置信息,分布式调度服务器可以按照该扫描配置信息处理该漏洞扫描任务。扫描配置信息可以包括扫描强度、扫描速度、扫描插件类型和扫描测试样例标识中的至少一种。
扫描强度是指对待扫描网站进行漏洞扫描的程度,扫描强度可以按不同的扫描程度,划分为深度扫描和快速扫描,显然,深度扫描所耗费的扫描时间可能会比快速扫描所耗费的扫描时间长一些。深度扫描是指对待扫描网站进行相对深入地扫描,当分布式调度服务器获取到该漏洞扫描任务,且该漏洞扫描任务的扫描配置信息指示需要对相应的待扫描网站进行深度扫描时,分布式调度服务器需要对该漏洞扫描任务的网址进行深度扫描。例如,当漏洞扫描任务包括待扫描网站首页的网站时,分布式调度服务器可以进一步爬取与该网址关联的网页依次进行扫描,以对该待扫描网站相关的网页进行全面扫描;又例如,使用多种类型的扫描插件对该待扫描网站进行扫描,以对该待扫描网站可能存在的漏洞进行全面扫描;再例如,对于某一些类型的扫描插件,使用不同的测试样例对该待扫描网站进行扫描,以对该待扫描网站可能存在的某一些类型的漏洞进行多次、全面扫描。
相应地,快速扫描是指对待扫描网站进行相对简单地扫描,当分布式调度服务器获取到该漏洞扫描任务,且该漏洞扫描任务的扫描配置信息指示需要对相应的待扫描网站进行快速扫描时,分布式调度服务器需要对该漏洞扫描任务的网址进行快速扫描。例如,分布式调度服务器可以仅对该漏洞扫描任务所包括的网址进行扫描;又例如,可以只使用一些易发漏洞对的扫描插件对该待扫描网站进行扫描;再例如,对于一些易检漏洞,可以只采用一种或较少的测试样例进行扫描。
扫描速度是指单位时间内对待扫描网站发出的探测请求的数量,例如每秒50个探测请求。由于漏洞扫描的过程中,需要通过发送带有定制规则(payload)的探测请求到待扫描网站,根据被扫描网站的响应内容判断该待扫描网站是否有漏洞,因此待扫描网站会不断地接受到探测请求。显然,单位时间内发出的探测请求的数量越多,扫描速度也就会越快,如果单位时间内发出的探测请求太多,则会对待扫描网站造成较大的负载,严重情况下可能导致待扫描网站崩溃,因此,漏洞扫描任务中还可以包括扫描速度,这样,可以在尽可能实现快速扫描的情况下,保证待扫描网站的稳定性。
扫描插件类型是用于检测漏洞的插件的类型,不同类型的扫描插件用于检测不同的漏洞,因此,漏洞扫描任务中还可以包括扫描插件类型,这样,可以按照实际需要,采用相应的扫描插件对相应的漏洞进行检测。扫描测试样例标识用于唯一标识不同的扫描测试样例,一个扫描插件对应了某一种漏洞,对于某一类型的扫描插件而言,可以对应多个扫描测试样例,这多个扫描测试样例采用不同的检测方法对该类型的漏洞进行检测。
在一个实施例中,用户通过终端向分布式调度服务器提交漏洞扫描任务时,可以指定对待扫描网站的扫描强度、扫描速度、扫描所使用的扫描插件类型和测试样例标识中的至少一种,这样,分布式调度服务器可以按照用户的需求,实现定制化地对待扫描网站进行漏洞扫描。
可选地,若用户没有指定扫描配置信息,则分布式调度服务器在接收到漏洞扫描任务后,可以按照默认的扫码配置信息对该漏洞扫描任务进行处理,例如,默认的扫描配置信息为扫描强度为深度扫描、扫描速度为每秒50个探测请求、使用所有的扫描插件进行扫描及使用所有的测试样例发送探测请求。
步骤204,将漏洞扫描任务依次存入第一消息队列中。
其中,第一消息队列可以是基于Redis、RabbitMQ等实现的队列,分布式调度服务器将接收的漏洞扫描任务存入该第一消息队列中。具体地,分布式调度服务器接收待扫描网站对应的漏洞扫描任务之后,将漏洞扫描任务依次持久化存入第一消息队列中,然后再由各个分布式调度服务器从该第一消息队列中依次提取扫描任务,相比于传统方式中直接处理所有的扫描任务而言,先将接收的漏洞扫描任务存入消息队列中,以消息队列作为大量并发漏洞扫描任务的缓冲,不仅可以避免扫描任务过多导致扫描任务处理系统崩溃,还可以从整体上把控扫描任务处理系统当前处理的扫描任务的数量,提高扫描效率。
在一个实施例中,将漏洞扫描任务依次存入第一消息队列中,包括:对漏洞扫描任务进行解析,获得待扫描网站的网址和扫描配置信息;将待扫描网站的网址及扫描配置信息对应存入第一消息队列中。
前文提到,漏洞扫描任务包括待扫描网站对应的网址,还可以包括扫描配置信息,那么,在分布式调度服务器接收到漏洞扫描任务后,对漏洞扫描任务进行解析,提取出待扫描网站和相应的扫描配置信息,并将待扫描网站及扫描配置信息对应存入第一消息队列中。
在一个实施例中,分布式调度服务器可以共享一个用于存放漏洞扫描任务的第一消息队列,也就是说,所有的分布式调度服务器可以将各自接收的漏洞扫描任务存入同一个第一消息队列中。也可以按照实际需要,将分布式调度服务器按小组进行划分,划分至同一小组中的分布式调度服务器所接收的漏洞扫描任务存入至同一个消息队列中,不同小组中的分布式调度服务器所接收的漏洞扫描任务存入不同的消息队列中,这样可以避免消息队列中的任务聚集过多。
此外,分布式调度服务器是分布式的,可以按照实际需要动态扩缩容,即增加或减少分布式调度服务器的数量,分布式调度服务器将接收的漏洞扫描任务持久化存入第一消息队列中之后,即便出现单点故障,其它正常运行的分布式调度服务器还可以从该第一消息队列中提取漏洞扫描任务,保证扫描任务处理系统的正常运行。
步骤206,从第一消息队列中提取漏洞扫描任务。
具体地,分布式调度服务器可以从第一消息队列中提取漏洞扫描任务。
在一个实施例中,分布式调度服务器可以设置一个定时轮询组件,通过该组件按照定时轮询的方式,依次从第一消息队列中提取漏洞扫描任务,从而控制整个扫描任务处理系统当前处理的任务的数量和效率,保证扫描任务处理系统及待扫描网站的稳定性。
在一个实施例中,从第一消息队列中提取漏洞扫描任务,包括:确定当前正在处理的漏洞扫描任务的总数量;当总数量小于预设的处理上限值时,则按预设的时间间隔,依次从第一消息队列中提取漏洞扫描任务;当总数量大于或等于预设的处理上限值时,则暂停从第一消息队列中提取漏洞扫描任务。
在本实施例中,分布式调度服务器中的轮询组件可以根据当前正在处理的漏洞扫描任务的总数量来控制是否要从消息队列中提取漏洞扫描任务,从而可以避免扫描任务过多导致扫描任务处理系统崩溃,还可以从整体上把控当前处理的扫描任务的数量。
步骤208,获取对提取的漏洞扫描任务进行任务分解得到的子任务。
为了实现对待扫描网站的全面漏洞扫描,需要对漏洞扫描任务进行任务分解,任务分解可以将漏洞扫描任务分为多个子任务。任务分解实际上是通过对漏洞扫描任务中的网址进行解析,得到网址中的参数,针对每个参数,利用扫描插件对应的测试样例替换相应的参数,从而得到该漏洞扫描任务对应的子任务。网址中的参数包括但不限于HOST参数、User Agent参数、Referer参数、GET参数、POST参数、Cookie参数和Path参数。
在一个实施例中,分布式调度服务器也可以自行对提取的漏洞扫描任务进行任务分解,得到子任务。在一个实施例中,分布式调度服务器主要负责漏洞扫描任务的调度,分布式调度服务器可以将漏洞扫描任务发送至分解服务器进行任务分解,并接收分解服务器返回的子任务,通过这种分布式调度,提升漏洞扫描任务并发量很大时扫描任务处理系统的稳定性和待扫描网站的可用性。
在一个实施例中,获取对提取的漏洞扫描任务进行任务分解得到的子任务,包括:将从第一消息队列中提取的漏洞扫描任务发送至分解服务器;接收分解服务器对漏洞扫描任务进行任务分解后返回的子任务。
如图3所示,为一个实施例中任务处理系统的架构示意图。参照图3,分布式调度服务器将从第一消息队列中提取的漏洞扫描任务发送至分解服务器,请求分解服务器对漏洞扫描任务进行任务分解后,分解服务器向分布式调度服务器返回子任务。
在一个实施例中,分解服务器为分布式分解服务器,将从第一消息队列中提取的漏洞扫描任务发送至分解服务器,接收分解服务器对漏洞扫描任务进行任务分解后返回的子任务,包括:将从第一消息队列中提取的漏洞扫描推送至任务信道;从任务信道中获得漏洞扫描任务后,生成关于漏洞扫描任务的分解请求;发送分解请求至分布式分解服务器;接收分布式分解服务器响应于分解请求,对漏洞扫描任务进行任务分解后所返回的子任务。
具体地,分布式调度服务器的轮询组件可以将从第一消息队列中提取的漏洞扫描推送至任务信道,任务信道中一旦存在漏洞扫描任务,就会立即被取出后发送至分布式分解服务器,并请求分解服务器将完整的漏洞扫描任务分解成多个子任务。
在本实施例中,扫描任务处理系统还包括分布式设置的分解服务器,通过这些分解服务器并行地响应分布式调度服务器的分解请求,可以从整体上大大提高漏洞扫描效率。
在一个实施例中,分布式调度服务器可包括分布式分解节点,可由各个分解节点从任务信道中取出漏洞扫描任务后,生成关于该漏洞扫描任务的分解请求,再将该分解请求至分布式分解服务器,通过分布式分解服务器对漏洞扫描任务进行任务分解。
如图4所示,为一个实施例中任务处理系统的架构示意图。参照图4,用户通过终端提交漏洞扫描任务至分布式调度服务器,分布式调度服务器中将接收的漏洞扫描任务依次存入第一消息队列中,通过轮询组件依次从第一消息队列中提取漏洞扫描任务后,推送至任务信道,再通过分布式分解节点从任务信道中取出漏洞扫描任务,并请求分布式分解服务器对其进行任务分解后,接收分布式分解服务器返回的子任务。
在一个实施例中,分解服务器对漏洞扫描任务进行任务分解的步骤包括:遍历插件列表,插件列表包括用于检测不同类型漏洞的插件;根据漏洞扫描任务的扫描配置信息,从插件列表中确定用于检测漏洞扫描任务的指定插件;遍历指定插件所对应的测试样例列表;根据漏洞扫描任务的扫描配置信息,从测试样例列表中确定用于检测漏洞扫描任务的指定测试样例;根据指定测试样例生成关于漏洞扫描任务的子任务。
其中,插件是指漏洞扫描插件,是按照一定规范的编写出来针对某一种具体类型的网络漏洞的程序。测试样例是与插件对应的,针对某一漏洞的插件可以对应多种不同的测试样例,该不同的测试样例对应了针对该漏洞不同的检测方法。例如,针对漏洞A,我们可以使用插件001对应的测试样例00101、测试样例00102以及测试样例00103分别发送不同的漏洞探测请求至待扫描网站。具体地,当漏洞扫描任务的扫描配置信息指定了插件类型时,分解服务器在遍历插件列表的过程中,从插件列表中确定用于对该漏洞扫描任务进行检测的指定插件,当漏洞扫描任务的扫描配置信息还指定了某些插件使用的测试样例时,分解服务器在遍历这些插件的测试样例列表的过程中,从测试样例列表中确定用于对该漏洞扫描任务进行检测的指定测试样例,并利用该指定测试样例替换待扫描网站的网址中的参数后,得到子任务。
在一个实施例中,分解服务器可按插件列表中各插件序号,依次遍历各个插件,类似地,还可按照每个插件对应的测试样例列表中各测试样例的序号,依次遍历各个测试样例,并利用遍历的测试样例生成子任务。
如图5所示,为一个实施例中任务分解的流程示意图。参照图5,漏洞扫描任务分解开始后,循环遍历插件列表,判断当前插件是否大于上次分解的插件序号;若是小于,则遍历插件列表中的下一个插件;若是大于,则继续判断当前插件是否属于漏洞扫描任务的扫描配置信息所指定的插件类型;若否则遍历插件列表中的下一个插件;若是,则遍历该插件对应的测试样例列表;判断当前测试样例序号是否大于上次分解的测试样例序号;若是小于,则遍历该测试样例列表中的下一个测试样例;若是大于,则继续判断当前测试样例是否属于该漏洞扫描任务的扫描配置信息所指定的测试样例;若是,则进一步根据该测试样例生成子任务。
具体地,在生成子任务时,当该测试样例要测试的参数是HOST,并且该漏洞扫描任务指定要扫描HOST时,则利用该测试样例替换待扫描网站的网址中的HOST参数,得到子任务。当该测试样例要测试的参数是User Agent,并且该漏洞扫描任务指定要扫描UserAgent(简称UA)时,则利用该测试样例替换待扫描网站的网址中的User Agent参数,得到子任务。当该测试样例要测试的参数是GET,并且该漏洞扫描任务指定要扫描GET时,则利用该测试样例替换待扫描网站的网址中的GET参数,得到子任务。当该测试样例要测试的参数是POST,并且该漏洞扫描任务指定要扫描POST时,则利用该测试样例替换待扫描网站的网址中的POST参数,得到子任务。当该测试样例要测试的参数是Cookie,并且该漏洞扫描任务指定要扫描Cookie时,则利用该测试样例替换待扫描网站的网址中的Cookie参数,得到子任务。当该测试样例要测试的参数是PATH,并且该漏洞扫描任务指定要扫描PATH时,则利用该测试样例替换待扫描网站的网址中的PATH参数,得到子任务。最后,为避免无限制地对一些恶意的待扫描网站的参数进行分解,得到过多的子任务而占有扫描任务处理系统的资源的情况,还需要判断该待扫描网站对应的子任务是否大于预设数量,若是则结束对该待扫描网站的网址进行分解,若否则继续循环遍历插件列表,继续对待扫描网站的网址进行分解。
在一个实施例中,获取对提取的漏洞扫描任务进行任务分解得到的子任务之后,上述方法还包括:将子任务依次存入第二消息队列中。
本实施例中,将生成的子任务存入第二消息队列中,以消息队列作为大量并发子任务的缓冲,可以避免子任务过多导致扫描任务处理系统崩溃,此外,分布式探测服务器即便出现单点故障,其它正常运行的分布式探测服务器还可以从该第二消息队列中获取到子任务,保证扫描任务处理系统的正常运行。
步骤210,响应于分布式探测服务器的任务请求,将子任务推送至分布式探测服务器,以使分布式探测服务器根据子任务向待扫描网站发送漏洞探测请求。
分布式探测服务器是分布式设置的,分布式探测服务器是直接与待扫描网站进行交互的服务器。分布式探测服务器可以向分布式调度服务器发送任务请求,分布式调度服务器响应于该任务请求,将子任务推送至分布式探测服务器,分布式探测服务器接收到子任务后,根据子任务生成漏洞探测请求,并将该漏洞探测请求发送至待扫描网站,例如将根据子任务生成的http请求发送至待扫描网站。待扫描网站响应于该漏洞探测请求,返回的响应内容可作为判断待扫描网站是否存在与该子任务所测试的漏洞的依据。
在一个实施例中,获取对提取的漏洞扫描任务进行任务分解得到的子任务之后,上述方法还包括:将子任务依次存入第二消息队列中;响应于分布式探测服务器的任务请求,将子任务推送至分布式探测服务器,包括:接收分布式探测服务器的任务请求;当查询到第二消息队列中存在子任务时,则响应于任务请求,将子任务推送至分布式探测服务器。
在本实施例中,分布式探测服务器在有足够资源的情况下主动地从分布式调度服务器获取子任务,而不是被动地接收分布式调度服务器分配的大量子任务,能够保证分布式探测服务器的有效运行。
如图6所示,为一个实施例中任务处理系统的架构示意图。参照图6,用户通过终端提交漏洞扫描任务至分布式调度服务器,分布式调度服务器中将接收的漏洞扫描任务依次存入第一消息队列中,通过轮询组件依次从第一消息队列中提取漏洞扫描任务后,推送至任务信道,再通过分布式分解节点从任务信道中取出漏洞扫描任务,并请求分布式分解服务器对其进行任务分解后,分布式分解节点接收分布式分解服务器返回的子任务,并存入第二消息队列中。分布式探测服务器从第二消息队列中请求子任务,根据子任务向待扫描网站发送漏洞探测请求。
在一个实施例中,上述方法还包括:通过分布式探测服务器接收待扫描网站响应于漏洞探测请求返回的响应结果;将响应结果与子任务对应的漏洞检测规则进行匹配,获得待扫描网站的漏洞检测结果。
由于网站的漏洞主要是指以各种语言开发的web程序代码中存在的安全漏洞,因此,在接收到待扫描网站返回的响应结果后,就可以将该响应结果与子任务所测试的漏洞存在时所期望返回的响应结果进行比较,若相同则说明该待扫描网站存在该子任务所测试的漏洞。
在一个实施例中,上述方法还包括:将漏洞扫描任务、对应的子任务及子任务的漏洞检测结果进行持久化存储,这样,即便该漏洞扫描任务或是子任务的处理过程中出现了单点故障,需要重启分布式调度服务器,也不会丢失该漏洞扫描任务,尤其在并发量很大的情况下,也不会导致大量的扫描任务丢失。
上述任务处理方法中,调度服务器是分布式的,可以按需扩容,分布式调度服务器接收待扫描网站对应的漏洞扫描任务之后,将漏洞扫描任务依次持久化存入第一消息队列中,然后再由各个分布式调度服务器从该第一消息队列中依次提取扫描任务,相比于传统方式中直接处理所有的扫描任务而言,不仅可以避免扫描任务过多导致系统崩溃,还可以从整体上把控当前处理的扫描任务的数量;此外,对待扫描网站发送探测请求的探测服务器也是分布式的,也可以按需扩容,分布式调度服务器获取到各分布式探测服务器的任务请求后,就将获取的各个子任务分别推送至不同的分布式探测服务器,分布式探测服务器就可以根据子任务向待扫描网站发送漏洞探测请求,这样,即便漏洞扫描任务的并发量很大时,也能实现快速、有序地处理每个漏洞扫描任务,提升扫描效率。
如图7所示,为一个实施例中任务处理方法的流程示意图。参照图7,上述方法还包括:
步骤702,接收待扫描网站对应的漏洞扫描任务。
步骤704,将漏洞扫描任务依次存入第一消息队列中。
步骤706,从第一消息队列中提取漏洞扫描任务。
步骤708,获取对提取的漏洞扫描任务进行任务分解得到的子任务。
步骤710,按照漏洞扫描任务对应的扫描速度产生待扫描网站的探测令牌。
其中,扫描速度用于实现分布式限速,分布式限速是指多个分布式探测服务器同时处理同一个待扫描网站的子任务,需要通过限速避免这多个分布式探测服务器向该待扫描网站同时发生访问请求导致该待扫描网站此时的访问并发量很高的情景。为避免该待扫描网站的访问并发量太大使网站无法正常运行,通过为分布式探测服务器分发探测令牌的方式来动态保证扫描速率及网站正常运行。分布式调度服务器按照漏洞扫描任务中指定的扫码速度产生探测令牌,因此探测令牌是动态产生的,探测服务器需要发送漏洞探测请求之前,需要先拿到该待扫描网站的探测令牌,这样就避免了待扫描网站的并发量过高导致其无法正常运行的情况。
其中,扫描速度可以是根据待扫描网站处理并发的能力来决定的,也可以是用户在提交漏洞扫描任务时所指定的,还可以是默认设置的。
在一个实施例中,上述方法还包括:从漏洞扫描任务的扫描配置信息中,获取待扫描网站的扫描速度;按照扫描速度产生待扫描网站的探测令牌。
如图8所示,为一个实施例中多个分布式探测服务器抢占探测令牌的示意图。参照图8,多个分布式探测服务器同时抢占为同一个待扫描网站产生的探测令牌,抢占到探测令牌才能向该待扫描网站发送漏洞探测请求,没有抢占到则不能向该待扫描网站发送漏洞探测请求。
在一个实施例中,分布式调度服务器还可以根据待扫描网站的并发处理能力来动态调整扫描速度,从而实现对于不同的待扫描网站实现个性化速度的扫描。例如,若待扫描网站是一个比较大型的网站,其可用性是非常高的,该网站处理并发的能力较好,那么扫描速度可以设置为一个较高的值,例如100,否则,将相应的扫描速度设置为一个较小的值,例如50。
步骤712,响应于分布式探测服务器的任务请求,将子任务推送至分布式探测服务器,以使分布式探测服务器在获取到探测令牌后根据子任务向待扫描网站发送漏洞探测请求。
在一个实施例中,上述方法还包括:接收分布式探测服务器的令牌请求;当查询到当前存在待扫描网站的探测令牌时,则响应于令牌请求,向分布式探测服务器返回待扫描网站的探测令牌,探测令牌用于控制分布式探测服务器在获取到探测令牌后向待扫描网站发送漏洞探测请求。
具体地,在分布式调度服务器将子任务推送至分布式探测服务器,分布式探测服务器在根据该子任务发送漏洞探测请求之前,还需要向分布式调度服务器请求该待扫描网站的探测令牌,由于探测令牌是按扫描速度产生的,例如扫描速度为50,则单位时间内只有50个探测令牌,单位时间内无论有多少个分布式探测服务器请求探测令牌,总共只能拿走50个令牌,通过此方式,在多个分布式探测服务器扫描待扫描网站时,能够确保该网站被扫描的速率是稳定在用户设置的扫描速度内的。
在一个实施例中,当查询到当前不存在待扫描网站的探测令牌时,则分布式探测服务器需要等待,直到分布式调度服务器产生了新的探测令牌并获取到该探测令牌后,才能向该待扫描网站发送漏洞探测请求。
如图9所示,为一个实施例中分发探测令牌的流程示意图。参照图9,分布式调度服务器按扫描速度产生探测令牌之后,判断令牌桶是否满,若是,则丢弃产生的探测令牌,若否,则将产生的探测令牌存入令牌桶中,当分布式调度服务器接收到分布式探测服务器针对待扫描网站的令牌请求时,判断当前令牌桶中是否还存在该待扫描网站的探测令牌,若是,则从令牌桶中取出后发放令牌,分布式探测服务器可以向待扫描网站发送漏洞探测请求,若否,则分布式探测服务器需要等待,暂时不能发送漏洞探测请求,直至获取到探测令牌时,才能向待扫描网站发送漏洞探测请求。
如图10所示,为一个实施例中任务处理方法的时序图。参照图10,通过应用程序接口提交漏洞扫描任务至分布式调度服务器,分布式调度服务器将获取的漏洞扫描任务存入第一消息队列中,从第一消息队列中取出漏洞扫描任务,发送分解请求至分解服务器,分解服务器响应分解请求,返回分解后的子任务至分布式调度服务器,分布式调度服务器将子任务存入第二消息队列,分布式探测服务器向分布式调度服务器发送任务请求,分布式调度服务器查看第二消息队列中是否存在子任务,若是则推送至分布式探测服务器,分布式探测服务器拿到子任务后,向分布式调度服务器请求该子任务对应的待扫描网站是否还有足够的探测令牌,若有,则根据子任务向待扫描网站发送漏洞探测请求,并根据待扫描网站的响应内容得到漏洞检测结果,将漏洞检测结果返回至分布式调度服务器。若没有探测令牌,则循环等待。
如图11所示,在一个具体的实施例中任务处理方法的流程示意图。参照图11,该方法包括以下步骤:
步骤1102,接收待扫描网站对应的漏洞扫描任务。
步骤1104,对漏洞扫描任务进行解析,获得待扫描网站的网址和扫描配置信息。
步骤1106,将待扫描网站的网址及扫描配置信息对应存入第一消息队列中。
步骤1108,确定当前正在处理的漏洞扫描任务的总数量。
步骤1110,当总数量小于预设的处理上限值时,则按预设的时间间隔,依次从第一消息队列中提取漏洞扫描任务。
步骤1112,当总数量大于或等于预设的处理上限值时,则暂停从第一消息队列中提取漏洞扫描任务。
步骤1114,将从第一消息队列中提取的漏洞扫描推送至任务信道。
步骤1116,从任务信道中获得漏洞扫描任务后,生成关于漏洞扫描任务的分解请求。
步骤1118,发送分解请求至分布式分解服务器。
步骤1120,接收分布式分解服务器响应于分解请求,对漏洞扫描任务进行任务分解后所返回的子任务。
步骤1122,将子任务依次存入第二消息队列中。
步骤1124,接收分布式探测服务器的任务请求。
步骤1126,当查询到第二消息队列中存在子任务时,则响应于任务请求,将子任务推送至分布式探测服务器。
步骤1128,从漏洞扫描任务的扫描配置信息中,获取待扫描网站的扫描速度。
步骤1130,按照扫描速度产生待扫描网站的探测令牌。
步骤1132,接收分布式探测服务器的令牌请求。
步骤1134,当查询到当前存在待扫描网站的探测令牌时,则响应于令牌请求,向分布式探测服务器返回待扫描网站的探测令牌。
步骤1136,通过分布式探测服务器在获取到探测令牌后向待扫描网站发送漏洞探测请求。
步骤1138,通过分布式探测服务器接收待扫描网站响应于漏洞探测请求返回的响应结果。
步骤1140,将响应结果与子任务对应的漏洞检测规则进行匹配,获得待扫描网站的漏洞检测结果。
上述任务处理方法中,调度服务器是分布式的,可以按需扩容,分布式调度服务器接收待扫描网站对应的漏洞扫描任务之后,将漏洞扫描任务依次持久化存入第一消息队列中,然后再由各个分布式调度服务器从该第一消息队列中依次提取扫描任务,相比于传统方式中直接处理所有的扫描任务而言,不仅可以避免扫描任务过多导致系统崩溃,还可以从整体上把控当前处理的扫描任务的数量;此外,对待扫描网站发送探测请求的探测服务器也是分布式的,也可以按需扩容,分布式调度服务器获取到各分布式探测服务器的任务请求后,就将获取的各个子任务分别推送至不同的分布式探测服务器,分布式探测服务器就可以根据子任务向所述待扫描网站发送漏洞探测请求,这样,即便漏洞扫描任务的并发量很大时,也能实现快速、有序地处理每个漏洞扫描任务,提升扫描效率。
应该理解的是,虽然图11的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图11中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种任务处理系统,如图1所示,任务处理系统包括分布式调度服务器和分布式探测服务器,其中:
分布式调度服务器用于接收待扫描网站对应的漏洞扫描任务,将漏洞扫描任务依次存入第一消息队列中,从第一消息队列中提取漏洞扫描任务,获取对提取的漏洞扫描任务进行任务分解得到的子任务;
分布式调度服务器还用于响应于分布式探测服务器的任务请求,将子任务推送至分布式探测服务器;
分布式探测服务器用于根据子任务向待扫描网站发送漏洞探测请求。
在一个实施例中,分布式调度服务器还用于对漏洞扫描任务进行解析,获得待扫描网站的网址和扫描配置信息;将待扫描网站的网址及扫描配置信息对应存入第一消息队列中
在一个实施例中,分布式调度服务器还用于确定当前正在处理的漏洞扫描任务的总数量;当总数量小于预设的处理上限值时,则按预设的时间间隔,依次从第一消息队列中提取漏洞扫描任务;当总数量大于或等于预设的处理上限值时,则暂停从第一消息队列中提取漏洞扫描任务。
在一个实施例中,任务处理系统还包括分解服务器,分布式调度服务器还用于将从第一消息队列中提取的漏洞扫描任务发送至分解服务器;分解服务器用于对漏洞扫描任务进行任务分解,并向分布式调度服务器返回任务分解得到的子任务;分布式调度服务器还用于接收分解服务器返回的子任务。
在一个实施例中,分解服务器为分布式分解服务器,分布式调度服务器还用于将从第一消息队列中提取的漏洞扫描推送至任务信道;从任务信道中获得漏洞扫描任务后,生成关于漏洞扫描任务的分解请求;发送分解请求至分布式分解服务器;接收分布式分解服务器响应于分解请求对漏洞扫描任务进行任务分解后所返回的子任务。
在一个实施例中,分解服务器还用于遍历插件列表,插件列表包括用于检测不同类型漏洞的插件;根据漏洞扫描任务的扫描配置信息,从插件列表中确定用于检测漏洞扫描任务的指定插件;遍历指定插件所对应的测试样例列表;根据漏洞扫描任务的扫描配置信息,从测试样例列表中确定用于检测漏洞扫描任务的指定测试样例;根据指定测试样例生成关于漏洞扫描任务的子任务
在一个实施例中,分布式调度服务器还用于将子任务依次存入第二消息队列中;接收分布式探测服务器的任务请求;当查询到第二消息队列中存在子任务时,则响应于任务请求,将子任务推送至分布式探测服务器。
在一个实施例中,分布式调度服务器还用于接收分布式探测服务器的令牌请求;当查询到当前存在待扫描网站的探测令牌时,则响应于令牌请求,向分布式探测服务器返回待扫描网站的探测令牌,探测令牌用于控制分布式探测服务器在获取到探测令牌后向待扫描网站发送漏洞探测请求。
在一个实施例中,分布式调度服务器还用于从漏洞扫描任务的扫描配置信息中,获取待扫描网站的扫描速度;按照扫描速度产生待扫描网站的探测令牌。
在一个实施例中,分布式探测服务器还用于待扫描网站响应于漏洞探测请求返回的响应结果;将响应结果与子任务对应的漏洞检测规则进行匹配,获得待扫描网站的漏洞检测结果。
上述任务处理系统中,调度服务器是分布式的,可以按需扩容,分布式调度服务器接收待扫描网站对应的漏洞扫描任务之后,将漏洞扫描任务依次持久化存入第一消息队列中,然后再由各个分布式调度服务器从该第一消息队列中依次提取扫描任务,相比于传统方式中直接处理所有的扫描任务而言,不仅可以避免扫描任务过多导致系统崩溃,还可以从整体上把控当前处理的扫描任务的数量;此外,对待扫描网站发送探测请求的探测服务器也是分布式的,也可以按需扩容,分布式调度服务器获取到各分布式探测服务器的任务请求后,就将获取的各个子任务分别推送至不同的分布式探测服务器,分布式探测服务器就可以根据子任务向待扫描网站发送漏洞探测请求,这样,即便漏洞扫描任务的并发量很大时,也能实现快速、有序地处理每个漏洞扫描任务,提升扫描效率。
在一个实施例中,如图12所示,提供了一种任务处理装置1200,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:接收模块1202、持久化模块1204、提取模块1206、获取模块1208和任务分发模块1210,其中:
接收模块1202,用于接收待扫描网站对应的漏洞扫描任务;
持久化模块1204,用于将漏洞扫描任务依次存入第一消息队列中;
提取模块1206,用于从第一消息队列中提取漏洞扫描任务;
获取模块1208,用于获取对提取的漏洞扫描任务进行任务分解得到的子任务;
任务分发模块1210,用于响应于分布式探测服务器的任务请求,将子任务推送至分布式探测服务器,以使分布式探测服务器根据子任务向待扫描网站发送漏洞探测请求。
在一个实施例中,持久化模块1204还用于对漏洞扫描任务进行解析,获得待扫描网站的网址和扫描配置信息;将待扫描网站的网址及扫描配置信息对应存入第一消息队列中。
在一个实施例中,提取模块1206还用于确定当前正在处理的漏洞扫描任务的总数量;当总数量小于预设的处理上限值时,则按预设的时间间隔,依次从第一消息队列中提取漏洞扫描任务;当总数量大于或等于预设的处理上限值时,则暂停从第一消息队列中提取漏洞扫描任务。
在一个实施例中,获取模块1208还用于将从第一消息队列中提取的漏洞扫描任务发送至分解服务器;接收分解服务器对漏洞扫描任务进行任务分解后返回的子任务。
在一个实施例中,分解服务器为分布式分解服务器,获取模块1208还用于将从第一消息队列中提取的漏洞扫描推送至任务信道;从任务信道中获得漏洞扫描任务后,生成关于漏洞扫描任务的分解请求;发送分解请求至分布式分解服务器;接收分布式分解服务器响应于分解请求,对漏洞扫描任务进行任务分解后所返回的子任务。
在一个实施例中,持久化模块1204还用于将子任务依次存入第二消息队列中,任务分发模块1210还用于接收分布式探测服务器的任务请求;当查询到第二消息队列中存在子任务时,则响应于任务请求,将子任务推送至分布式探测服务器。
在一个实施例中,上述装置还包括令牌请求模块,用于接收分布式探测服务器的令牌请求;当查询到当前存在待扫描网站的探测令牌时,则响应于令牌请求,向分布式探测服务器返回待扫描网站的探测令牌,探测令牌用于控制分布式探测服务器在获取到探测令牌后向待扫描网站发送漏洞探测请求。
在一个实施例中,上述装置还包括令牌生成模块,用于从漏洞扫描任务的扫描配置信息中,获取待扫描网站的扫描速度;按照扫描速度产生待扫描网站的探测令牌。
在一个实施例中,上述装置还包括检测结果获取模块,用于通过分布式探测服务器接收待扫描网站响应于漏洞探测请求返回的响应结果;将响应结果与子任务对应的漏洞检测规则进行匹配,获得待扫描网站的漏洞检测结果。
上述任务处理装置中,调度服务器是分布式的,可以按需扩容,分布式调度服务器接收待扫描网站对应的漏洞扫描任务之后,将漏洞扫描任务依次持久化存入第一消息队列中,然后再由各个分布式调度服务器从该第一消息队列中依次提取扫描任务,相比于传统方式中直接处理所有的扫描任务而言,不仅可以避免扫描任务过多导致系统崩溃,还可以从整体上把控当前处理的扫描任务的数量;此外,对待扫描网站发送探测请求的探测服务器也是分布式的,也可以按需扩容,分布式调度服务器获取到各分布式探测服务器的任务请求后,就将获取的各个子任务分别推送至不同的分布式探测服务器,分布式探测服务器就可以根据子任务向待扫描网站发送漏洞探测请求,这样,即便漏洞扫描任务的并发量很大时,也能实现快速、有序地处理每个漏洞扫描任务,提升扫描效率。
关于任务处理装置1200的具体限定可以参见上文中对于任务处理方法的限定,在此不再赘述。上述任务处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是分布式调度服务器,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务处理方法。
本领域技术人员可以理解,图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (15)
1.一种任务处理方法,由分布式调度服务器执行,所述方法包括:
接收待扫描网站对应的漏洞扫描任务;
将所述漏洞扫描任务依次存入第一消息队列中;
从所述第一消息队列中提取所述漏洞扫描任务;
获取对提取的所述漏洞扫描任务进行任务分解得到的子任务;
响应于分布式探测服务器的任务请求,将所述子任务推送至分布式探测服务器,以使所述分布式探测服务器根据所述子任务向所述待扫描网站发送漏洞探测请求。
2.根据权利要求1所述的方法,其特征在于,所述将所述漏洞扫描任务依次存入第一消息队列中,包括:
对所述漏洞扫描任务进行解析,获得待扫描网站的网址和扫描配置信息;
将所述待扫描网站的网址及所述扫描配置信息对应存入第一消息队列中。
3.根据权利要求1所述的方法,其特征在于,所述从所述第一消息队列中提取所述漏洞扫描任务,包括:
确定当前正在处理的漏洞扫描任务的总数量;
当所述总数量小于预设的处理上限值时,则
按预设的时间间隔,依次从所述第一消息队列中提取漏洞扫描任务;
当所述总数量大于或等于预设的处理上限值时,则
暂停从所述第一消息队列中提取所述漏洞扫描任务。
4.根据权利要求1所述的方法,其特征在于,所述获取对提取的所述漏洞扫描任务进行任务分解得到的子任务,包括:
将从所述第一消息队列中提取的漏洞扫描任务发送至分解服务器;
接收所述分解服务器对所述漏洞扫描任务进行任务分解后返回的子任务。
5.根据权利要求4所述的方法,其特征在于,所述分解服务器为分布式分解服务器,所述将从所述第一消息队列中提取的漏洞扫描任务发送至分解服务器,接收所述分解服务器对所述漏洞扫描任务进行任务分解后返回的子任务,包括:
将从所述第一消息队列中提取的漏洞扫描推送至任务信道;
从所述任务信道中获得所述漏洞扫描任务后,生成关于所述漏洞扫描任务的分解请求;
发送所述分解请求至所述分布式分解服务器;
接收所述分布式分解服务器响应于所述分解请求,对所述漏洞扫描任务进行任务分解后所返回的子任务。
6.根据权利要求4所述的方法,其特征在于,所述分解服务器对所述漏洞扫描任务进行任务分解的步骤包括:
遍历插件列表,所述插件列表包括用于检测不同类型漏洞的插件;
根据所述漏洞扫描任务的扫描配置信息,从所述插件列表中确定用于检测所述漏洞扫描任务的指定插件;
遍历所述指定插件所对应的测试样例列表;
根据所述漏洞扫描任务的扫描配置信息,从所述测试样例列表中确定用于检测所述漏洞扫描任务的指定测试样例;
根据所述指定测试样例生成关于所述漏洞扫描任务的子任务。
7.根据权利要求1所述的方法,其特征在于,所述获取对提取的所述漏洞扫描任务进行任务分解得到的子任务之后,上述方法还包括:
将所述子任务依次存入第二消息队列中;
所述响应于分布式探测服务器的任务请求,将所述子任务推送至分布式探测服务器,包括:
接收所述分布式探测服务器的任务请求;
当查询到所述第二消息队列中存在子任务时,则
响应于所述任务请求,将所述子任务推送至所述分布式探测服务器。
8.根据权利要求1所述的方法,其特征在于,上述方法还包括:
接收所述分布式探测服务器的令牌请求;
当查询到当前存在所述待扫描网站的探测令牌时,则
响应于所述令牌请求,向所述分布式探测服务器返回所述待扫描网站的探测令牌,所述探测令牌用于控制所述分布式探测服务器在获取到所述探测令牌后向所述待扫描网站发送漏洞探测请求。
9.根据权利要求1所述的方法,其特征在于,上述方法还包括:
从所述漏洞扫描任务的扫描配置信息中,获取所述待扫描网站的扫描速度;
按照所述扫描速度产生所述待扫描网站的探测令牌。
10.根据权利要求1至9任一项所述的方法,其特征在于,上述方法还包括:
通过所述分布式探测服务器接收所述待扫描网站响应于所述漏洞探测请求返回的响应结果;
将所述响应结果与所述子任务对应的漏洞检测规则进行匹配,获得所述待扫描网站的漏洞检测结果。
11.一种任务处理系统,包括分布式调度服务器和分布式探测服务器,其中:
所述分布式调度服务器用于接收待扫描网站对应的漏洞扫描任务,将所述漏洞扫描任务依次存入第一消息队列中,从所述第一消息队列中提取所述漏洞扫描任务,获取对提取的所述漏洞扫描任务进行任务分解得到的子任务;
所述分布式调度服务器还用于响应于所述分布式探测服务器的任务请求,将所述子任务推送至所述分布式探测服务器;
所述分布式探测服务器用于根据所述子任务向所述待扫描网站发送漏洞探测请求。
12.根据权利要求11所述的系统,其特征在于,所述任务处理系统还包括分解服务器,所述分布式调度服务器还用于将从所述第一消息队列中提取的漏洞扫描任务发送至所述分解服务器;
所述分解服务器用于对所述漏洞扫描任务进行任务分解,并向所述分布式调度服务器返回任务分解得到的子任务;
所述分布式调度服务器还用于接收所述分解服务器返回的子任务。
13.一种任务处理装置,所述装置包括:
接收模块,用于接收待扫描网站对应的漏洞扫描任务;
持久化模块,用于将所述漏洞扫描任务依次存入第一消息队列中;
提取模块,用于从所述第一消息队列中提取所述漏洞扫描任务;
获取模块,用于获取对提取的所述漏洞扫描任务进行任务分解得到的子任务;
任务分发模块,用于响应于分布式探测服务器的任务请求,将所述子任务推送至分布式探测服务器,以使所述分布式探测服务器根据所述子任务向所述待扫描网站发送漏洞探测请求。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至10中任一项所述的方法的步骤。
15.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011406878.7A CN114595457A (zh) | 2020-12-04 | 2020-12-04 | 任务处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011406878.7A CN114595457A (zh) | 2020-12-04 | 2020-12-04 | 任务处理方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114595457A true CN114595457A (zh) | 2022-06-07 |
Family
ID=81812731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011406878.7A Pending CN114595457A (zh) | 2020-12-04 | 2020-12-04 | 任务处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114595457A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225719A (zh) * | 2022-08-31 | 2022-10-21 | 中建电子商务有限责任公司 | 一种分布式定向网络数据采集解析方法 |
-
2020
- 2020-12-04 CN CN202011406878.7A patent/CN114595457A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115225719A (zh) * | 2022-08-31 | 2022-10-21 | 中建电子商务有限责任公司 | 一种分布式定向网络数据采集解析方法 |
CN115225719B (zh) * | 2022-08-31 | 2023-01-10 | 中建电子商务有限责任公司 | 一种分布式定向网络数据采集解析方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108256118B (zh) | 数据处理方法、装置、系统、计算设备以及存储介质 | |
US10108801B2 (en) | Web application vulnerability scanning | |
CN110888838B (zh) | 基于对象存储的请求处理方法、装置、设备及存储介质 | |
CN112261172B (zh) | 服务寻址访问方法、装置、系统、设备及介质 | |
US10592399B2 (en) | Testing web applications using clusters | |
US20180302430A1 (en) | SYSTEM AND METHOD FOR DETECTING CREATION OF MALICIOUS new USER ACCOUNTS BY AN ATTACKER | |
CN112087520B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
US10284561B2 (en) | Method and server for providing image captcha | |
RU2638001C1 (ru) | Система и способ выделения части резерва производительности антивирусного сервера для выполнения антивирусной проверки веб-страницы | |
JP2017016650A (ja) | コンピュータネットワーク上の資産を検出および識別するための方法およびシステム | |
CN113676563B (zh) | 内容分发网络服务的调度方法、装置、设备及存储介质 | |
CN111262839A (zh) | 一种漏洞扫描方法、管理设备、节点和存储介质 | |
US11140178B1 (en) | Methods and system for client side analysis of responses for server purposes | |
CN114465741B (zh) | 一种异常检测方法、装置、计算机设备及存储介质 | |
KR20190015327A (ko) | 서버가 공격받는 것을 막기 위한 방법 및 디바이스 | |
CN111327588A (zh) | 一种网络访问安全检测方法、系统、终端和可读存储介质 | |
CN114595457A (zh) | 任务处理方法、装置、计算机设备和存储介质 | |
CN111314326B (zh) | Http漏洞扫描主机的确认方法、装置、设备及介质 | |
CN110968400B (zh) | 应用程序的执行方法、装置、计算机设备和存储介质 | |
CN111741141A (zh) | 一种高效ip代理池的实现方法、系统及数据获取方法 | |
US10469558B2 (en) | Website server request rerouting | |
CN113709136B (zh) | 一种访问请求验证方法和装置 | |
CN109409090B (zh) | 网站后台检测方法、装置及服务器 | |
CN111291044A (zh) | 敏感数据识别方法、装置、电子设备及存储介质 | |
CN110839085A (zh) | 指令管理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40070394 Country of ref document: HK |