文/肖子彤
随着信息技术的不断发展,越来越多的联网设备接入互联网,为用户提供更快捷的访问。然而,在这海量连接入网设备所构成的全球互联网中,越来越多的安全问题被暴露出来。由于制造商安全观念缺乏、管理者安全意识不足,大量联网设备都存在或多或少的安全漏洞,威胁着整个互联网的安全。IPv6协议所带来的巨大地址空间将使下一代互联网的规模更大,接入网络的终端种类和数量更多,网络应用更广泛。而原本发展已经非常迅速的物联网,在下一代互联网的推动下,也会迎来更加迅猛的发展。与之相伴的则是海量联网设备的特征数据,其中必然包含了大量远程访问信息,尚待挖掘。
本文提出一套同时支持IPv4和IPv6的下一代互联网联网设备基础数据服务平台的设计方案,可做到通过对所有接入互联网的设备进行深度扫描,大规模收集网络基准数据,包括多种网络应用相关信息、网站内容等,并进行深度分析和挖掘,感知整个互联网的网络安全态势,提供从宏观到微观的全方位数据支持。
IPv6( 全 称 为“Internet Protocol version 6”)是最新版IP协议,作用于网络层。其目的是取代IPv4以解决IPv4存在的地址匮乏问题,并对IPv4其他方面存在的不足进行改进。
具体而言,和IPv4相比,IPv6的改进包括报头处理更加简化、扩展更加灵活、地址结构更加层次化、支持无状态自动配置、支持综合Qos服务、安全性更佳以及实现IP的移动性等等。
随着IPv6在全球范围内不断推广,对IPv6网络中安全问题的发现和安全技术的研究也越来越受到重视。如面向IPv6的网络安全评估技术和面向IPv6的入侵检测技术等方面,都已有一系列研究。此外在IPv6网络中,快速扫描和探测海量网络节点的基本信息以及可能存在的安全问题,也同样是一个需要研究的重要课题。
端口扫描技术是一种利用互联网协议的特性,探测主机的特定端口是否开放和运行网络服务的技术,通常是检测系统漏洞时必须进行的第一步工作。而根据扫描方法的不同,该技术可分为全开式扫描、半开式扫描、隐密扫描等类别。
其中半开式扫描是目前最常用的扫描方法,主流的端口扫描工具如Nmap、Zmap等默认的扫描方式都是半开式扫描。这里“半开式”是指客户端在TCP三次握手还未完成时就发送RST包中止连接。这种扫描往往不会被服务器记录,隐蔽性较好,而且无需保存服务器状态,扫描速度较快。但是该扫描方式可能被特意针对本方法进行防御的入侵检测系统所拦截。
对于端口扫描,目前已有的开源工具zmap通过半开式TCP端口扫描可快速完成全网特定端口的开放性扫描。由于zmap对一个IP只发送一个包进行探测,能够以超过nmap 近千倍的速度扫描全网络IPv4地址。它在千兆网卡状态下完成全网IPv4地址扫描仅需45分钟。因此对IPv4地址的端口扫描通过引入zmap并对其进行封装和输出的自动化解析而完成。zmap对IPv6的端口扫描需参考相关扫描原理手动实现,通过尝试连接IPv6节点的指定端口判断其是否开放。
在确认一个端口处于开放状态后,还需要确认该端口关联的网络服务类别,zmap关注的是扫描速度,并不具备识别复杂服务类型的功能。而这可由开源工具nmap完成。nmap经多年发展维护,拥有成熟且丰富的服务识别指纹库,可对多种网络服务进行较为准确的版本识别,功能极为强大。并且nmap支持IPv6,故初步服务识别可完全由nmap完成。
端口扫描与初步服务识别作为后续所有工作的基础,必须做到高效完成。而为提升开发效率和避免重复工作,可根据zmap和nmap二者各自的特点各尽其长,结合使用,完成扫描任务。
由于各类网络服务根据其功能的差异,皆具备不同的指纹特征,因此为了能够充分满足对各类服务特定特征的探测需求,并考虑功能的可扩展性,我们对所要扫描的各类服务逐一编写定制化探测脚本,根据需求确定需扫描的特征。探测脚本需结合已知协议细节、技术知识和交互流量数据对所针对的网络服务的应用指纹特征进行分析,以获得具有丰富价值的数据。
在各类服务中,HTTP服务尤其需要重点分析,如利用爬虫抓取网页内容,运用正则表达式匹配等手段寻找标志性关键词,从而分析其所用到的Web组件和网站运营信息等等。因为Web服务在互联网各类服务中所占比例极大,且使用极为频繁,也最容易因存在漏洞而遭受攻击;所以收集其特征意义重大,如识别各网站所使用的Web组件类型和版本有利于了解其是否存在漏洞,进而更好地把握整个互联网的安全形势。此外,从网站主页内容等数据中也可挖掘出与互联网发展动态和趋势等相关的有价值的信息,故需通过较为完备的Web组件指纹库对Web服务进行分析,尽可能多地获取其特征信息。
由于数据搜集和处理量大,扫描和探测过程采用分布式架构完成。对于十亿量级IP节点的扫描和探测等任务,若采用传统集中式系统,那么中心主机资源紧张和响应瓶颈的缺陷将会显著降低工作效率;而利用分布式使得数据和程序不位于一台服务器上,而是分散到多个节点服务器上来完成任务,把不同的进程放在最适合的服务器上完成。具体而言,这里的分布式架构包括一个master服务器和多个worker服务器。master服务器根据探测对象IP和端口的不同,快速生成端口扫描、初步应用识别、深度指纹探测等多个任务并放入数据库中,等待worker领取和完成。worker服务器通过与master通信从数据库中获取任务,并在本地完成任务后将收集到的数据返回给master,存入其数据库中。由于每个扫描任务需要的时间皆较长,因此单个master服务器不会成为系统瓶颈。
通过分布式计算在多台服务器上平衡负载,有利于任务的分配和优化,提高工作效率。通过合理的架构设置和调度逻辑,在时间和空间上保证对各计算节点的充分利用,高效完成任务;且为便于管理分布式架构的工作状况,还实现了Web界面用于查看各工作节点的扫描日志。
在扫描和探测的过程中,由于不同IP节点所提供的网络服务类型差异,所得到的数据类型也会存在较大差异。而常用的关系型数据库是在表中存储相关联的数据,因此扩展性也较差,对于处理非结构化数据显得力不从心。测试在利用分表分库缓解读写压力和数据增长的扩展问题上,也表现得不尽人意,故不适用于本应用场景。
非关系型数据库将相关联的数据以类似JSON格式的“key-value”格式存储。数据之间无关系使它易于扩展,简单的数据结构使它即使在大数据量下读写性能依然很高,并且灵活的数据模型使得对海量数据的维护变得简单易行。而服务平台中所要处理的海量数据来源极为广泛,对于不同类型的服务其基本信息千差万别,一个网站可以提供从Web组件到运营信息等丰富的数据,而从一个SSH服务上可获得的信息则极为有限,它们难以统一整理为结构化数据。因此本平台选择使用更适合处理大量非结构化数据的非关系型数据库。
测试中平台运行所需的Web服务器、扫描服务器和数据库服务器均运行于Ubuntu 16.04系统中,依赖的应用软件包括zmap、nmap、python、MongoDB和rabbitmq-server等。硬件环境包括四核Intel处理器、8GB内存等。
图1 ssh服务深度探测结果
图2 搜索界面
如前所述,本平台中数据均以非关系型数据格式存储,如图1所示,为数据库中SSH服务深度探测所得的部分结果。
图3 数据展示界面
在开发的Web页面中可便捷查询到探测结果,如图2和图3所示。
本文提出了一个对联网设备基础数据进行扫描探测与整合管理,且支持IPv6地址扫描的数据服务平台的设计方案。该数据服务平台基于扩展性良好的分布式框架,具备对十亿量级地址空间进行快速探索的能力;可深度探测不低于十种常见网络服务的指纹特征;具备探测百万量级网站的能力,且具有可扩展性;提供XML和json格式的数据接口供第三方调用。
本平台有待改进的地方主要在于支持深度探测的网络服务种类还不够全面,分布式架构的运行效率有待提升,可供用户检索的Web界面的可视化方面有待完善。未来可展开的下一步工作包括可增加深度指纹探测脚本以求覆盖更多的常见网络服务;根据各项扫描任务相互间依赖关系对分布式架构中的任务调度进行队列优化,以提升其效率;在Web界面中,当用户一次性检索大量数据时,用图表等可视化形式更加直观地展现检索结果,以期有助于对入网设备基础数据进行分析和挖掘等等。