一种基于自学习路径选择的端口扫描方法和系统与流程

文档序号:18598478发布日期:2019-09-03 22:21阅读:177来源:国知局
一种基于自学习路径选择的端口扫描方法和系统与流程

本发明涉及计算机网络技术,特别是涉及到一种基于自学习路径选择的端口扫描方法和系统。



背景技术:

随着信息技术日益深入到生产经营的方方面面,对许多大型企业和组织来说,其it基础设施往往会遍布全国乃至全球的不同地理位置,这些it基础设施通过网络互连,服务于企业的运营,也关系着企业的信息安全甚至正常运转。为降低服务器软件因安全防护不足而被入侵和拖库的风险,需要定期轮询扫描所有内、公网ip(互联网协议,internetprotocol)地址的端口信息。为了同时满足各地区、各运营商ip扫描和提升入侵止损的效率,通常需要将扫描源服务器分散到不同的城市,并使用不同的运营商公网ip地址。这样,如何在有限的扫描源服务器与缩短一轮扫描的时间之间达成最高效的资源配置是本领域亟待解决的问题。

一般来说,企业内部的配置管理数据库(cmdb,configurationmanagementdatabase)系统提供的服务器信息通常会包括上架城市、上架机房、服务器内网ip、服务器公网ip等内容。这样,可以通过统计数据库中各城市、各运营商ip数量的汇总信息,加上扫描源机器的单机压测处理性能即可推导得出在各城市需要分布部署多少台扫描资源。扫描资源完成上线部署后,扫描源服务器将轮询抽取数据库中该城市地区所有目的服务器ip端口进行扫描,目的ip端口被扫描一轮后将在数据库中打上标签,剩余当前这一轮未被扫描到的目的服务器ip将等待被扫描源轮询抽取,这样,企业所有ip整体一轮扫描时间将取决于各城市所有目的ip扫描时间加权和的最大值。

然而随着业务全球化的发展和企业内网、公网ip的不断扩充,若采用上述现有技术方案,扫描源服务器分布势必将要更加分散,由于各城市地区ip服务器数量不同而带来的扫描源负载不均的情况会日益突出,同时扫描服务器运营成本也将逐渐上升。



技术实现要素:

本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。提供使扫描源服务器的分散部署得到最优化配置的基于自学习的端口扫描方法和系统,实现扫描源和待扫描主机的最优匹配,提高扫描效率,保证整体入侵发现和止损效率。

为了达到上述目的,根据本发明第一方面的实施例提出了一种基于自学习路径选择的端口扫描方法,包括:获取所有扫描源的地理位置;从所有扫描源中选择n个不同的扫描源对所有待扫描主机进行第一扫描,获取每一个待扫描主机与所述n个扫描源之间的n个消息往返延时时间,其中n为大于等于3的自然数;

对于每个待扫描主机,根据n个扫描源的地理位置和n个往返延时时间计算所述待扫描主机的地理位置;将每个待扫描主机的地理位置与所有扫描源的地理位置进行匹配,选择距离待扫描主机最近的扫描源作为所述待扫描主机对应的匹配扫描源,从而得到所有待扫描主机和所有匹配扫描源之间的映射关系;以及对每个待扫描主机,用匹配扫描源对所述待扫描主机的端口进行第二扫描。

在一些实施例中,所述第一扫描包括根据internet控制报文协议进行测试。

在一些实施例中,根据n个扫描源的地理位置和n个往返延时时间计算所述待扫描主机的地理位置包括:根据待扫描主机到每个扫描源的消息往返延时时间和当前网络的单位距离延时时长计算所述待扫描主机到每个扫描源的距离;以及根据所述待扫描主机到n个扫描源的距离和n个扫描源的地理位置,用三角定位方法计算所述待扫描主机的地理位置。

在一些实施例中,将待扫描主机的地理位置与所有扫描源的地理位置进行匹配,选择距离待扫描主机最近的扫描源作为所述待扫描主机对应的匹配扫描源包括:将所有待扫描主机的地理位置和所有扫描源的地理位置应用geohash算法转换为相应的geohash字符串;以及将每个待扫描主机的geohash字符串和所有扫描源的geohash字符串进行比对,以满足geohash字符串最长前缀匹配的扫描源作为待扫描主机对应的匹配扫描源。

在一些实施例中,所述用匹配扫描源对所述待扫描主机的端口进行第二扫描包括:用匹配扫描源对待扫描主机的所有端口进行遍历扫描。

在一些实施例中,在对每个待扫描主机,用匹配扫描源对所述待扫描主机的端口进行第二扫描之后,还包括:统计匹配扫描源对每个待扫描主机的端口进行第二扫描的总耗时,记为该扫描源对该待扫描主机的扫描时长;对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据统计分析的结果确定扫描时间异常的待扫描主机作为异常主机;以及为所述异常主机重新选择匹配扫描源。

在一些实施例中,对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据统计分析的结果确定扫描时间异常的待扫描主机作为异常主机包括:计算扫描源与其所扫描的所有待扫描主机之间的扫描时长的均值μ和方差σ,并将所有对应扫描时长大于μ+3σ的待扫描主机作为异常主机。

在一些实施例中,对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据所述统计分析的结果确定扫描时间异常的待扫描主机作为异常主机包括:将所有对应扫描时长大于预定义阈值的待扫描主机作为异常主机。

在一些实施例中,对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据所述统计分析的结果确定扫描时间异常的待扫描主机作为异常主机包括:使用异常点检测算法对所有扫描时长进行异常点检测,将检测到的异常点的扫描时长对应的待扫描主机作为异常主机。

在一些实施例中,所述异常点检测算法包括:基于偏差检测的聚类算法、基于单变量统计的四分位数间距概率分布算法,以及基于密度分布的局部异常因子算法中的至少一种。

根据本发明第二方面的实施例提供了一种基于自学习路径选择的端口扫描系统,其包括:多个扫描源,用于对待扫描主机进行扫描;以及端口扫描控制装置,所述端口扫描控制装置包括:第一扫描模块,用于从所有扫描源中随机选择n个扫描源,控制所述n个扫描源对待扫描主机进行第一扫描,并获取每一个待扫描主机与所述n个扫描源之间的n个消息往返延时时间,其中n为大于等于3的自然数;第一计算模块,用于对每个待扫描主机,根据n个扫描源的地理位置和n个往返延时时间计算所述待扫描主机的地理位置;扫描源匹配模块,用于将每个待扫描主机的地理位置与所有扫描源的地理位置进行匹配,选择距离待扫描主机最近的扫描源作为所述待扫描主机对应的匹配扫描源,从而得到所有待扫描主机和匹配扫描源之间的映射关系;第二扫描模块,用于控制匹配扫描源对待扫描主机的端口进行第二扫描;以及数据存储模块,用于存储所有扫描源的ip信息、地理位置信息;每对扫描源-待扫描主机之间的消息往返延时时间;所有待扫描主机的ip信息、地理位置信息;所有待扫描主机和匹配扫描源之间的映射关系;以及匹配扫描源对待扫描主机的端口的第二扫描的扫描时长。

在一些实施例中,所述第一扫描包括根据internet控制报文协议进行测试。

在一些实施例中,所述第一计算模块根据n个扫描源的地理位置和n个往返延时时间计算所述待扫描主机的地理位置包括:根据待扫描主机到每个扫描源的消息往返延时时间和当前网络的单位距离延时时长计算所述待扫描主机到每个扫描源的距离;以及根据所述待扫描主机到n个扫描源的距离和n个扫描源的地理位置,用三角定位方法计算所述待扫描主机的地理位置。

在一些实施例中,所述扫描源匹配模块将待扫描主机的地理位置与所有扫描源的地理位置进行匹配,选择距离待扫描主机最近的扫描源作为所述待扫描主机对应的匹配扫描源包括:将所有待扫描主机的地理位置和所有扫描源的地理位置应用geohash算法转换为相应的geohash字符串;以及将每个待扫描主机的geohash字符串和所有扫描源的geohash字符串进行比对,以满足geohash字符串最长前缀匹配的扫描源作为待扫描主机对应的匹配扫描源。

在一些实施例中,所述数据存储模块包括:第一数据库,所述第一数据库为关系数据库,用于存储所有扫描源的ip信息、地理位置信息;所有待扫描主机的ip信息、地理位置信息;所有端口和匹配扫描源之间的映射关系表;以及匹配扫描源对待扫描主机的端口的第二扫描的扫描时长;第二数据库,所述第二数据库为redis数据库,用于存储所有扫描源地理位置信息对应的geohash字符串和所有待扫描主机的地理位置信息对应的geohash字符串。

在一些实施例中,所述第二扫描模块控制匹配扫描源对所述待扫描主机的端口进行第二扫描包括:控制匹配扫描源对待扫描主机的所有端口进行遍历扫描。

在一些实施例中,所述端口扫描控制装置还包括用户接口模块,用于提供扫描源与待扫描主机的相关数据输入和扫描源与待扫描主机的选择操作,以及显示端口扫描结果。

在一些实施例中,所述端口扫描控制装置还包括离线分析模块,用于对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据统计分析的结果确定扫描时长异常的待扫描主机作为异常主机,并为所述异常主机重新选择匹配扫描源。

在一些实施例中,所述离线分析模块对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据统计分析的结果确定扫描时间异常的待扫描主机作为异常主机包括:计算扫描源与其所扫描的所有待扫描主机之间的扫描时长的均值μ和方差σ,并将所有对应扫描时间大于μ+3σ的待扫描主机作为异常主机。

在一些实施例中,对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据所述统计分析的结果确定扫描时间异常的待扫描主机作为异常主机包括:将所有对应扫描时间大于预定义阈值的待扫描主机作为异常主机。

在一些实施例中,对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据所述统计分析的结果确定扫描时间异常的待扫描主机作为异常主机包括:使用异常点检测算法对所有扫描时长进行异常点检测,将异常点扫描时长对应的待扫描主机作为异常主机。

在一些实施例中,所述异常点检测算法包括:基于偏差检测的聚类算法、基于单变量统计的四分位数间距概率分布算法,以及基于密度分布的局部异常因子算法中的至少一种。

根据本发明第三方面的实施例提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现,实现如本发明第一方面所述基于自学习路径选择的端口扫描方法。

根据本发明第四方面的实施例提供了一种计算设备,该计算设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述计算机程序时,实现本发明第一方面所述的基于自学习路径选择的端口扫描方法。

根据本发明第五方面的实施例提供了一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,实现本发明第一方面所述的基于自学习路径选择的端口扫描方法。

使用本发明的基于自学习路径选择的端口扫描方法和系统,可以通过对待扫描主机的自动定位,实现基于待扫描主机和扫描源的实际地理位置的自学习扫描路径选择,为每个待扫描主机匹配理论上通信时间最短的扫描源,从而实现单目的ip待扫描主机扫描时间最短,进而达到整体一轮扫描时间最优的效果。并且,通过进一步的离线分析异常的扫描匹配,可以修正局部的误匹配,得到全局最优的扫描策略。这些技术面上的优点表现在应用层面,一方面可以充分利用各城市地区现有扫描资源的接入负载,以整体扫描完成时间为统一衡量尺度,避免出现部分城市负载不均的情况;另一方面,以整体扫描完成时间为目标,可根据企业业务在全球的发展态势来判断各城市接入容量和扩容需求管理,从而合理有效地控制扫描服务的运营成本支出。

根据本发明第三到五方面的非临时性计算机可读存储介质,计算设备和计算机程序产品具有与根据本发明第一和第二方面的基于自学习路径选择的端口扫描方法和系统类似的效果,在此不再赘述。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1是根据本发明一个实施例的基于自学习路径选择的端口扫描方法的流程示意图;

图2是根据本发明另一个实施例的根据本发明实施例的基于自学习路径选择的端口扫描方法的流程示意图;

图3是根据本发明一个实施例的基于自学习路径选择的端口扫描系统的工作环境示意图;

图4是根据本发明一个实施例的基于自学习路径选择的端口扫描控制装置的结构框图;

图5是根据本发明另一个实施例的基于自学习路径选择的端口扫描控制装置的结构框图;

图6是根据本发明又一个实施例的基于自学习路径选择的端口扫描系统的用户接口显示示意图;

图7是根据本发明实施例的计算设备的结构示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

本发明的核心思想之一在于不强依赖于cmdb系统中目的服务器已划分所在城市的已知条件,打破扫描源服务器按照行政区划划分扫描ip范围的思维定式,将所有待扫描目的ip放入公共池,通过扫描源icmp(internetcontrolmessageprotocol,互联网控制报文协议)测试得到公共池中所有ip的大致定位信息,然后选择就近匹配接入理论地域通信时间最短的扫描源,以实现单目的ip扫描时间最短,从而逐步达到整体一轮扫描时间最优的效果。

要说明的是,在本公开中,为表述方便,将每一个待扫描的ip地址对应的计算资源集合命名为“待扫描主机”。本领域技术人员应理解,所述“待扫描主机”并不限于单一的一台物理计算设备,而是可以包括一个或一个以上的物理计算设备,以及分布在不同物理计算设备上的局部计算资源的集合等多种形式。特别是在云计算的背景下,随着虚拟机和容器的应用,基于云计算平台提供的数据服务的ip地址对应的计算资源的物理和逻辑形式可能具有非常复杂的组合结构。在本公开中,只要是对于外部访问来说,通过同一ip地址进行访问的计算资源,均包含在该ip地址对应的“待扫描主机”的范围之内。

事实上,发明人注意到,通过同一ip地址进行访问的计算资源在地理分布上的日益复杂,也是导致现有技术中的按照行政区划,固定分配扫描源的扫描方式效率低下的主要原因之一。而本发明中通过扫描源icmp测试得到公共池中所有ip的大致定位信息是一个耗时较短消耗资源很少的过程,可以随着时间推移而在每次或每隔一段时间的全局扫描之间运行一次定位过程,从而动态跟踪ip地址对应的“等效地理位置”的变化,达到根据ip对应的“等效地理位置”自学习选路的目的。所谓“等效地理位置”是指ip地址对应的待扫描主机在被扫描源扫描时,通过扫描过程参数来确定的地理位置。在本公开中,有时也简称为待扫描主机的位置。

下面结合附图对本发明的具体实施例进行详细说明。图1是根据本发明一个实施例的基于自学习路径选择的端口扫描方法的流程示意图。本实施例的端口扫描方法包括步骤s100到s500。

在步骤s100,获取所有扫描源的地理位置。通常,作为扫描源的服务器的ip和地理位置会存储在企业的cmdb系统之中,可以从中进行读取。

其中,“所有”是相对的概念,对于不同的应用场景,“所有”会对应不同的范围。例如,对于默认的全局扫描场景,“所有”可包括全部可用的扫描源。而对于局部扫描的应用场景,可以由用户或系统指定的扫描源集合对指定的待扫描主机集合进行扫描,此时“所有扫描源”则对应全部指定的扫描源集合中的扫描源。

在步骤s200,从所有扫描源中选择n个不同的扫描源对所有待扫描主机进行第一扫描,获取每一个待扫描主机与所述n个扫描源之间的n个消息往返延时时间。本步骤的目的是通过第一扫描来对待扫描主机的地理位置进行定位,按照三角定位原理,至少需要3个独立的扫描源才能实现准确定位,因此,本步骤的n取大于等于3的自然数。通常来说,使用3个扫描源进行第一扫描是较合适的。

就第一扫描而言,其目的是确定待扫描主机的状态以及用于测定待扫描主机与扫描源的距离。在一些实施例中,可以将对各个待扫描主机进行icmp测试作为第一扫描。由于icmp协议是一种面向无连接的协议,待扫描主机与所述扫描源之间的消息往返延时时间,可近似视为从扫描源传递到待扫描主机,再从扫描主机返回到所述扫描源的一次往返传递的时间。

在步骤s300,对于每个待扫描主机,根据n个扫描源的地理位置和n个往返延时时间计算所述待扫描主机的地理位置。

对于每个待扫描主机而言,可根据待扫描主机到每个扫描源的消息往返延时时间和当前网络的单位距离延时时长计算所述待扫描主机到每个扫描源的距离。

例如,当以icmp测试作为第一扫描时,设某待扫描主机的消息往返延时时间为r1,当前网络的每百公里rtt(往返延时)为t0,例如当前技术条件下,每百公里的rtt大约在1ms左右。则待扫描主机到扫描源之间的距离可由下式估算:

s1=(r1/2)*(100/t0),单位:公里。

当n取3时,根据3个扫描源的位置,利用三角定位法即可求出所述待扫描主机的位置。例如,以每个扫描源为圆心,以扫描源到待扫描主机的距离为半径做圆,则理想情况下3个圆的交点即为述待扫描主机的位置。由于实际的网络状态往往不是理想状况,三个圆的公共部分可能会是一个区域,或者没有公共部分,对于这些情况,相关技术(例如无线通信和地理信息系统领域)的三角定位方法有很多成熟的技术手段,例如取公共区域的几何中心,本领域技术人员可以加以利用,在此不再赘述。

当扫描源的个数n大于3时,可以从中选择3个作为三角定位之用,将其余的扫描源用于出现问题时的补充定位或位置校准,以提供更精确地定位。

在步骤s400,将每个待扫描主机的地理位置与所有扫描源的地理位置进行匹配,选择距离待扫描主机最近的扫描源作为所述待扫描主机对应的匹配扫描源,从而得到所有待扫描主机和所有匹配扫描源之间的映射关系。

在一些实施例中,待扫描主机的地理位置与所有扫描源的地理位置可以用经纬度来表示。这也便于直接利用gps定位获取的地理位置信息。可以采用直接的几何方法实现根据经纬度来计算两点之间的距离,再进行比较来得到匹配扫描源。也可以使用一些更具效率的高效算法来实现。例如,geohash算法或者googles2算法。前者实现更简单,在空间曲线填充方面由于是基于z曲线,存在拐点;后者稍有复杂,但是在空间曲线填充方面由于是基于希尔伯特曲线,因此具有比geohash算法更好的理论效果。实际应用中,可根据计算资源和精度需求来选择相应的算法。就本发明的应用目的而言,因为对于距离比较的误差有较高的容许度,googles2算法的优势并不明显。

下面以采用geohash算法为例进行说明,采用googles2算法的实施例与此类似,本领域技术人员可根据本公开的内容自行推得。对于根据经纬度信息来确定待扫描主机和各个扫描源之间的距离远近关系,可以基于geohash算法来实现。geohash算法是地理信息技术领域中一种相对成熟的算法,其具体细节不再赘述,例如可以参见维基百科的介绍,https://en.wikipedia.org/wiki/geohash。其核心思想是,利用z曲线进行空间填充编码,将二维或者多维空间里的所有点都转换成一维曲线,在数学上成为分形维。并且z曲线还具有局部保序性。具体而言,将地理位置的经纬度信息转化为geohash字符串之后,字符串的越高位代表越高的距离权重,两个geohash字符串的越高位出现不同,意味着两点之间的距离越远。即一般来说,距离越近的两点其geohash字符串具有更高的前缀相似度——即从前往后数相同的位数越多。可以根据geohash字符串前几位对坐标点进行分块。

在本发明的一些实施例中,可将所有待扫描主机的地理位置和所有扫描源的地理位置应用geohash算法转换为相应的geohash字符串;将每个待扫描主机的geohash字符串和所有扫描源的geohash字符串进行比对,以满足geohash字符串最长前缀匹配的扫描源作为待扫描主机对应的匹配扫描源。

就待扫描主机的定位而言,精确到米数量级左右即完全足够,而这可以用8-10位的geohash字符串即可实现。相对于基于几何关系的计算,更为简单方便,而且geohash字符串的比较无论从计算量还是运算速度的角度也都优于直接的根据几何关系计算距离和进行距离比较的方式。特别是便于基于数据库的索引和查询。

若出现多个相同的最长前缀匹配扫描源选项,则可采用随机方式择一而用。例如,使用当前时间戳与可选匹配扫描源ip数量作相模取余数以随机选取最优扫描源,从而避免单一扫描源ip集中匹配扎堆。

在步骤s500,对每个待扫描主机,用匹配扫描源对所述待扫描主机的端口进行第二扫描。

通常来说,当确定了匹配扫描源之后,对用匹配扫描源对待扫描主机的端口的扫描将包括对待扫描主机的所有端口进行遍历扫描,从而全面检测所有端口的安全状态。当然,也可以根据实际的需要来定义相应的端口扫描方式。例如为了进行快速扫描,预先定义需要扫描的端口,只对其中某些重要端口进行选择性扫描;或者对于某些重点端口进行多次扫描,等等。

在实际的端口扫描过程中,有各种因素会影响到扫描的效率。例如,由于网络的实际传输状态并不是总是稳定不变的,根据信息往返时间计算的扫描源到待扫描主机之间的距离有时会出现误差,例如,某段网络的阻塞,可能导致信息往返时间延长。并且,当采用geohash算法进行距离比较时,由于geohash算法对应的z阶曲线空间填充虽然有局部保序性,但是也有突变性,在每个z字母的拐角,都有可能出现顺序的突变。因此,当待扫描主机位于这些拐点时,基于geohash算法的距离比较也可能会存在异常。当对端口扫描效率的要求不太高时,这些问题是可以忽略的,但是如果要获得更高的扫描效率,就需要对这些异常进行识别。为此本发明的实施例提供了进一步的方法。

图2是根据本发明另一个实施例的基于自学习路径选择的端口扫描方法的流程示意图。相比于参照图1的实施例,本实施例在步骤s500之后,进一步执行步骤s600到s800。

在步骤s600,统计匹配扫描源对每个待扫描主机的端口进行第二扫描的总耗时,记为该扫描源对该待扫描主机的扫描时长。通常来说,第二扫描涉及对每个待扫描主机的所有端口或者大量端口的扫描,因此,扫描时长相对于往返延时来说,时间上要长出很多。使用不同扫描源在往返延时上的差异,在第二扫描时间的差异上会被进一步放大。

在步骤s700,对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据统计分析的结果确定扫描时间异常的待扫描主机作为异常主机。

其中,有多种方法可以用来确定扫描异常的主机。例如,可以视匹配扫描源与其所对应的待扫描主机之间的扫描时长近似服从正态分布,此时,可以通过计算扫描源与其所扫描的所有待扫描主机之间的扫描时长的均值μ和方差σ,并将所有对应扫描时长大于(μ+3σ)的待扫描主机作为异常主机。

或者,在精度要求不太高的情况下,直接预定义一个可接受的扫描时长的阈值,并将所有对应扫描时长大于预定义阈值的待扫描主机作为异常主机。

在一些实施例中,也可以使用其它的异常点检测算法对所有扫描时长进行异常点检测,将检测到的异常点的扫描时长对应的待扫描主机作为异常主机。例如,异常点检测算法可以包括:基于偏差检测的聚类算法、基于单变量统计的四分位数间距概率分布算法,以及基于密度分布的局部异常因子(lof)算法中的至少一种。

在步骤s800,为所述异常主机重新选择匹配扫描源。对于异常主机,可能是由于网络传输速度变化导致的定位不准确,也可能是由于恰好位于geohash算法的拐点导致的距离比较异常。在重新匹配过程中,可以选择3个扫描源对该待扫描主机进行重新定位,如果定位结果与前次不同,则说明是定位问题,可按照新的定位结果,执行步骤s400得到新的匹配扫描源。如果定位结果与前次相同,则可能是匹配扫描源选择的问题,例如,可以选择次相近的扫描源作为替代。当geohash算法中geohash字符串的长度足够,即精度足够高的时候,由于待扫描主机位于空间填充曲线拐点的而引起的匹配失误,其变动范围一般达不到3σ的数量级,故此,匹配扫描源的选择异常大多是由于待扫描主机的定位不准确或者网络链路异常导致。所以,对异常的待扫描主机的重新定位一般来说是必要的。

使用本发明的基于自学习路径选择的端口扫描方法,可以通过对待扫描主机的自动定位,实现基于待扫描主机和扫描源的实际地理位置的自学习扫描路径选择,为每个待扫描主机匹配理论上通信时间最短的扫描源,从而实现单目的ip待扫描主机扫描时间最短,进而达到整体一轮扫描时间最优的效果。并且,通过进一步的离线分析异常的扫描匹配,可以修正局部的误匹配,得到全局最优的扫描策略。这些技术面上的优点表现在应用层面,一方面可以充分利用各城市地区现有扫描资源的接入负载,以整体扫描完成时间为统一衡量尺度,避免出现部分城市负载不均的情况;另一方面,以整体扫描完成时间为目标,可根据企业业务在全球的发展态势来判断各城市接入容量和扩容需求管理,从而合理有效地控制扫描服务的运营成本支出。

为了实现上述基于自学习路径选择的端口扫描方法,本发明提供了一种基于自学习路径选择的端口扫描系统。所述系统可包括一个或多个计算设备,所述计算设备包括处理器和存储器,所述存储器上存储有包括可在所述处理器上运行的计算机程序指令的应用程序。所述应用程序可以划分为多个程序模块,用于实现基于自学习路径选择的端口扫描系统各个组成部分的相应功能。其中,程序的模块的划分是逻辑上的而非物理上的,每个程序模块可以运行在一个或多个计算设备上,一个计算设备上也可以运行一个或一个以上的程序模块。以下对本发明的基于自学习路径选择的端口扫描系统按照程序模块的功能逻辑划分进行详细说明。

图3是根据本发明实施例的基于自学习路径选择的端口扫描系统的工作环境示意图。其中,多个待扫描主机200、多个扫描源300、配置管理数据库(cmdb)400和端口扫描控制装置100通过互联网通信连接,所述通信连接可以是有线的或者无线的连接。多个待扫描主机200可分布于地理位置离散的广大范围之内,例如遍布多个城市或者多个国家。同样,多个扫描源300在地理位置的设置上也可以是分散分布的。

本发明的基于自学习路径选择的端口扫描系统可包括端口扫描控制装置100和多个扫描源300。端口扫描控制装置100和多个扫描源300通信连接,例如均连接到互联网(internet)。为了实现对待扫描主机的三角定位,扫描源的个数至少为3个,实际应用中,扫描源的个数可以是数十、数百甚至更多。扫描源300可以由服务器主机等计算设备来实现,一般来说,待扫描主机200数量众多时,扫描源300可以根据待扫描主机200的地理位置分布进行相应地配置,以缩短扫描时间。要说明的是,虽然图3中端口扫描控制装置100以及每个扫描源300均以单个服务器主机的形式示出,这仅仅是逻辑上的表示而非物理上的划分,每个装置并非限于以单个的物理设备实现。图4是根据本发明一个实施例的基于自学习路径选择的端口扫描装置的结构框图。本实施例的基于自学习路径选择的端口扫描装置100可包括第一扫描模块110,第一计算模块120,扫描源匹配模块130,第二扫描模块140和数据存储模块150。可选地,在一些实施例中,还可以进一步包括离线分析模块160。

其中,所述基于自学习路径选择的端口扫描装置100可以采用包括处理器和存储器的计算设备实现,所述存储器中存储有可被所述处理器执行的程序模块,各个程序模块被执行时,控制所述计算设备实现相应的功能。例如,第一扫描模块110,第一计算模块120,扫描源匹配模块130,第二扫描模块140、数据存储模块150和离线分析模块160可以实现为这样的程序模块。

第一扫描模块110用于从所有扫描源中随机选择n个扫描源,并控制所述n个扫描源对待扫描主机进行第一扫描,并获取每一个待扫描主机与所述n个扫描源之间的n个消息往返延时时间,其中n为大于等于3的自然数。在一些实施例中,所述第一扫描包括根据internet控制报文协议进行测试。

第一计算模块120用于对每个待扫描主机,根据n个扫描源的地理位置和n个往返延时时间计算所述待扫描主机的地理位置。其中,第一计算模块根据n个扫描源的地理位置和n个往返延时时间计算所述待扫描主机的地理位置包括:根据待扫描主机到每个扫描源的消息往返延时时间和当前网络的单位距离延时时长计算所述待扫描主机到每个扫描源的距离;以及根据所述待扫描主机到n个扫描源的距离和n个扫描源的地理位置,用三角定位方法计算所述待扫描主机的地理位置。

扫描源匹配模块130用于将每个待扫描主机的地理位置与所有扫描源的地理位置进行匹配,选择距离待扫描主机最近的扫描源作为所述待扫描主机对应的匹配扫描源,从而得到所有待扫描主机和匹配扫描源之间的映射关系。其中,所述扫描源匹配模块将待扫描主机的地理位置与所有扫描源的地理位置进行匹配,选择距离待扫描主机最近的扫描源作为所述待扫描主机对应的匹配扫描源可以利用geohash算法实现。将所有待扫描主机的地理位置和所有扫描源的地理位置应用geohash算法转换为相应的geohash字符串;以及将每个待扫描主机的geohash字符串和所有扫描源的geohash字符串进行比对,以满足geohash字符串最长前缀匹配的扫描源作为待扫描主机对应的匹配扫描源。

第二扫描模块140用于控制匹配扫描源对所述待扫描主机的端口进行第二扫描。所述第二扫描模块用匹配扫描源对所述待扫描主机的端口进行第二扫描可以是用匹配扫描源对待扫描主机的所有端口进行遍历扫描,也可以是对指定的一部分重要端口进行扫描。

数据存储模块150用于存储所有扫描源的ip信息、地理位置信息;每对扫描源-待扫描主机之间的消息往返延时时间;所有待扫描主机的ip信息、地理位置信息;所有待扫描主机和匹配扫描源之间的映射关系;以及匹配扫描源对待扫描主机的端口的第二扫描的扫描时长。数据存储模块150可以由各种计算机可读存储介质实现。其中,所有扫描源的ip信息、地理位置信息等可以通过与配置管理数据库(cmdb)400的通信获取,并存储在数据存储模块150中。而每对扫描源-待扫描主机之间的消息往返延时时间;所有待扫描主机的ip信息、地理位置信息;所有待扫描主机和匹配扫描源之间的映射关系;以及匹配扫描源对待扫描主机的端口的第二扫描的扫描时长等数据,则是由第一扫描模块110、第一计算模块120、扫描源匹配模块130和第二扫描模块140获取后存储于数据存储模块150中,并提供给各个模块读取和调用。

本发明系统中的各个模块的功能和作用的实现过程具体详情可参见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关未尽之处可参见方法实施例的部分说明。

离线分析模块160用于对每个扫描源与其所扫描的所有待扫描主机之间的扫描时长进行统计分析,根据统计分析的结果确定扫描时长异常的待扫描主机作为异常主机,并为所述异常主机重新选择匹配扫描源。

其中,有多种方法可以用来确定扫描异常的主机。例如,可以视匹配扫描源与其所对应的待扫描主机之间的扫描时长近似服从正态分布,此时,可以通过计算扫描源与其所扫描的所有待扫描主机之间的扫描时长的均值μ和方差σ,并将所有对应扫描时长大于(μ+3σ)的待扫描主机作为异常主机。

或者,在精度要求不太高的情况下,直接预定义一个可接受的扫描时长的阈值,并将所有对应扫描时长大于预定义阈值的待扫描主机作为异常主机。

在一些实施例中,也可以使用其它的异常点检测算法对所有扫描时长进行异常点检测,将检测到的异常点的扫描时长对应的待扫描主机作为异常主机。例如,异常点检测算法可以包括:基于偏差检测的聚类算法、基于单变量统计的四分位数间距概率分布算法,以及基于密度分布的局部异常因子(lof)算法中的至少一种。

图5是根据本发明另一个实施例的基于自学习路径选择的端口扫描控制装置的结构框图。本实施例中,为了便于对不同类型的数据进行存储和计算,在图4的基础上,本实施例的端口扫描控制装置中,数据存储模块150可包括两个不同类型的数据库——第一数据库151和第二数据库152,并设置有数据缓存层153。

第一数据库151为关系数据库,用于存储所有扫描源的ip信息、地理位置信息;所有待扫描主机的ip信息、地理位置信息;所有端口和匹配扫描源之间的映射关系表;以及匹配扫描源对待扫描主机的端口的第二扫描的扫描时长等信息。

第二数据库152为redis数据库,用于存储所有扫描源地理位置信息对应的geohash字符串和所有待扫描主机的地理位置信息对应的geohash字符串。如此设置的主要原因在于redis数据库能够对geohash字符串的比较提供更好的支持,便于运算。当待扫描主机数量较多时,使用redis数据库存储扫描源地理位置信息对应的geohash字符串和所有待扫描主机的地理位置信息对应的geohash字符串能够获得更快的运算速度。

数据缓存层153用于各个模块对数据库内容的快速读取。

同时,为了使用户可以对扫描过程进行选择和控制,本发明的基于自学习路径选择的端口扫描系统还可以包括用户接口模块170。用户接口模块170用于提供扫描源与待扫描主机的相关数据输入和扫描源与待扫描主机的选择操作,以及显示端口扫描结果。可以通过用户接口模块170对扫描源与待扫描主机的ip和地理位置信息进行输入或修改,也可以通过用户接口模块170由用户自行选择需要扫描的待扫描主机集合和使用的扫描源集合。一旦需要扫描的待扫描主机集合和使用的扫描源集合被选定,其端口扫描方法与面向所有扫描源和待扫描主机的全盘扫描并无实质性的差别。不再赘述。

下面结合数据库和数据的具体操作给出本发明的基于自学习路径选择的端口扫描系统的一种具体实现方案。基于自学习路径选择的端口扫描系统可以看做是ip端口扫描服务的资源调度配置中心,为加速数据计算和减轻数据库读写负载,可将内存作缓存,例如,在硬件上可选用了24核cpu、64g内存的硬件设备。第一数据库以选用mysql数据库为例。

首先获取扫描源服务器所在机房的gps经纬度信息。收集到的扫描源地理位置信息可以录入到本地mysql数据库中的一张扫描源地理信息基础表(geo_info)中。例如,geo_info基础表可包括字段:扫描源ip、gps经度信息、gps纬度信息。然后cmdb系统同步拉取一份全部待扫描主机的ip基础信息到本地mysql数据库,并录入到待扫描主机ip信息全盘基础表(ipall_info)中,ipall_info基础表可包括字段:待扫描主机内网ip和公网ip信息。当扫描源服务器和待扫描主机之间的对应关系部署好之后,需要同步维护一张扫描源服务器ip信息全盘基础表(sourceip_info),其主要包括字段:扫描源ip、扫描源经度信息、扫描源纬度信息、待扫描主机内网ip、待扫描主机公网ip。

接下来进行在待扫描主机的位置确定。将扫描源ip和待扫描主机ip两份全盘基础数据表信息加载到数据缓存层,由第一扫描模块执行第一扫描,并由第一计算模块计算得出所有目的ip待扫描主机所在的gps地理位置信息,并将地理位置信息写入redis数据库中。例如,可采用geoadd命令将计算得到的结果存入到redis地理位置集合中,例如使用命令:geoaddkeylongitudelatitudemember,其中member为待扫描主机的ip地址。

在扫描源匹配的过程中,需要将地理位置信息转化为geohash字符串。redis提供了较好的转换命令用法:geohashkeymember。将全盘扫描源ip和待扫描主机ip的gps经纬度信息完成geohash字符串值转换后,可将扫描源ip、待扫描主机ip和对应的geohash字符串值作为key-value格式存到共享内存中以便后续计算使用。由于geohash字符串越相似代表着距离越相近,因此需要对全盘扫描源ip的geohash字符串值与所有待扫描主机ip的geohash字符串值作最长前缀匹配。匹配结束后,可将缓存中的扫描源ip和待扫描主机ip匹配对信息回写到mysql数据库中的全盘扫描匹配表中作持久化存储。例如全盘扫描匹配表(match_all)可包括字段:待扫描主机ip、待扫描主机经度信息、待扫描主机纬度信息、待扫描主机位置的geohash字符串、匹配的扫描源ip、匹配的扫描源的经度信息、匹配的扫描源的纬度信息、匹配的扫描源的geohash字符串,以及一轮扫描所需时间统计。

离线分析模块可以根据全盘扫描匹配表(match_all),提取出每个扫描源ip对应的所有待扫描主机的扫描时间,并据以进行统计分析,识别异常的匹配。

本发明的端口扫描系统既可以用于自动的全部待扫描主机的全盘扫描的场景,也可以根据用户的需求进行局部扫描的场景,从方法上来说,并无本质的区别。图6是根据本发明又一个实施例的基于自学习路径选择的端口扫描系统的用户接口显示示意图。其中示出了用于局部扫描的场景,此时,可以由用户提供或选择已部署服务的扫描源ip地址和待扫描主机的ip地址信息。当用户点击开始匹配按钮后,可按照上述的方法将选中的待扫描主机的ip地址与扫描源进行匹配,通过自学习来选择接入理论地域通信时间最优的扫描源。当匹配完成后,前端页面可以显示计算得出的一轮扫描检测预估所需时间。当用户点击开始扫描按钮后,后台服务将统计所有待扫描主机ip地址的扫描时间,最终在前端页面上显示当前一轮检测扫描实际所花费的时间。

相应地,在本地mysql数据库中还可以设置两张用户信息记录表。其一用来记录用户每次提交的扫描源ip和待扫描主机的ip信息。用户每次提交扫描源ip和待扫描主机的ip信息后,后台服务会从本地mysql数据库全盘基础表(destipall_info)中获取得到其对应的基础信息。获取到扫描源ip和待扫描主机ip的基础信息后,便可参照全盘扫描的步骤来执行,其执行结果最终可写入到用户信息扫描匹配表中。用户信息扫描匹配表主要字段含义与全盘扫描匹配表相同。用户点击开始匹配按钮后,前端页面所显示的扫描检测预估所需时间取的是最近一轮全盘扫描中被选中的待扫描主机ip扫描时间的加权和;用户点击开始扫描后,前端页面所显示的扫描检测实际所需时间取的是用户信息扫描匹配表中各目的ip实际扫描花费时间的加权和。

使用本发明的基于自学习路径选择的端口扫描系统,可以通过对待扫描主机的自动定位,实现基于待扫描主机和扫描源的实际地理位置的自学习扫描路径选择,为每个待扫描主机匹配理论上通信时间最短的扫描源,从而实现单目的ip待扫描主机扫描时间最短,进而达到整体一轮扫描时间最优的效果。并且,通过进一步的离线分析异常的扫描匹配,可以修正局部的误匹配,得到全局最优的扫描策略。这些技术面上的优点表现在应用层面,一方面可以充分利用各城市地区现有扫描资源的接入负载,以整体扫描完成时间为统一衡量尺度,避免出现部分城市负载不均的情况;另一方面,以整体扫描完成时间为目标,可根据企业业务在全球的发展态势来判断各城市接入容量和扩容需求管理,从而合理有效地控制扫描服务的运营成本支出。

根据本发明第三方面的实施例提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现,实现如本发明第一方面所述基于自学习路径选择的端口扫描方法。

根据本发明第四方面的实施例提供了一种计算设备,该计算设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述计算机程序时,实现本发明第一方面所述的基于自学习路径选择的端口扫描方法。

根据本发明第五方面的实施例提供了一种计算机程序产品,当所述计算机程序产品中的指令由处理器执行时,实现本发明第一方面所述的基于自学习路径选择的端口扫描方法。

根据本发明第三到五方面的非临时性计算机可读存储介质,计算设备和计算机程序产品具有与根据本发明第一和第二方面的基于自学习路径选择的端口扫描方法和系统类似的效果,在此不再赘述。

图7示出了适于用来实现本公开实施例的示例性计算设备的框图。图7显示的计算设备12仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。

如图7所示,计算设备12可以通用计算设备的形式实现。计算设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industrystandardarchitecture;以下简称:isa)总线,微通道体系结构(microchannelarchitecture;以下简称:mac)总线,增强型isa总线、视频电子标准协会(videoelectronicsstandardsassociation;以下简称:vesa)局域总线以及外围组件互连(peripheralcomponentinterconnection;以下简称:pci)总线。

计算设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(randomaccessmemory;以下简称:ram)30和/或高速缓存存储器32。计算设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性的计算机可读存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(compactdiscreadonlymemory;以下简称:cd-rom)、数字多功能只读光盘(digitalvideodiscreadonlymemory;以下简称:dvd-rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本公开各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本公开所描述的实施例中的功能和/或方法。

计算设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,计算设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(localareanetwork;以下简称:lan),广域网(wideareanetwork;以下简称:wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算设备12的其它模块通信。要说明的是,尽管图中未示出,可以结合计算设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。

需要说明的是,在本说明书的描述中,流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一个实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是两个或两个以上,例如两个,三个等,除非另有明确具体的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1