doi:10.3969/j.issn.1671-1122.2021.05.004
基于Linux Shell命令的用户异常操作检测
方法研究
吴驰,帅俊岚,龙涛,于俊清
(华中科技大学网络与计算中心,武汉 430074)
摘 要:针对数据中心安全需求,文章研究并设计了基于规则和基于命令序列的两种异常操作检测方法,在此基础上实现了基于Linux Shell命令的异常操作检测系统。
基于规则的异常操作检测方法通过设计规则库匹配算法对被监测用户执行的Shell命令
进行检测。基于命令序列的异常操作检测方法以合法用户历史命令序列为训练集构建
用户行为特征库,使用异常命令序列检测算法判定被监测用户操作是否存在异常。实
验结果表明,在高校数据中心环境中,基于规则的异常操作检测方法有较高的检测效率,
基于命令序列的异常操作检测方法有较高的检测准确率,能够满足数据中心对用户执
行Shell命令的异常检测需求。
关键词:Linux Shell;异常检测;规则库;命令序列
中图分类号:TP309 文献标志码: A 文章编号:1671-1122(2021)05-0031-08
中文引用格式:吴驰,帅俊岚,龙涛,等.基于Linux Shell命令的用户异常操作检测方法研究[J].信息网络安全,2021,21(5):31-38.
英文引用格式:WU Chi, SHUAI Junlan, LONG Tao, et al. Research on Detection Method of User Abnormal Operation Based on Linux Shell Commands[J]. Netinfo Security, 2021, 21(5): 31-38.
Research on Detection Method of User Abnormal Operation Based on
Linux Shell Commands
WU Chi, SHUAI Junlan, LONG Tao, YU Junqing
(Network and Computation Center, Huazhong University of Science and Technology, Wuhan,430074, China)
Abstract: Aiming at the security requirements of data center, this paper studies and designs two kinds of abnormal operation detection methods based on rule and command
linux登录命令sequence, and realizes the abnormal operation detection system based on Linux Shell
commands. In the rule-based abnormal operation detection method module, a rule base
matching algorithm is designed to detect the Shell commands executed by the monitored
users. In the module of abnormal operation detection method based on command sequence,
the user behavior feature library is constructed with the legal user history command sequence
收稿日期:2020-11-15
基金项目:国家重点研发计划[2017YFB0801703];赛尔网络下一代互联网技术创新基金[NGII201704
08]
作者简介:吴驰(1976—),男,湖北,高级工程师,硕士,主要研究方向为教育信息化、网络安全;帅俊岚(1996—),男,江西,硕士研究生,主要研究方向为入侵检测;龙涛(1974—),男,湖北,高级工程师,博士,主要研究方向为计算机软件和分布式计算;于俊清(1975—),男,内蒙古,教授、博士,主要研究方向为数字媒体处理与检索、网络安全、多核计算与流编译。
通信作者:
as the training set, and the abnormal operation detection algorithm based on abnormal command sequence is used to determine whether the monitored user operation is abnormal. The experimental results show that in the university data center environment, the rule-based abnormal operation detection method has high detection efficiency, and the command sequence based abnormal operation detection method has high detection accuracy, which can meet the abnormal detection requirements of the data center for users to execute Shell commands.
Key words: Linux Shell; abnormaly detection; rule base; command sequence
0 引言
随着互联网技术的快速发展,数据中心作为一种新型基础设施,被广泛应用于各行各业,数据中心的安全防护问题也开始被广泛关注。目前,对于常见的计算机病毒、密钥泄露、非法访问、数据泄密等计算机信息安全问题,数据中心管理员通常采用安装计算机病毒扫描软件、配置网络防火墙、对敏感数据加密、用户访问权限控制等防护手段来解决[1-5]。这些防护手段可以抵御外部的恶意行为入侵,但是从数据中心内部的安全机制来看,对数据中心合法用户的各种误操作、违规操作或恶意操作等异常行为缺乏有效审计手段[6]。因此,迫切需要一个能够对数据中心服务器进行统一监控,并能检测用户异常操作的系统。
在异常检测技术研究方向,国内外学者做了许多卓有成效的工作。李超[7]等人提出了一种基于共生矩阵的用户行为异常检测方法,通过计算当前事件序列构建出的共生矩阵与训练阶段构建的模型矩阵距离来判决用户行为。郭为鸣[8]提出了一种改进的用户入侵行为检测方法,采用基于动态链接库的Shell命令提取方法,以Shell命令记录作为审计数据,提高了入侵检测的准确率。SHONE[9]等人提出了一种用于入侵检测系统的新型深度学习技术,并使用KDD Cup 99和NSL-KDD数据集进行了实验验证,获得较好的实验结果。SERPEN[10]等人提出了基于Linux主机的异常行为检测系统的设计和性能评估
方法,采用了Eigentraces特征提取技术,该特征提取方法是对操作系统调用跟踪数据进行主成分分析,并采用k-NN算法进行分类,具有较高的检测性能。章坚武[11]等人提出了基于模糊理论与关联规则的BV A-IDS(Boolean V ector Apriori-intrusion Detection System)模型,该模型具有较高的检测准确率和较低的误检率。朱韶平[12]等人提出了一种基于MSNN模型的网络安全入侵检测算法,利用多级Sigmoid神经网络进行模型训练,实验表明该算法具有较高的检测准确率,具有良好的应用价值。Y ANG[13]提出了一种基于数据挖掘算法的实时入侵检测系统,该系统具有实时检测以及分布式架构等特点,具有良好的应用前景。
针对学校数据中心安全防护手段单一、效率低等问题,本文以高校数据中心实际环境为背景,研究并设计了基于规则和基于命令序列的两种异常操作检测方法,在此基础上实现了一种以Shell命令为审计数据的异常操作检测系统。
1 基于规则的异常操作检测
1.1 异常操作检测方法设计
在基于Linux Shell命令的异常操作检测系统中,设计了基于规则的异常操作检测方法,对已知的异常操作进行检测,设计思路如图1所示。当用户通过统一的W eb Shell终端登录到目标服务器时,会触发用户访问属性规则检测。每当用户执行一个命令都会向系统后台发出一个HTTP请求,请求消息体中携
带的参数就是用户当前执行的Shell命令,系统后台使用规则库匹配算法对用户当前执行的命令进行检测。如果检测出当前命令与规则库中的高危命令相匹配或者命令操作的文件对象与敏感文件相匹配,则根据匹配规则对应的响应动作对当前用户进行反馈(包括命令提醒、命令阻断、中断会话等)。如果与规则库不匹配,则用户可以继续执行命令。
1.2 规则库设计
规则库是基于规则异常操作检测方法的基础,针
对不同的异常操作特征所包含的属性可以定义不同的规则类型。规则库中包含3种规则类型:高危命令规则、敏感文件规则和用户访问属性规则。高危命令规则的数据表各字段的名称、类型及含义如表1所示。敏感文件规则主要包含敏感数据文件等,敏感文件规则的数据表各字段的名称、类型及含义如表2所示。用户访问属性规则主要用于限制用户访问目标服务器时的主机IP 地址和访问时间段,用户访问属性规则的数据表各字段的名称、类型及含义如表3所示。
表1 高危命令规则数据表
字段名类型含义Type CHAR(1)命令类型CommandName V ARCHAR(256)
命令名称CommandPattern TEXT 命令规则ActionType CHAR(1)事件类型MatchingType
CHAR(1)
匹配类型
表2 敏感文件规则数据表
字段名类型含义FilePattern V ARCHAR(256)文件规则Type CHAR(1)文件类型ActionType CHAR(1)事件类型MatchingType
CHAR(1)
匹配类型
表3 用户访问属性规则数据表
字段名类型含义ServerID V ARCHAR(512)服务器id IPScope V ARCHAR(512)IP 范围TimeScope V ARCHAR(256)访问时间段LifeCycle
DATETIME
生命周期
1.3 规则库匹配算法
规则库匹配算法的核心逻辑如图2所示。当用户通
过W eb Shell 终端登录目标服务器时,可获取用户当前
的访问时间,通过HttpRequest 对象获取用户的主机IP ,判断用户的主机IP 和访问时间是否满足既定的访问规则。若满足,则监听用户在终端上执行的命令,提取命令名称和命令参数,基于Shell 命令库索引判断当前用户执行命令的类型。如果命令类型为文件操作类型,则进一步判断命令参数中的操作文件是否为规则库中定义的敏感文件。如果当前执行的命令不是文件操作类型的命令,则以命令名称为索引,在高危命令库中查对应的高危命令规则,通过遍历的方式判断当前执行的命令与查结果中的高危命令规则是否匹配。如果匹配成功,则系统根据匹配规则的响应类型做出相应的反馈。
图2 规则匹配流程
1.4 实验1设计与结果分析
1.4.1 实验1设计
本实验采用了JMH (Java Microbenchmark Harness )框架对基于规则的异常操作检测方法进行性能测试。实验过程中将基于规则的异常操作检测方法的程序部署在一台独立的Linux 服务器中,服务器环境配置如表4所示
。
终端
图1 基于规则的异常操作检测方法设计思路
表4 服务器环境配置
CPU内存操作系统内核版本
Intel(R) Xeon(R) Platinum 81632.50 GHz 8vCPU 16 GB
CentOS Linux release
7.3.1611
Linux-3.10.0
1.4.2 实验1评价指标
实验从两个维度来衡量基于规则的异常操作检测方法的检测效率。当规则库中规则数量一定时,不同并发线程数量对方法检测效率的影响;当并发线程数量一定时,规则库中不同规则数量对方法检测效率的影响。实验结果采用吞吐量作为检测效率的衡量指标,吞吐量指单位时间内检测方法最大能检测命令的次数,其值越大,表明方法的检测效率越高。
1.4.3 实验1结果与分析
实验中使用的服务器拥有一个8核CPU。为充分利用服务器的CPU资源,进行不同并发线程数对方法检测效率影响的实验时,设置最大的线程并发数为16。当规则数一定时,设置并发线程数的范围为1~16,得到不同并发线程数对方法吞吐量的影响如图3所示。
图3 不同并发线程数量对检测算法吞吐量的影响
分析实验结果可得,随着并发线程数量增大,本文方法的吞吐量达到一个峰值然后趋于平稳;当并发线程数量为4时,吞吐量达到峰值,后面趋于平稳是因为服务器的资源耗尽。当并发线程数为4时,不同规则
数对方法吞吐量的影响如图4所示。
图4 不同规则数量对检测方法吞吐量的影响
通过图4分析不同规则数量对检测方法吞吐量的影响。随着规则数量的增加,检测方法的吞吐量平稳下滑,因此,不同规则数量对检测方法吞吐量影响微小,这是因为本文方法实现过程中采用了缓存技术对规则库数据进行缓存。。
2 基于命令序列的异常操作检测
2.1 异常操作检测方法设计
在Linux系统中,每个合法用户都有自己特定的使用命令的风格。例如,开发人员会经常在Linux系统中执行文件编辑、编译程序等相关的命令序列;运维人员在Linux系统中会经常执行系统配置、应用部署等相关的命令序列。因此,可以通过分析合法用户历史执行Shell命令序列的行为特征,并以合法用户的行为特征为基线,检测非法用户执行的命令序列。基于这样一种思路,设计了一种基于命令序列的异常操作检测方法,如图5所示。
终端
目标服务器
图5 基于命令序列的异常操作检测方法
2.2 Linux Shell日志收集及日志预处理
2.2.1 Linux Shell日志收集
基于命令序列的异常操作检测方法采用合法用户历史执行的Linux Shell日志作为审计数据,通过日志分析合法用户的行为特征,并以合法用户的行为特征作为异常操作判断的依据。Linux系统中的BASH
程序会自动记录系统上每个用户在Shell终端上执行的所有命令,命令日志被记录在位于用户HOME目录下的.bash_
history 文件中。.bash_history 文件中记录的部分日志示例如图6所示。
图6 .bash_history 文件中部分命令日志示例
2.2.2 日志数据预处理模块
为了进一步分析合法用户历史执行Shell 命令序列的行为特征,需要将日志收集模块收集到的合法用户
Shell 命令日志经日志预处理算法转换成命令序列流,日志预处理流程如图7所示。通过日志收集模块获取Linux 系统中合法用户历史执行的Shell 命令日志。在日志数据预处理过程中,保留命令名称、命令可选参数和命令特殊符号,将命令操作对象使用“<1>”或者“<2>”等占位符代替。经过预处理之后,图6所示的原始Shell 命令日志按照时间先后顺序转换成了图8所示的命令序列流。
图7 日志预处理流程
cd,<1>,ls,-laF,cat,<1>,>,<1>,exit, vi,<1>
图8 经数据预处理转换后的命令序列流
2.3 命令序列库构建
通过日志采集模块获取合法用户历史执行Shell 命令日志,并且经数据预处理模块转换成命令序列流。根据N -gram 模型[14]的处理方法定义K 种长度不同的Shell 命令子序列,表示合法用户的各种行为特征。设K 种命令子序列的长度集合为L ={l (1),l (2),l (3),…,l (K )},其中,l (i )表示第i 种命令子序列的长度,且l (1)<l (2)<…<l (K ),K 和L 的值对方法的检测效率有直接的影响。L 中的每个元素对应N -gram 模型的不同N 值,根据L 生成不同长度的命令子序列集合为S ={S 1, S 2, S 3,…, S K },其中,S i 表示由所有长度为l (i )的命令子序列组成的集合。对于长度为l (i )的S i 中的第j 个命令子序列t = S j i ,其出现的频率P (t )的计算方法如公式(1)所示。其中,N t 表示命令子序列t 在S i 中出现的次数,N l (i )表示S i 中所有命令子序列的个数。
P t ()=
N N l i (t
)
(1)
针对K 种不同长度的命令子序列组成的集合,定义频率门限集合W ={μ1, μ2, μ3,…, μK },将S i 中出现频率大于或等于μ i 的命令子序列提取出来,作为合法用户的行为特征,从而得到由不同长度的命令子序列组成的命令序列库。
2.4 异常命令序列检测
将已构建的合法用户命令序列库作为基于命令序
列的异常操作检测的基。通过日志收集模块获取被监测用户在Linux 服务器中执行的命令日志,经数据预处理模块将命令日志转换成命令序列流。利用序列匹配方法从命令序列流中提取被监测用户的命令子序列,并对每个命令子序列进行相似度赋值,得到一系列相似度流[15]。假设获得的相似度流为Z ={sim (S 1*,
L ), sim (S 2*, L ),…sim (S n *, L )}。其中,S n *表示从被监测用户命令序列流中提取的第n 个命令子序列。对相似度流进行加窗取平均
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论