前言
我们需要记录bash操作的指令,不管是root帐号,还是其他普通用户的帐号,都需要记录.
然后发送到远程端统一审计.
最终实现了以下的功能:
- 记录操作指令到/var/log/messages, 对于普通用户同样支持.
- 根据key的指纹区分登录的用户.
- 记录了来源IP.
- 新增了bash.spec文件, 如果你需要自己下载源码,可以参照去修改打包.
环境介绍
系统: CentOS Linux release 7.2.1511 (Core)
bash版本: bash 4.4
操作说明
修改bash-4.4.tar.gz 源码包
修改 config-top.h 文件
开启下面的两个注释选项,最终修改如下
|
修改 bashhlist.c 文件
大约在文件的756行到777行, 我们注释 bash_syslog_history 函数,添加我们自己修改的,最终修改如下
|
|
之后重新打成tar.gz包, 注意的是,新包命名成bash-audit-4.4.tar.gz
.因为这样是避免升级系统的bash
, 我们将会把这个bash
打包成bash-audit
.
可以通过文章最后的链接去下载.
dot_bash-audit.sh 文件
这个文件主要的作用是根据你的key指纹得到登录用户是谁, 其实最终的目的就是设置2个环境变量 NAME_OF_KEY
和 SSH_CLIENT_HOST
.
- NAME_OF_KEY : 记录的是登录用户的用户名
- SSH_CLIENT_HOST : 记录的是来源IP
内容如下,你也可以根据自己的需求更改
dot_bash-audit.sudoer 文件
设置sudo权限, 因为上面的 dot_bash-audit.sh
脚本中,需要通过查找 /var/log/messages
或者 /var/log/secure
文件中的指纹来获取登录的用户信息的.
但是这2个文件,普通账户都没有权限查看,所以为了也记录普通帐号的操作,需要普通帐号有权限查看这2个文件.
这个文件放置的位置在 /etc/sudoers.d/bash-audit
请注意:如果你的sshd_config
中设置的 SyslogFacility
的值不在AUTHPRIV
或者AUTH
设备,那需要你自己修改下面的权限.
bash-audit.spec 文件
提供了一个模板,最终安装的位置在 /usr/local/bash-audit-4.4
, 注意安装的时候,有修改帐号的 shell 的.如果你不需要,请取消.
使用下面的指令打包
最终应该会生成如下包
修改 /etc/ssh/sshd_config 文件
修改的值如下,记得修改之后,重启sshd服务.
SyslogFacility 这个值影响了用户登录时,sshd产生的日志信息的位置,日志的位置变动了,同样的
/etc/profile.d/bash-audit.sh
脚本中sshd_log_file
的变量也需要同样的修改.
请按下面的对应表设置 ‘sshd_log_file’ 变量的值
- AUTHPRIV: /var/log/secure
- AUTH: /var/log/messages
如果你设置了其他值, 请对应的修改脚本上的 ‘sshd_log_file’ 变量的值, 同时把对应的权限添加到 /etc/sudoers.d/bash-audit
如何获取
代码并没托管到github, 可以通过下面的点击下载
- 所有的代码包bash-audit-4.4.zip
- 打好的rpm包bash-audit-4.4-1.el7.centos.x86_64.rpm
结果
最终可以得到的结果
你可以把这个结果发送到远程端.