戴海燕
摘要 服务器开放的端口是服务器暴露在外面的一个入口,从网络运维以及网络安全管理的角度来说,都很重要,在服务器比较多,业务复杂的网络环境中,服务器运维人员以及网络管理人员,要想全面了解网络中各个服务器开放的端口,是运维中比较棘手的事情,本文提出一种基于端口的网络流量特点,利用机器学习的方法,通过对已知服务器流量特点的学习,得到一種对服务器开放端口进行分类预测的模型,通过该模型,能够通过对网络流量的预测分析,从而发现网络中当前开放的服务器端口。
【关键词】机器学习 端口发现 监督学习 决策树
1 背景分析
服务器上运行的很多应用,在对外提供服务的同时,都会开放一些对应的端口,作为提供服务时的数据通讯通道,由于服务器上提供的服务比较多,而且有的服务由于通讯的协议不一样,会开放多个端口,这样会导致服务器上开放的端口很多,服务器运维人员以及网络管理人员,很难搞清楚服务器开放的端口有哪些,各个端口通过什么协议进行通讯,哪些端口是经常用于数据通讯的。
服务器开放的端口是服务器暴露在外面的一个口,外部的访问客户端可以通过该端口,访问到该服务器上的服务,甚至可以通过该端口,访问到该服务器所在的网络,所以往往是外部攻击者进入服务器所在网络的一个突破口,
在网络攻击中,攻击者为了控制网络,攻击者通常需要在控制的机器上部署病毒、木马之类的恶意程序,这些恶意程序为了跟控制者通讯,需要开放端口,这些开放的端口往往是违规开放的端口,在服务器比较多,业务复杂的网络环境中,通过登记的方式,运维的工作量是很大的,而且很容易跟不上实际的变化,通过扫描的方式,也需要一个人工确认的过程,而且有些病毒、木马程序开放的端口,扫描并未能发现。
服务器开放的端口,在正常提供服务器的时候,会产生netflow的网络流量,通过netflow的流量分析,可以利用机器学习的方法,学习得到网络中服务器开放端口的流量特征,从而得到一个通过网络流量发现服务器开放端口的模型。
2 服务器端口netflow流量特征分析
服务器开放的端口,在进行数据通讯的过程中,会产生netflow网络流量,通过netflow流量,可以分析出服务器开放的端口具备的流量特征。通过对netflow流量的分析,发现服务器开放的端口,通常都具备如下的一些特征
访问服务器端口的客户端IP数量会比较多;
访问服务器端口的客户端端口数量会比较多;
通过服务器端口发送的数据包数量会比较多;
通过服务器端口发送的流量字节数会比较多;
访问服务器的客户端端口数量与访问服务器端口的客户端IP数量的比值,会比较大;
通过服务器端口进行流量传输的时间比较长:
通过服务器端口进行流量传输的频率比较高。
在实际的网络环境中,流量特征根据网络管理策略以及业务特点的不同,会体现不同的特点来,除了以上端口流量的特征,还可以提取出其他的流量特征来,可以根据实际的分析场景不断丰富。
3 数据建模
数据建模是确定分析目标,为分析目标提取特征数据,并根据特征数据选择计算算法的过程。
模型以分析服务器开放端口为分析目标,将端口具备的netflow流量特征作为模型的特征,本文的分析目标是要从大量的netfiow流量的IP和端口组合中,利用模型特征,分析找出是服务器IP开放的端口的组合,即可视为是对IP和端口的分类分析,计算算法可选择分类分析的算法,也可选择聚类分析的算法。
监督式分类分析的算法通过对己知样本的学习,学习得到一个可用于对IP和端口进行分类的模型,利用这个模型,即可对未知的lP和端口进行分类预测。
非监督式聚类分析的算法对模型数据直接进行聚类计算,可自动将特征类似的IP和端口聚合在一个集合中,从而达到自动对数据进行分类的目的。
两种算法目标类似,但是实现过程和计算过程不一样,本文采用监督式的分类分析对模型进行训练,通过学习得到的模型,来实现未知数据的预测。
3.1 训练数据准备
3.1.1 数据抽取
模型建立后,需要根据模型的特征提点以及选择算法的需要,准备符合模型训练需要的数据集,监督式学习的算法,要求提供样本数据,样本数据可以通过选择一些服务器己知开放的端口,抽取这些端口的流量数据作为训练集原始数据。
3.1.2 数据预处理
数据预处理对筛选的数据进行数据的清洗、数据的转换、数据的统计计算等处理。
根据模型的特征,对netflow流量做不同的数据预处理,通过数据预处理,提供模型计算需要的数据,处理过程如下:
将IP和端口作为分组条件,对筛选的netflow流量数据进行分组。
将分组后的流量数据,以天作为统计周期,对数据按照模型特征进行统计计算。
分别按照每天统计每组IP和端口的特征数据。
根据统计结果,转换计算其它特征数据。
根据算法的特点,有些算法需要对连续型的统计数据进行离散化,如发送的包数、发送的字节数等。
3.1.3 样本标识
模型特征数据计算完成后,需要对样本数据进行标识,即对样本数据打标签,对选择的已知服务器开放的端口的数据,标识为1,对非服务器开放端口的数据,标识为O。
4 模型训练
数据准备就绪后,选择对应的算法进行数据计算,监督式学习的算法有很多,本文的分析为二分类分析,可以选择适合于二分类的机器学习算法进行计算,可选择的算法有二元逻辑回归、SVM支持向量机、分类决策树、回归决策树等算法。
对于同一个分析模型,同样的训练数据集下,可以选择不同的机器学习算法进行学习,通过对多个算法的横向比较,如算法的准确度、偏离度等,可选择一个最合适的算法对模型进行训练,同一个算法,也可以通过反复的参数调整,对模型进行迭代式的训练,最后得到一个最合适的模型。
通过实践,分类决策树和SVM支持向量机,训练得到的模型,对数据有较好的分类效果。
5 知识提取
知识提取是将计算得到的模型以及规则,进行解析和整理,并转化为可理解的模型公式或分析规则,并以可视化的方式进行展示。
知识提取需要结合人工对计算结果的分析,结合模型转化为可理解的模型和规则,模型和规则的提取,可以结合分析人员的经验,进行适当的调整,以排除噪声数据对模型计算结果的干扰,提升模型的效果。
6 模型应用
模型训练完成后,并未实现真正的分析目标,最终的目标,是要将训练得到的模型应用到实际的数据分类预测中,通过得到的模型,对未知的数据进行分类预测。
在实际的应用中,网络环境中服务器开放的服务,随时可能增加,也随时可能减少,利用模型定期的对网络环境中的网络流量进行预测,即可发现当前网络中开放了哪些服务,这些服务都使用了哪些端口,预测得到的数据,可作为网络运维人员的资产维护知识库。
预测得到的结果提交给运维人员后,对于核心的资产,需要与现有的资产库进行对比,如果发现有资产库中未登记的端口,需要进行确认,如果确认发现未部署使用该端口的服务,推测有可能是病毒或木马等恶意程序开放的端口,需要进行实时的处理。
参考文献
[1] Jiawei
Han, Micheling Kamber. Da toMining Concepts and Techniques [M].机械工业出版社,2012.