System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种实时收集Bash执行命令的方法技术_技高网

一种实时收集Bash执行命令的方法技术

技术编号:39940314 阅读:8 留言:0更新日期:2024-01-08 22:30
本发明专利技术特别涉及一种实时收集Bash执行命令的方法。该实时收集Bash执行命令的方法,利用Linux Bash命令处理器的初始化机制,在用户登陆时加载预先配置的profile文件,配合使用PROMPT_COMMAND环境变量和trap命令,在用户每次执行完毕Bash命令之后,自动收集Bash执行命令的详细信息以及执行命令的用户名与用户UID信息,利用套接字进行数据传输,以备实时审计与安全分析程序调用。该实时收集Bash执行命令的方法,可以根据用户的需求灵活自定义采集功能,无需对Bash进行二次开发和兼容性适配测试,大大降低了运维成本,同时也提升了企业内部对于安全风险的感知能力。

【技术实现步骤摘要】

本专利技术涉及软件开发与网络安全,特别涉及一种实时收集bash执行命令的方法。


技术介绍

1、随着网络安全技术的飞速发展,网络安全技术也慢慢进入大众的视野,网络安全问题已经变成一个不容忽视的问题。bash作为操作系统上的一个应用程序,它连接了用户和linux内核,承担着执行用户输入命令的重要作用。因此,保证用户执行命令的安全,对用户命实时收集、实时审计和安全分析就显得尤为重要。

2、在linux操作系统中,默认会将每个用户在bash中执行的命令存储到~/.bash_history中,使用history命令即可对用户历史使用命令进行查看。由于性能原因,用户使用的命令并不会立即存储到文件中,而是等到用户注销或者手动执行history-w命令后,才会将缓存中的命令写入文件,这种情况下就无法对用户执行的命令进行实时审计和安全分析。

3、bash作为与操作系统交互的一个入口,用户输入的命令也直接影响到了操作系统上运行程序的安全。为了实现用户在bash上执行命令的实时审计和安全分析,保障网络安全,本专利技术提出了一种实时收集bash执行命令的方法。


技术实现思路

1、本专利技术为了弥补现有技术的缺陷,提供了一种简单高效的实时收集bash执行命令的方法。

2、本专利技术是通过如下技术方案实现的:

3、一种实时收集bash执行命令的方法,其特征在于:利用linuxbash命令处理器的初始化机制,在用户登陆时加载预先配置的profile(配置)文件,配合使用prompt_command环境变量和trap命令,在用户每次执行完毕bash命令之后,自动收集bash执行命令的详细信息以及执行命令的用户名与用户uid(user identification,用户身份证明)信息,利用套接字(socket)进行数据传输,以备实时审计与安全分析程序调用。

4、具体包括以下步骤:

5、步骤s1、环境初始化

6、在用户登录bash时加载命令收集脚本,对bash执行环境进行检查和预配置,利用linux操作系统登录bash加载环境变量配置文件的机制,配置prompt_command环境变量以及trap命令,以保证用户的每一次命令键入都能够被收集;

7、步骤s2、命令收集

8、在用户执行命令后收集命令执行相关信息,包括用户ip采集、用户登陆终端名称采集、用户名称采集、用户uid采集和命令采集五个部分;通过这五个部分可以还原命令执行的基本情况,例如可以通过用户ip了解到执行命令的用户是从哪个客户端登陆到服务器上,通过用户名称可以确认使用哪个账户登陆到服务器等等。

9、步骤s3、数据发送

10、在命令执行相关信息收集完毕后,利用linux套接字进行数据传输,将收集到的bash执行信息发送到命令收集和分析程序,用以后续对命令进行实时审计、安全分析以及威胁告警操作。

11、所述步骤s1中,配置prompt_command环境变量,用户登陆bash后,每次执行命令前,先执行prompt_command环境变量中给出的命令。同时,通过trap命令设置,用户在执行命令时,调用命令信息收集函数来收集此次命令执行的相关信息。

12、所述步骤s1中,环境初始化配置流程如下:

13、步骤s1.1、初始化各种变量保存信息,检查__audit_pid字段是否等于当前bash进程的进程控制符pid,如果不相等则将__audit_pid字段重置为bash进程的进程控制符pid;如果相等则代表已经执行过初始化流程,中断后续初始化流程即可;

14、步骤s1.2、检查bash_env环境变量,所述bash_env环境变量保存有一个bash启动文件路径,当启动脚本程序时执行bash_env环境变量中指定的脚本文件;

15、将profile脚本文件配置到bash_env环境变量中,在执行脚本程序时对配置进行检查,以保证正确收集执行命令的相关信息。

16、步骤s1.3、设置prompt_command环境变量,在用户每次执行命令后检查__audit_pid字段,如果该字段的值为空,则重新调用初始化脚本,设置命令捕获机制;

17、步骤s1.4、设置trap命令,通过`trap audit_command debug`命令设置在用户每次执行任意命令时都先调用audit_command函数来收集此次执行命令的相关信息。

18、所述步骤s2中,通过linux操作系统上执行who命令、history命令、tty命令以及读取$user环境变量、proc目录等多种方法来收集命令执行相关信息,通过多种收集方式来保证尽可能准确的收集用户执行命令的相关数据。

19、所述步骤s2中,在用户执行命令后收集命令执行相关信息,包括:

20、1)用户ip采集

21、在linux操作系统上执行who命令(调用命令`who-mu|awk-f‘[()]’‘{print$2}’`)获取当前登录用户的ip,对获取到的用户ip进行检查,如果获取到的用户ip的值为空或者等于pts(伪终端),则调用命令`echo$ssh_connection|awk‘{print$1}’`重新获取用户ip,如果获取到的用户ip扔为空,则将用户ip设置为-;

22、2)用户登陆终端名称采集

23、在linux操作系统上执行tty命令,检查返回结果中是否包含tty字符串,如果不包含则将用户登录终端名称设置为-,否则调用tty命令(调用命令`tty|awk-f‘/’‘print$3”/”$4’`)获取用户登录终端名称;

24、3)用户名称采集

25、检查$user环境变量是否为空,如果存在$user环境变量,则获取该环境变量的值作为用户名称,否则调用命令`who-m|awk‘{print$1}’`检查是否能够获取到用户名称信息,如果获取不到用户名称则将用户名称设置为-;

26、4)用户uid采集

27、查看是否存在/proc/$$/stat文件,其中`$$`在linux下代表bash进程id,调用命令`awk‘{print$6}’/proc/$$/stat`获取bash进程会话组id;如果id存在,则通过`/proc/${id}/loginuid`来获取用户uid,否则将用户uid设置为-;

28、5)命令采集

29、调用命令`history 1`来获取当前执行命令,将命令结果保存到`__audit_command`变量中,使用命令`echo“$__autit_command”|awk‘{print$1}’`对数据进行过滤,去除history命令结果中的行号信息;在将数据发送之前再次调用`trap audit_commanddebug`命令,将命令执行结果和当前收集的命令进行比较,确保收集到的命令的正确性;同时通过tra本文档来自技高网...

【技术保护点】

1.一种实时收集Bash执行命令的方法,其特征在于:利用Linux Bash命令处理器的初始化机制,在用户登陆时加载预先配置的profile文件,配合使用PROMPT_COMMAND环境变量和trap命令,在用户每次执行完毕Bash命令之后,自动收集Bash执行命令的详细信息以及执行命令的用户名与用户UID信息,利用套接字进行数据传输,以备实时审计与安全分析程序调用。

2.根据权利要求1所述的实时收集Bash执行命令的方法,其特征在于:包括以下步骤:

3.根据权利要求2所述的实时收集Bash执行命令的方法,其特征在于:所述步骤S1中,配置PROMPT_COMMAND环境变量,用户登陆Bash后,每次执行命令前,先执行PROMPT_COMMAND环境变量中给出的命令;通过trap命令设置,用户在执行命令时,调用命令信息收集函数来收集此次命令执行的相关信息。

4.根据权利要求2所述的实时收集Bash执行命令的方法,其特征在于:所述步骤S1中,环境初始化配置流程如下:

5.根据权利要求4所述的实时收集Bash执行命令的方法,其特征在于:所述步骤S2中,在用户执行命令后收集命令执行相关信息,包括:

6.根据权利要求4所述的实时收集Bash执行命令的方法,其特征在于:所述步骤S3中,利用Linux操作系统打开/dev/udp/host/port文件,建立套接字连接机制,建立数据传输通道,将收集到的命令执行相关数据发送到数据收集服务程序中。

7.一种实时收集Bash执行命令的设备,其特征在于:包括存储器和处理器;所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序时实现如权利要求1至6任意一项所述的方法步骤。

8.一种可读存储介质,其特征在于:所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述的方法步骤。

...

【技术特征摘要】

1.一种实时收集bash执行命令的方法,其特征在于:利用linux bash命令处理器的初始化机制,在用户登陆时加载预先配置的profile文件,配合使用prompt_command环境变量和trap命令,在用户每次执行完毕bash命令之后,自动收集bash执行命令的详细信息以及执行命令的用户名与用户uid信息,利用套接字进行数据传输,以备实时审计与安全分析程序调用。

2.根据权利要求1所述的实时收集bash执行命令的方法,其特征在于:包括以下步骤:

3.根据权利要求2所述的实时收集bash执行命令的方法,其特征在于:所述步骤s1中,配置prompt_command环境变量,用户登陆bash后,每次执行命令前,先执行prompt_command环境变量中给出的命令;通过trap命令设置,用户在执行命令时,调用命令信息收集函数来收集此次命令执行的相关信息。

4.根据权利要求2所述的实时...

【专利技术属性】
技术研发人员:左鹏徐士强王禹博白浩良肖培玉
申请(专利权)人:浪潮云信息技术股份公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1