2. 河北省网络与信息安全重点实验室 河北 石家庄 050024;
3. 数据科学与智能应用福建省高校重点实验室 福建 漳州 303000
2. Hebei Provincial Key Laboratory of Network & Information Security, Shijiazhuang 050024, China;
3. Key Laboratory of Data Science and Intelligence Application, Fujian Province University, Zhangzhou 303000, China
伴随着网络用户个人信息泄露、各大数据库信息外泄、关键信息服务器设备受威胁及用户主机被入侵等事件的频繁发生, 网络安全问题已经成为当今社会的热点议题之一。由于网络入侵行为方式的不断多样化和复杂化, 基于防火墙等的静态安全防范技术已无法满足当代网络安全需求, 主动防御网络异常入侵行为的安全防护技术——入侵检测系统应运而生[1]。
K-means算法是一种应用广泛的硬聚类方法, 采用距离作为相似性评价指标, 即认为两个数据对象之间的距离越近, 相似度越大。该算法在人工给定k值的前提下, 通过迭代满足平方误差准则函数收敛, 输出聚类结果。一些研究者针对传统K-means算法提出了一系列改进算法[2-7]。文献[5]提出了基于免疫规划的K-means聚类算法, 该算法有效克服了传统K-means聚类算法易陷入局部极小值的缺点, 而且有效地避免了对初始化选值敏感性的问题。文献[6]基于指数函数性质、权重调节、偏执项和手肘法基本思想, 提出了改进的ET-SSE算法, 使得k值预测准确率和预测结果更加稳定。目前大多数聚类方法都是基于二支决策思想, 即判定某个数据对象属于某个类簇, 或不属于某个类簇, 在处理一些网络数据集时, 传统的二支聚类方法仍存在一定的不足。一方面, 聚类结果并不能完全反映所有数据对象本身的性质特征。例如在图 1中, 按照传统二支聚类方法, 数据对象x1、x2分别归到C1和C2两个簇中, 但实际上数据点x1、x2与对应簇中数据对象存在明显差异, 所以采取硬聚类方法必会降低入侵检测率, 增大误检率。另一方面, 传统K-means聚类算法采用固定的k值, 但是在现实网络环境中很难提前预测所有数据行为的准确类别数, 所以固定的k在一定程度上影响对网络数据的分类和判定。
![]() |
图 1 数据集示意图 Fig. 1 The diagram of data set |
为克服上述两方面的不足, 本文将结合三支决策思想, 提出基于三支动态阈值K-means聚类的入侵检测算法。该算法通过设定阈值α, 可以实现对k值的动态调整, 利用数据对象的q邻域实现对不确定性数据的延迟决策, 进而提高入侵检测系统的检测率, 降低误检率。
1 入侵检测系统与K-means聚类算法 1.1 入侵检测系统入侵检测系统能实时监控、检测网络系统和数据资源, 迅速发现非法攻击网络系统、非法操作数据资源的入侵行为, 同时还能提前阻止合法用户对系统的误操作, 维护网络系统安全。通常情况下, 入侵检测系统由数据采集、数据分析以及响应处理三大部分构成[8]。
传统的入侵检测系统以误用检测技术为主, 建立已知入侵行为特征数据库, 利用该数据库对网络中的数据流量和活动行为进行实时监控, 以模式匹配的方式判断网络行为及其变种行为是否异常, 当数据特征与特征数据库中的任何一条规则有交集, 即可判定为入侵行为。K-means聚类算法作为典型二支聚类算法在入侵检测过程中的应用主要表现在两个阶段:第一阶段, 数据分析并构建分类器; 第二阶段, 检测引擎通过分类器判别每个数据对象的行为特征[9]。
1.2 K-means聚类算法K-means聚类算法以数据对象间的欧氏距离作为衡量数据对象间联系是否紧密的依据, 认为特征属性越接近的数据对象之间距离越小[10]。K-means聚类算法遵循聚类的两点假设:(1)在整个测试数据集中正常数据对象在数量上远远大于非正常数据对象; (2)正常数据对象与非正常数据对象之间存在明显的差异性。
K-means聚类算法流程如下。
输入:包含n个数据对象的数据集X={x1, x2, …, xn}和聚类个数k;
输出:k个聚类簇。
(1) 在数据集X={x1, x2, …, xn}中随机选取k个数据对象, 构成所属簇的第一次聚类中心点集U={u1, u2, …, uk}。
(2) 计算数据集X中所有数据点xi到k个聚类中心点uj的欧氏距离d(xi, uj), 并将它们归到距离最近的簇Cj={xi|d(xi, uj)≤d(xi, ul), j≠l}中。
(3) 重新计算每个簇中所有数据对象的新均值
(4) 计算目标函数
为了解决传统聚类算法在入侵检测系统应用中存在的问题, 很多学者对二支聚类算法进行了改进, 将三支决策思想引入聚类算法, 提出三支聚类方法。三支决策理论最早由Yao在决策粗糙集的基础上提出[11-12], 其核心思想是将待决策项拓展为正域决策、负域决策和边界域决策。有充分把握、了解全面的事物, 直接给出接受或者拒绝的判断, 否则做进一步调查, 表现为延迟决策[13]。近年来, 在不确定性信息处理方面, 三支决策理论得到了广泛推广[14-18]。文献[14]提出了基于不完备信息系统的三支决策模型。文献[17]将三支决策思想引入聚类分析中, 提出了一种自动三支决策聚类算法, 该方法为自动确定K-means算法聚类数目提供了一种新的解决思路。文献[19]借数据对象的q领域, 把二支聚类结果中不确定性数据进行分离, 每一类数据均由确定性数据组成的核心区域(core)和不确定性数据组成的边界区域(fringe)共同构成。
以图 1为例, 利用传统硬聚类方法, 数据对象x1和x2只能分别归属到类C1和C2, 但x1和x2与类C1和C2中的数据对象又有显著差异, 聚类结果如图 2所示。而利用三支聚类方法进行聚类, 结果如图 3所示。x1和x2分别被划分到C1和C2的边界区域内, 可作为不确定性数据待进一步处理。与传统硬聚类方法相比, 该种聚类方法在结构上有明显的优势, 可以针对离群数据点的特殊性, 对其做进一步聚类。
![]() |
图 2 二支聚类结果 Fig. 2 The result of two-way clustering |
![]() |
图 3 三支聚类结果 Fig. 3 The result of three-way clustering |
三支聚类方法是对传统二支聚类方法的推广, 是为解决对不确定性数据对象进行合理归类这一问题而提出的一种解决方案。当数据对象难以立刻判断其所属类别时, 可将其归至边界区域, 对于能够准确判定类别的数据对象可归至核心区域。对于数据集X={x1, x2, …, xn}, 假设C={C1, C2, …, Ck}是利用二支聚类方法对X进行聚类的结果。结合三支决策思想, 对每个类别Ci进行改进, 用CiP, CiB两个集合表示一个类Ci=CiP∪CiB, 满足:(1)
在入侵检测过程中, 将核心区域数据直接判断为入侵数据或正常数据, 将边界区域数据进行延迟决策, 以减少误判。
3 基于三支动态阈值K-means聚类算法通常情况下, 在入侵检测系统中同一类行为数据普遍具有较高的相似性[20], 所以基于三支聚类算法的结果集中在绝大多数边界区域CiB, 基本可以判定为是与该类核心区域CiP非同类的行为数据。在基于q邻域三支聚类算法的基础上, 为消除人工干预k值对K-means算法聚类效果的影响, 本文提出以下基于三支动态阈值K-means聚类算法。
在K-means聚类过程中引入一个距离阈值α, 利用硬聚类算法对其进行预测, 并在算法执行过程中动态优化。K-means算法采用距离作为相似性的评价指标, 引入距离阈值α可以有效地将离群数据对象单独成簇, 并将其作为新的聚类中心参与数据训练。聚类中心的动态调整在一定程度上消除了人工干预k值对K-means算法聚类效果的影响。基于三支动态阈值K-means聚类算法流程如下。
输入:包含n个数据对象的数据样本集X={x1, x2, …, xn}, 聚类个数为k, 邻域为q, 阈值为α;
输出:聚类结果集C。
(1) 在数据集X={x1, x2, …, xn}中随机选取k个数据对象, 构成初始聚类中心点集U={u1, u2, …, uk}。
(2) 计算数据集中所有剩余数据对象{xi|xi∉U}到每个聚类中心uj的距离d(xi, uj), 并把它们归到距离最近的簇Cj={xi|d(xi, uj)≤d(xi, ul), j≠l}中。
(3) 由函数
(4) 遍历数据集X={x1, x2, …, xn}中所有数据点{xi|xi∉U|}, 当∃d(xi, uj)<α时, 将xi归到距离最近的簇C′j={xi|d(xi, uj)≤d(xi, ul), j≠l}中; 当∀d(xi, uj)≥α时, 令uk+1= xi, 更新中心点集U={u1, u2, …, uk+1}, 即将xi作为数据集X中单独存在的簇, 初始聚类中心为xi, 簇的数量更新为k′。
(5) 重新计算每个簇中所有数据对象的新均值
(6) 继续执行步骤(3)~(5), 依据目标函数的值
(7) 取所有类样本数量均值的
(8) 遍历二支聚类结果集C′={C′1, C′2, …, C′k′}中所有类C′j, 任取xi∉C′j, 考虑xi的q邻域Neigq(xi)(距离该数据点最近的q个数据点组成的集合), 若Neigq(xi)∩C′j≠
(9) 对每一类C′j, 取xi∈C′j, 考虑xi的q邻域Neigq(xi), 若Neigq(xi)⊆C′i, 则xi∈CP′j, 否则xi∈CB′j;
(10) 通过步骤(8)和(9)得到CP′j和CB′j(j=1, 2, …, k′), 返回C″={(CP′1, CB′1), (CP′2, CB′2), …, (CP′k′, CB′k′)}, 令CP={CP′1, CP′2, …, CP′k′}。
(11) 令X=CB′1∪CB′2∪…∪CB′k′, 执行步骤(1)~(6), 得到对边界区域数据对象的二次聚类结果集C′={C′1, C′2, …, C′k′}, 令CB=C′。
(12) 输出最终聚类结果集C={CB, CP}。
最终聚类结果集由CB和CP两部分构成, 结果集CP中包含所有经过确定性划分的核心区域数据对象, CB中包含被划分至不确定性边界区域后, 经二次确定性划分处理的数据对象, 由此得出的聚类结果集在准确率上明显高于传统二支聚类算法。
4 实验与结果分析 4.1 测试数据集的预处理文中采用网络入侵检测算法的常用测试数据集KDD Cup99(http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html)进行实验。该数据集是从一个模拟的美国空军局域网上采集来的9个星期的网络连接数据, 包含具有标识的训练数据集kddcup_corrected和未加标识的测试数据集kddcup_testdata。训练数据集和测试数据集有着不同的概率分布, 测试数据集中包含了一些未出现在训练数据集中的攻击类型, 使得入侵检测更具有现实性。此次实验使用数据包kddcup_data_10percent验证基于三支动态阈值K-means聚类算法在性能上优于传统K-means算法。kddcup_data_10percent数据包是对KDD Cup99数据集(约500万条数据记录)10%的抽样。
kddcup_data_10percent数据包中每条数据记录为
0、tcp、http、SF、297、13787、0、0、0、0、0、1、0、0、0、0、0、0、0、0、0、0、2、2、0.00、0.00、0.00、0.00、1.00、0.00、0.00、177、255、1.00、0.00、0.01、0.01、0.00、0.00、0.00、0.00、normal。
0、udp、private、SF、105、147、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、2、2、0.00、0.00、0.00、0.00、1.00、0.00、0.00、255、254、1.00、0.01、0.00、0.00、0.00、0.00、0.00、0.00、snmpgetattack。
kddcup_data_10percent数据包中的每一条数据记录包含了41个固定的特征属性和1个类标识, 类标识用来标记该条数据记录是正常的或是某种具体类型的攻击行为。每条数据记录中包含连接持续时间、协议类型、目标主机的网络服务类型、访问控制文件的次数等属性。在41个固定的特征属性中, 9个为离散(symbolic)型, 32个为连续(continuous)型。
K-means聚类算法中使用计算距离的方法对数据进行聚类, 对于字符型特征属性首先需要数值化。对于连续型特征属性, 各属性的度量方法不一样, 一般而言, 变量所用的度量单位越小, 可能的值域就越大, 这样对聚类结果的影响也越大, 即在计算数据间距离时对聚类的影响越大, 甚至会出现“大数”吃“小数”的现象。因此为消除由于属性度量的差异对聚类产生的影响, 需要对特征属性进行标准化处理:
本算法是在windows 10系统下的Python 3.7.2 64-bit环境下引入sklearn、numpy、csv等实现的。
kddcup_data_10percent数据包中的约30万条数据记录包含约85%正常行为数据、15%入侵行为数据(21类)。入侵检测算法采用两个性能指标进行评价[21], 这两个指标定义为
$ 检测率(DR) = \frac{{检测到的入侵数据}}{{入侵数据总数}}, \;\;\;\;\;\;\;\;\;\;\;\;\;\;误检率(\mathit{F}R) = \frac{{误报为入侵的正常数据}}{{正常数据总数}}。$ |
实验一:在kddcup_data_10percent数据包中依次随机选取含有20 000条正常数据和2 000条攻击数据(含21类攻击行为)的五个数据集D1、D2、D3、D4、D5, 作为本次实验的测试数据集。实验结果如表 1所示。
![]() |
表 1 实验一测试结果 Tab. 1 The test result of experiment 1 |
实验二:分别选取如表 2所示的五个数据集H1、H2、H3、H4、H5作为本次实验的测试数据集。
![]() |
表 2 实验二测试数据集 Tab. 2 The test data set of experiment 2 |
实验一通过随机抽取方式选用性质相同的D1、D2、D3、D4、D5五个测试数据集进行横向对比, 发现基于三支动态阈值K-means聚类算法无论从检测率还是误检率上都优于传统的K-means聚类算法。
实验二通过选用包含不同数量攻击类型的测试数据集H1、H2、H3、H4、H5进行纵向对比, 实验结果表明当测试数据集中攻击类型逐渐增多时, 基于三支动态阈值K-means聚类算法与传统K-means算法相比, 误检率显著降低, 如表 3所示。
![]() |
表 3 实验二测试结果 Tab. 3 The test result of experiment 2 |
图 4为改进前后K-means算法针对测试数据集中未知攻击类型数据多次实验的结果对比图, 表明基于三支动态阈值K-means聚类算法具有更好的检测未知攻击类型的性能。
![]() |
图 4 改进K-means算法前后未知攻击类检测率对比 Fig. 4 Comparison of detection rates of unknown attacks before and after improving K-means algorithms |
本文受三支决策思想和三支聚类方法的启发, 针对网络访问数据的复杂性与不确定性特点, 提出了基于三支动态阈值K-means聚类的入侵检测算法。通过设定距离阈值α实现对聚类个数k的动态优化, 同时利用数据对象的q邻域与初次聚类中簇的关系, 分离出不确定性网络访问数据并置于边界区域, 然后对该区域数据再次聚类并做出检测判断。采用这种对不确定性数据延迟决策的方法, 可以降低入侵检测过程中的误判带来的风险。通过一系列对比实验, 发现该算法较传统二支聚类K-means算法, 其检测率的提高和误检率的降低都是显著的, 验证了本文算法的有效性。同时, 在实验过程中我们还发现, 把正常数据误报为入侵数据或把入侵数据误报为正常数据, 两者给受保护系统带来的风险显然是不一样的, 后者会远远大于前者。在保证系统具有较高检测率和较低误检率的前提下, 如何进一步降低入侵数据误报为正常数据带来的风险, 最大程度上维护系统的安全是今后继续研究的方向。
[1] |
杜强, 孙敏. 基于改进聚类分析算法的入侵检测系统研究[J]. 计算机工程与应用, 2011, 47(11): 106-108, 181. DU Q, SUN M. Intrusion detection system based on improved clustering algorithm[J]. Computer engineering and applications, 2011, 47(11): 106-108, 181. ( ![]() |
[2] |
Alsabti K, Ranka S, Singh V. An efficient k-means clustering algorithm[C] //IPPS/SPDP Workshop on High Performance Data Mining, Orlando, 1998.
( ![]() |
[3] |
陆林花, 王波. 一种改进的遗传聚类算法[J]. 计算机工程与应用, 2007, 43(21): 170-172. LU L H, WANG B. Improved genetic algorithm-based clustering approach[J]. Computer engineering and applications, 2007, 43(21): 170-172. ( ![]() |
[4] |
傅涛, 孙亚民. 基于PSO的k-means算法及其在网络入侵检测中的应用[J]. 计算机科学, 2011, 38(5): 54-55, 73. FU T, SUN Y M. PSO-based k-means algorithm and its application in network intrusion detection system[J]. Computer science, 2011, 38(5): 54-55, 73. ( ![]() |
[5] |
行小帅, 潘进, 焦李成. 基于免疫规划的K-means聚类算法[J]. 计算机学报, 2003, 26(5): 605-610. XING X S, PAN J, JIAO L C. A novel K-means clustering based on the immune programming algorithm[J]. Chinese journal of computers, 2003, 26(5): 605-610. ( ![]() |
[6] |
王建仁, 马鑫, 段刚龙. 改进的K-means聚类k值选择算法[J]. 计算机工程与应用, 2019, 55(8): 27-33. WANG J R, MA X, DUAN G L. Improved K-means clustering k-value selection algorithm[J]. Computer engineering and applications, 2019, 55(8): 27-33. ( ![]() |
[7] |
郭新, 徐明, 张众. 基于谱聚类的边缘检测算法[J]. 郑州大学学报(理学版), 2018, 50(3): 83-86, 93. GUO X, XU M, ZHANG Z. A novel edge detection method based on spectral curvature clustering[J]. Journal of zhengzhou university(natural science edition), 2018, 50(3): 83-86, 93. ( ![]() |
[8] |
田大新, 刘衍珩, 魏达. ARTNIDS:基于自适应谐振理论的网络入侵检测系统[J]. 计算机学报, 2005, 28(11): 1882-1889. TIAN D X, LIU Y H, WEI D. ARTNIDS: network intrusion detection system based on adaptive resonance theory[J]. Chinese journal of computers, 2005, 28(11): 1882-1889. ( ![]() |
[9] |
王茜, 刘胜会. 改进K-means算法在入侵检测中的应用研究[J]. 计算机工程与应用, 2015, 51(17): 124-127, 144. WANG Q, LIU S H. Application research of improved K-means algorithm in intrusion detection[J]. Computer engineering and applications, 2015, 51(17): 124-127, 144. ( ![]() |
[10] |
刘端阳, 郑江帆, 沈国江, 等. 基于CUDA的K-means算法并行化研究[J]. 计算机科学, 2018, 45(11): 292-297. LIU D Y, ZHENG J F, SHEN G J, et al. Study on parallel K-means algorithm based on CUDA[J]. Computer science, 2018, 45(11): 292-297. ( ![]() |
[11] |
YAO Y Y. The superiority of three-way decisions in probabilistic rough set models[J]. Information sciences, 2011, 181(6): 1080-1096. ( ![]() |
[12] |
YAO Y Y. An outline of a theory of three-way decisions[M]. Berlin, Heidelberg: Springer, 2012.
( ![]() |
[13] |
刘强, 施虹, 王平心, 等. 基于ε邻域的三支决策聚类分析[J]. 计算机工程与应用, 2019, 55(6): 140-144. LIU Q, SHI H, WANG P X, et al. Three-way clustering analysis based on ε neighborhood[J]. Computer engineering and applications, 2019, 55(6): 140-144. ( ![]() |
[14] |
LIU D, LIANG D C, WANG C C. A novel three-way decision model based on incomplete information system[J]. Knowledge-based systems, 2016, 91: 32-45. ( ![]() |
[15] |
SHE Y H, HE X L, SHI H X, et al. A multiple-valued logic approach for multigranulation rough set model[J]. International journal of approximate reasoning, 2017, 82: 270-284. ( ![]() |
[16] |
LI J H, HUANG C C, QI J J, et al. Three-way cognitive concept learning via multi-granularity[J]. Information sciences, 2017, 378: 244-263. ( ![]() |
[17] |
于洪, 毛传凯. 基于K-means的自动三支决策聚类方法[J]. 计算机应用, 2016, 36(8): 2061-2065, 2091. YU H, MAO C K. Automatic three-way decision clustering algorithm based on K-means[J]. Journal of computer applications, 2016, 36(8): 2061-2065, 2091. ( ![]() |
[18] |
朱威威, 赵岩松, 李艳灵. 一种基于集合划分的鲁棒性自适应模糊聚类分割算法[J]. 信阳师范学院学报(自然科学版), 2019, 32(1): 146-152. ZHU W W, ZHAO Y S, LI Y L. A robust adaptive fuzzy clustering segmentation algorithm based on set partition[J]. Journal of Xinyang normal university (natural science edition), 2019, 32(1): 146-152. ( ![]() |
[19] |
王平心, 刘强, 杨习贝, 等. 基于动态邻域的三支聚类分析[J]. 计算机科学, 2018, 45(1): 62-66, 89. WANG P X, LIU Q, YANG X B, et al. Three-way clustering analysis based on dynamic neighborhood[J]. Computer science, 2018, 45(1): 62-66, 89. ( ![]() |
[20] |
钱燕燕, 李永忠, 余西亚. 基于多标记与半监督学习的入侵检测方法研究[J]. 计算机科学, 2015, 42(2): 134-136, 146. QIAN Y Y, LI Y Z, YU X Y. Intrusion detection method based on multi-label and semi-supervised learning[J]. Computer science, 2015, 42(2): 134-136, 146. ( ![]() |
[21] |
肖苗苗, 魏本征, 尹义龙. 基于BFOA和K-means的复合入侵检测算法[J]. 山东大学学报(工学版), 2018, 48(3): 115-119, 126. XIAO M M, WEI B Z, YIN Y L. A hybrid intrusion detection system based on BFOA and K-means algorithm[J]. Journal of Shandong university(engineering science), 2018, 48(3): 115-119, 126. ( ![]() |