一种网络安全信息采集引擎和任务管理系统与方法与流程

文档序号:29869322发布日期:2022-04-30 17:28阅读:270来源:国知局
一种网络安全信息采集引擎和任务管理系统与方法与流程

1.本发明涉及一种网络安全信息采集引擎和任务管理系统与方法,属于网络安全、计算机软件领域。


背景技术:

2.网络安全信息采集与评估系统是一种可以执行资产探测、安全扫描、情报收集、网络防御等任务的软件系统。系统用户可以使用此系统新增具体的任务,新建任务时绑定对应的信息采集引擎程序,执行不同的任务,信息采集引擎可以接入互联网,根据用户提供的程序进行资产探测等。系统可以用于特殊任务分发、任务编排、调配、状态统计,对完成后的任务进行资产聚合、查询,也可以对任务进行生产可视化报告(安全评分,资产详情、风险和情报统计,漏洞分布统计,评估标准,修复建议)。
3.图1所示是当前网络安全信息采集与评估系统的信息采集引擎程序管理方式,包括:1.用户新增引擎程序,安装docker镜像,并在运行环境中启动docker实例;2.用户在系统新增引擎,绑定对应的docker实例,定义引擎参数,返回参数,入库;3.用户新增任务,任务绑定对应的引擎程序;4.执行任务,任务调用对应的引擎程序,就会有对应结构化数据返回存入mysql数据库中;5.用户基于引擎采集的数据,可以进行多个维度的聚合,比如引擎分类,任务id,或者采集指标值(比如子域名地址)进行聚合查询。
4.该引擎程序管理方式存在一定的问题:1.引擎程序安装升级比较麻烦,docker实例文件一个突破2gb的磁盘存储;2.引擎程序调试麻烦,不知道运行结果的错误,很难debug引擎程序的运行状态,运行速度;3.引擎执行为单机执行,不够健壮,docker实例挂掉后没有办法提供引擎程序;4.引擎程序采集的数据格式无法统一,数据维护难度大。


技术实现要素:

5.发明目的:为了解决上述至少一种引擎管理存在的问题,本发明目的在于提供一种网络安全信息采集引擎和任务管理系统与方法,能够便捷管理引擎程序、提高任务执行效率。
6.技术方案:为实现上述发明目的,本发明采用如下技术方案:一种网络安全信息采集引擎管理系统,包括引擎管理模块、spring-boot应用集群、aviator框架、数据库和redis集群;所述引擎管理模块,用于用户维护信息采集引擎程序及其信息;所述引擎程序用于接入互联网中指定的目标网站,采集目标网站的网络安全信息,基于aviator框架开发,一个引擎程序对应一个aviatorfunction;用户增加的引擎程序编译后保存在所述数据库中;引擎程序的信息包括引擎分类、引擎名称、引擎脚本和引擎参数;所述spring-boot应用集群,作为网络信息采集引擎的运行环境,一个spring-boot进程内包括一个或多个aviatorfunction实例;所述redis集群,用于spring-boot进程间的消息订阅与发布,在一个spring-boot
进程收到保存引擎程序的消息后,通知应用集群中的所有spring-boot进程对新增的编译后的aviatorfunction实现类加载和初始化;若spring-boot进程重启,会读取数据库中的引擎程序编译后的结构化数据,对表达式执行引擎实例aviatorevaluatorinstance进行初始化,完成初始化后会对每个aviatorevaluatorinstance实例的aviatorfunction进行初始化,一个aviatorevaluatorinstance实例对应一个引擎分类。
7.作为优选,所述引擎管理模块,还提供引擎程序在线调试接口,根据输入的引擎程序名称获取到其对应的aviatorevaluatorinstance实例,通过调用aviatorevaluatorinstance实例的execute方法,在线对引擎程序进行调试,获取程序执行成功或失败的结果。
8.作为优选,所述引擎程序均基于约定提供对采集数据的处理,将采集到的数据保存到elasticsearch集群中。
9.作为优选,所述引擎程序输出程序执行时间、程序执行成功或失败结果、指派的任务信息、程序的执行进度和程序执行次数。
10.作为优选,所述引擎分类包括资产探测引擎、安全扫描引擎、情报收集引擎中的一种或多种;一个引擎分类包括一个或多个引擎程序。
11.作为优选,所述引擎参数包括目标的ip地址、域名信息、公司名称中的一种或多种。
12.一种网络安全信息采集任务管理系统,包括所述的网络安全信息采集引擎管理系统中的各部件,以及任务管理模块和任务数据分析模块;所述任务管理模块,用于用户新增网络安全信息采集任务并关联一个或多个引擎程序,以及配置关联的引擎程序所需要的执行入参参数;以及用于调度网络安全信息采集任务;spring-boot应用集群,在用户调用执行任务时,利用负载均衡将任务分配集群中的一个spring-boot进程中执行,spring-boot进程对java线程池队列提交执行aviatorfunction调用的任务,任务进行异步处理;所述任务数据分析模块,用于对引擎程序的执行过程进行监控,以及对采集的数据进行查询分析。
13.作为优选,所述任务管理模块中,能够配置任务优先级、任务开始和结束时间,根据配置的任务调度信息自动进行调度,或者由用户手动调度任务。
14.作为优选,任务数据分析模块能够按照任务维度或引擎程序维度进行监控或采集数据查询分析。
15.基于所述的网络安全信息采集任务管理系统实现的一种网络安全信息采集任务管理方法,包括如下步骤:用户通过引擎管理模块新增引擎程序及其信息,引擎管理模块将引擎程序及其信息保存到数据库,同时利用spring-boot进程间的redis消息订阅与发布机制将引擎程序对应aviatorfunction实例加载并初始化到应用集群所有的spring-boot进程中;重复新增的aviatorfunction根据函数名替换掉旧的aviatorfunction实例;用户通过任务管理模块新增网络安全信息采集任务,任务管理模块提供数据库中保存的引擎程序供用户选择,接收用户所选择的一个或多个引擎程序以及所配置的引擎程
序所需要的执行入参参数,将相关任务及其关联引擎程序的信息保存到数据库中;任务管理模块自动或接收用户指令调度任务,spring-boot应用集群在任务管理模块调度任务时,利用负载均衡将任务分配到集群中的一个spring-boot进程中执行,spring-boot进程对java线程池队列提交执行aviatorfunction调用的任务,任务进行异步处理;用户通过任务数据分析模块对引擎程序的执行过程进行监控,以及对采集的数据进行查询分析。
16.有益效果:与现有技术相比,本发明具体如下优点:1、本发明中信息采集引擎运行环境采用spring-boot应用集群,引擎采用分布式管理,可以实现引擎程序的高可用性。2、本发明在spring-boot集群应用层面使用aviator 框架,采用java开发引擎程序,可以热更新引擎程序,发布引擎效率高,服务器不需要重启。3、本发明还可提供在线调试的功能,输入引擎执行参数能够得到程序执行成功或失败的结果,发布前可对引擎程序进行正确性验证,进一步提高了发布效率。4、本发明采用统一的框架开发引擎程序,数据采集返回格式可以统一,数据源可以集中管理。5、本发明中spring-boot进程可以使用java线程池执行不同的任务,能够高并发执行任务,提高任务执行效率。6、基于本发明的引擎管理架构,可以规范引擎程序,提供执行时间、速度、成功/失败结果等指标监控数据。
附图说明
17.图1为现有系统引擎管理架构示意图。
18.图2为本发明实施例的信息采集引擎管理架构示意图。
19.图3为本发明实施例中引擎程序在集群中同步流程示意图。
具体实施方式
20.下面结合附图和具体实施例对本发明的技术方案做进一步说明。
21.如图2所示,本发明实施例公开的一种网络安全信息采集引擎管理系统,主要包括引擎管理模块、spring-boot应用集群、aviator框架、mysql数据库和redis集群。引擎管理模块主要用于用户维护引擎程序及其分类、名称、脚本和参数等信息,引擎程序用于接入互联网中指定的目标网站,采集目标网站的网络安全信息,引擎程序是基于aviator框架开发的,一个引擎程序对应一个aviatorfunction;mysql数据库中保存着用户增加的引擎程序编译后的结构化数据和配置的相关信息。spring-boot应用集群,作为信息采集引擎的运行环境,一个spring-boot进程内包括一个或多个aviatorfunction实例。redis集群,用于spring-boot进程间的消息订阅与发布,在一个spring-boot进程收到保存引擎程序的消息后,通知应用集群中的所有spring-boot进程对新增的编译后的aviatorfunction实现类加载和初始化。
22.本发明实施例中,信息采集引擎运行环境采用spring-boot应用集群,集群管理使用spring cloud euraka组件作为注册中心,这种部署方式是分布式的。本发明在spring-boot应用层面引用aviator框架,使用了aviator 表达式引擎技术, aviator框架可以为不同的引擎分类构建多个aviatorevaluatorinstance实例,aviator提供aviatorfunction接口约束。用户新增的引擎程序为java程序,实现了aviatorfunction接口,通过java程序自
己编译成java字节码,保存到mysql,运行环境起来后可加载到spring-boot应用集群的实例进程里面。若spring-boot进程重启,会读取数据库中的引擎程序编译后的结构化数据,对表达式执行引擎实例aviatorevaluatorinstance进行初始化,完成初始化后会对每个aviatorevaluatorinstance的aviatorfunction进行初始化。
23.引擎分类,如资产探测引擎、安全扫描引擎、情报收集引擎等,指示引擎的职责,一个引擎分类可包含多个引擎程序。
24.引擎管理模块还提供引擎程序在线调试接口,根据输入的引擎程序名称获取到其对应的aviatorevaluatorinstance实例,通过调用aviatorevaluatorinstance实例的execute方法,在线对引擎程序进行调试,获取程序执行成功或失败的结果。在线调试接口可以封装成restfulhttp接口,提供给系统前端调用。
25.在上述网络安全信息采集引擎管理系统的基础上,本发明实施例公开的一种网络安全信息采集任务管理系统,还包括任务管理模块和任务数据分析模块。任务管理模块主要用于用户新增网络安全信息采集任务并关联一个或多个引擎程序,以及配置关联的引擎程序所需要的执行入参参数;以及用于调度网络安全信息采集任务。spring-boot应用集群,在用户调用执行任务时,利用负载均衡将任务分配集群中的一个spring-boot进程中执行,spring-boot进程对java线程池队列提交执行aviatorfunction调用的任务,任务进行异步处理。任务数据分析模块主要用于对引擎程序的执行过程进行监控,以及对采集的数据进行查询分析。
26.下面基于本发明实施例提供的网络安全信息采集任务管理系统,详细说明本发明网络安全信息采集引擎和任务的创建和实施过程。
27.1、用户可以基于系统管理端,自己开发引擎程序,程序使用java,引擎程序可以本地调试编写完,直接新增到引擎管理模块。引擎管理模块也可以嵌入在线编辑和编译工具。每个引擎程序实际上是aviatorfunction实例,一个引擎分类可以维护在一个aviatorevaluatorinstance实例里面,一个spring-boot进程里面可以有多个aviatorevaluatorinstance实例,这个数量取决于多少个引擎分类。新增引擎中文名称、入参名称、入参类型、返回类型可以直接维护在引擎脚本(引擎源代码)内,也可以在页面配置。aviatorfunction的程序可以依赖webmagic、gecco、webcollector等爬虫框架完成引擎程序的编写。
28.2、编辑完成的引擎程序在客户端完成保存,引擎程序编译后的结构化数据会通过spring-boot进程(由集群负载均衡选择一个进程)保存到mysql,同时也会使用redis pub/sub(订阅/发布)特性(利用spring-data-redis库实现)向没有加载引擎程序的spring-boot进程集群进行消息发送,每个spring-boot进程收到消息后,对新增编译后的aviatorfunction实现类加载跟进行初始化。重复新增aviatorfunction可以根据函数名替换掉aviatorfunction的实例,redis pub/sub实现消息通知的特性如图3所示。
29.用户可以通过在线调试接口,输入引擎程序名称和入参,系统会按照程序名称从mysql数据库查询引擎分类,引擎分类关联的aviatorevaluatorinstance实在springboot进程的内存,根据函数名可以查函数分类,进而获取到aviatorevaluatorinstance实例,利用aviatorevaluatorinstanceexecute 的方法调用引擎程序,获得引擎程序的执行结果。例如,对于一个获取子域名的引擎程序subdomainrecords,输入subdomainrecords('ip1')
或subdomainrecords('ip1', 'ip2', 'ip3'),利用aviator表达式解析技术可以自动解析字符串表达式,解析函数调用参数得到ip: ip1或者iplist: [ip1, ip2, ip3],程序执行后可返回子域名列表信息/或者返回程序执行错误。通过在线调试可以在发布前对引擎程序进行进一步正确性验证。
[0030]
3、用户新增网络安全信息采集任务的时候,会新增关联一个或者多个引擎程序,同时会新增引擎程序所需要的执行入参参数。所关联的引擎程序数据源来自于mysql数据库保存的引擎分类、引擎名称、引擎脚本、引擎参数等,新增任务的时候可以下拉框模糊搜索选择引擎分类、引擎名称,这样就会带出对应的引擎参数,会使用到的引擎参数有域名地址、ip地址、网站所属公司名称等。配置任务的信息有任务编号、用户编号、任务目标、任务目标类型、任务优先级、任务开始结束时间、任务状态等等。可根据配置的任务调度信息自动进行调度,也可由用户手动调度任务。
[0031]
4、在调用执行任务的时候,利用spring cloud euraka的负载均衡技术,将任务分配集群中的某个spring-boot进程中执行,spring-boot进程使用java线程池技术,对线程池队列提交执行aviatorfunction 调用的任务,任务进行异步处理。通过在引擎程序中进行埋点,可以获取程序执行时间,引擎程序根据约定输出执行成功或失败结果、指派的任务信息、程序的执行进度和程序执行次数等指标信息。
[0032]
5、在任务数据分析模块,可以监控引擎程序调用的时间,监控引擎程序调用成功还是失败,通过指标监控,用户可以按照任务的维度,或者程序的维度进行聚合查询返回指标监控,如引擎程序执行时间、执行成功失败分析、任务执行的数据完整度、引擎程序执行次数统计等等。
[0033]
引擎程序aviatorfunction在aviator框架下开发,表达式传参方式符合aviator框架的约定,对采集返回的数据可以统一处理,进行数据清洗,根据任务id,引擎分类名称,引擎分类id保存对应的采集数据到elasticsearch集群中去。这样方便用户通过各种维度对任务采集的数据进行聚合查询。
[0034]
当引擎程序所在spring-boot进程重启后,程序会读取mysql中的引擎程序结构化数据,对表达式执行引擎实例aviatorevaluatorinstance进行初始化,完成初始化后也会对每个aviatorevaluatorinstance的aviatorfunction进行初始化,执行相关任务调用对应的引擎程序。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1