一种高效、可靠的Linux命令行操作审计的方法、系统
文献发布时间:2024-04-18 20:02:18
技术领域
本发明涉及Linux命令行操作审计结构技术领域,尤其涉及一种高效、可靠的Linux命令行操作审计的方法、系统。
背景技术
Shell命令行是一个C语言编写的程序,用户可以通过shell去执行命令,访问操作系统提供的服务,而bash则是目前Linux操作系统默认使用的shell程序。
传统读取系统日志的方式可获取的信息更多,且可以实时审计,但由于需要大量修改程序内部指令的逻辑,很有可能引入bug,导致程序崩溃,用户无法正常使用命令行。
发明内容
本部分的目的在于概述本发明的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和发明名称中可能会做些简化或省略以避免使本部分说明书摘要和发明名称的目的模糊,而这种简化或省略不能用于限制本发明的范围。
鉴于上述现有一种高效、可靠的Linux命令行操作审计的方法、系统存在的问题,提出了本发明。
因此,本发明目的是提供一种高效、可靠的Linux命令行操作审计的方法、系统,其适用于解决传统读取系统日志的方式可获取的信息更多,且可以实时审计,但由于需要大量修改程序内部指令的逻辑,很有可能引入bug,导致程序崩溃,用户无法正常使用命令行。
为解决上述技术问题,本发明提供如下技术方案:一种高效、可靠的Linux命令行操作审计的方法、系统,包括:管理平台、agent模块、bash审计模块、信息处理模块,
所述管理平台以可视化界面的方式供用户管理云主机,向各云主机agent下发审计开启/关闭指令,并展示各云主机命令行执行的命令供用户审计,
所述agent模块是安装在用户主机中的agent程序,并与管理平台通过TLS进行通信,所述agent模块会在接收到管理平台下发的审计指令后,将系统原生bash替换为agent所携带的bash审计模块,并监听本地socket,用于接收bash命令行执行信息,
所述bash审计模块则是通过分析bash源码逻辑,找到bash源码中将命令写入~/.bash_history文件的函数add_history,在其中插入对命令执行上下文信息获取函数get_info和信息发送函数send_info。
作为本发明所述一种高效、可靠的Linux命令行操作审计的方法、系统的一种优选方案,其中:所述信息处理模块将资源池内云主机agent发送的命令行执行信息进行汇总,并将命令与系统规则库进行正则匹配,匹配成功则标记为可疑命令,存放在数据库中,供管理平台获取以展示在前端界面上让用户进行审计。
作为本发明所述一种高效、可靠的Linux命令行操作审计的方法、系统的一种优选方案,其中:所述agent收取到bash审计模块收集到的命令行执行信息后,将该信息通过TLS发送给信息处理模块,用于后续分析、审计。
作为本发明所述一种高效、可靠的Linux命令行操作审计的方法、系统的一种优选方案,其中:所述get_info内通过系统或内置方法获取到bash进程号、登录bash的终端名和登录IP等信息,便于后续审计,所述send_info则通过unix socket将命令信息和命令执行上下文信息发送至agent模块。
作为本发明所述一种高效、可靠的Linux命令行操作审计的方法、系统的一种优选方案,其中:所述bash审计模块并未对原有的读取、执行指令核心逻辑进行改动,而是在执行命令结束后、写日志前插入对bash审计信息的获取、发送。
作为本发明所述一种高效、可靠的Linux命令行操作审计的方法、系统的一种优选方案,其中:所述信息处理模块将信息向数据库内进行传递,所述管理平台可调用数据库内部信息。
作为本发明所述一种高效、可靠的Linux命令行操作审计的方法、系统的一种优选方案,其中,bash审计流程:
A1.构造命令执行信息获取函数和信息发送函数;
A2.通过分析bash源码逻辑,在追加日志函数中插入准备好的命令信息获取函数和信息发送函数,构造bash审计模块;
A3.agent收到审计指令后,安装bash审计模块至主机中;
A4.用户登录主机执行bash命令行指令后,bash审计模块将执行的指令信息通过本地socket发送给agent;
A5.agent将指令信息发送至信息处理模块,经汇总处理后,展示在前端界面供用户审计。
作为本发明所述一种高效、可靠的Linux命令行操作审计的方法、系统的一种优选方案,其中:所述agent模块负责在接收到命令行审计开启指令后将bash审计模块安装至主机中,后续会将bash审计模块收集的命令行执行指令信息发送至信息处理模块。
作为本发明所述一种高效、可靠的Linux命令行操作审计的方法、系统的一种优选方案,其中:所述agent收到管理平台的开启审计指令后,会将bash审计模块安装至用户主机中,替换系统原有bash。
作为本发明所述一种高效、可靠的Linux命令行操作审计的方法、系统的一种优选方案,其中:
bash命令行审计流程,步骤如下:
S1.首先通过分析bash源码后,在追加日志add_history函数中插入已构造好的命令信息获取函数和信息发送函数,构成bash审计模块;
S2.agent接收到审计指令后,先将主机内的自带bash备份,再将bash审计模块安装至主机中,使之成为默认使用的命令行程序;
S3.登录主机后,启动的命令行程序为该bash审计模块,用户执行命令行指令后,
S4.除了基本的指令信息,还额外记录了命令行的登录用户、登录IP、登录终端、进程信息,指令的执行用户和执行时间等信息;
S5.bash审计模块将记录的信息发送至agent模块,agent添加上主机信息后发送至信息处理模块,信息处理模块将接收到的审计信息解析处理后存入数据库中;
S6.管理平台从数据库中读取指令信息展示在前端界面上供用户审计。
本发明的有益效果:
审计信息丰富,本发明提出的审计方法、系统可根据需要,灵活调整bash审计模块中的信息获取函数get_info的实现,获取命令行执行相关信息,如执行进程号、登录用户、执行用户、登录终端和IP等,相较只能获取到执行命令的读取bash日志的方案,可提供的命令行审计信息更为丰富;
对主机系统修改小,仅替换了主机系统中的bash模块,未对内核和其他程序进行修改,且bash审计模块相较默认bash只在追加日志逻辑中增加了信息获取和信息发送函数,修改少,对bash整体执行逻辑影响较小,相比基于Hook技术的方案更为适用且稳定;
本发明提出的bash审计方法、系统适用于对公有云及私有云中海量云主机的命令行审计,方便管理员对云主机进行安全审计。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。其中:
图1为本发明提出的一种高效、可靠的Linux命令行操作审计的方法、系统的命令行审计系统架构图;
图2为本发明提出的一种高效、可靠的Linux命令行操作审计的方法、系统的命令行审计流程图。
具体实施方式
为使本发明的上述目的特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细地说明。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独地或选择性地与其他实施例互相排斥的实施例。
再其次,本发明结合示意图进行详细描述,在详述本发明实施例时,为便于说明,表示器件结构的剖面图会不依一般比例作局部放大,而且所述示意图只是示例,其在此不应限制本发明保护的范围。此外,在实际制作中应包含长度宽度及深度的三维空间尺寸。
参照图1-2,为本发明的一个实施例,提供了一种高效、可靠的Linux命令行操作审计的方法、系统,包括管理平台、agent模块、bash审计模块、信息处理模块,
所述管理平台以可视化界面的方式供用户管理云主机,向各云主机agent下发审计开启/关闭指令,并展示各云主机命令行执行的命令供用户审计,
所述agent模块是安装在用户主机中的agent程序,并与管理平台通过TLS进行通信,所述agent模块会在接收到管理平台下发的审计指令后,将系统原生bash替换为agent所携带的bash审计模块,并监听本地socket,用于接收bash命令行执行信息,
所述bash审计模块则是通过分析bash源码逻辑,找到bash源码中将命令写入~/.bash_history文件的函数add_history,在其中插入对命令执行上下文信息获取函数get_info和信息发送函数send_info。
进一步,所述信息处理模块将资源池内云主机agent发送的命令行执行信息进行汇总,并将命令与系统规则库进行正则匹配,匹配成功则标记为可疑命令,存放在数据库中,供管理平台获取以展示在前端界面上让用户进行审计。
进一步,所述agent收取到bash审计模块收集到的命令行执行信息后,将该信息通过TLS发送给信息处理模块,用于后续分析、审计。
进一步,所述get_info内通过系统或内置方法获取到bash进程号、登录bash的终端名和登录IP等信息,便于后续审计,所述send_info则通过unix socket将命令信息和命令执行上下文信息发送至agent模块。
进一步,所述bash审计模块并未对原有的读取、执行指令核心逻辑进行改动,而是在执行命令结束后、写日志前插入对bash审计信息的获取、发送。
进一步,所述信息处理模块将信息向数据库内进行传递,所述管理平台可调用数据库内部信息。
进一步,bash审计流程:
A1.构造命令执行信息获取函数和信息发送函数;
A2.通过分析bash源码逻辑,在追加日志函数中插入准备好的命令信息获取函数和信息发送函数,构造bash审计模块;
A3.agent收到审计指令后,安装bash审计模块至主机中;
A4.用户登录主机执行bash命令行指令后,bash审计模块将执行的指令信息通过本地socket发送给agent;
A5.agent将指令信息发送至信息处理模块,经汇总处理后,展示在前端界面供用户审计。
进一步,所述agent模块负责在接收到命令行审计开启指令后将bash审计模块安装至主机中,后续会将bash审计模块收集的命令行执行指令信息发送至信息处理模块。
进一步,所述agent收到管理平台的开启审计指令后,会将bash审计模块安装至用户主机中,替换系统原有bash。
实施例一:
图1为本发明所述的bash命令行审计系统的实施例,该系统由管理平台、agent、bash审计模块、信息处理模块组成。
管理平台以可视化界面的方式供用户管理云主机,向agent下发审计指令,展示检测审计信息。
agent检测模块安装在用户云主机,负责在接收到命令行审计开启指令后将bash审计模块安装至主机中,后续会将bash审计模块收集的命令行执行指令信息发送至信息处理模块。
信息处理模块将资源池内云主机产生的审计信息进行汇总处理后,存放在数据库中,供管理平台获取以展示在前端界面上让用户查看。
实施例二:
图2为本发明的bash命令行审计流程,步骤如下:
首先通过分析bash源码后,在追加日志add_history函数中插入已构造好的命令信息获取函数和信息发送函数,构成bash审计模块。
S1.agent接收到审计指令后,先将主机内的自带bash备份,再将bash审计模块安装至主机中,使之成为默认使用的命令行程序。
S2.登录主机后,启动的命令行程序为该bash审计模块,用户执行命令行指令后,bash审计模块获取到指令详细上下文信息,如:
S3.除了基本的指令信息,还额外记录了命令行的登录用户、登录IP、登录终端、进程信息,指令的执行用户和执行时间等信息。
S4.bash审计模块将记录的信息发送至agent模块,agent添加上主机信息后发送至信息处理模块,信息处理模块将接收到的审计信息解析处理后存入数据库中。
管理平台从数据库中读取指令信息展示在前端界面上供用户审计。
应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
- 一种基于Linux安全模块的文件审计、防护方法
- linux下命令行操作对象存储系统的方法和装置
- 一种在Linux系统下审计USB设备历史使用情况的方法