编译bash通过Rsyslog记录执行命令日志,并将日志发送到Elastic Stack,实现history审计

此前考虑通过PROMPT_COMMAND环境变量实现history审计,后来发现存在各种问题,就如使用su切换用户时,前后执行的命令不能被准确记录。

看了许多文章,最终找到一种相对完善的处理方法,就是通过编译bash,由Rsyslog记录执行命令日志。之后配置实时将日志数据输出到Elastic Stack,在Kibana上可以监控终端上执行的每一条命令,或对日志数据作分析和审计。

继续阅读“编译bash通过Rsyslog记录执行命令日志,并将日志发送到Elastic Stack,实现history审计”

bash的命令执行状态返回值

系统版本:

[root@node1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.1.1503 (Core) 
[root@node1 ~]# uname -r
3.10.0-229.el7.x86_64

 
bash通过状态返回值来输出命令执行的状态结果,如成功,输出“0”值;失败,输出“1”“255”之间的一个值。

命令执行完成之后,其状态返回值保存在bash的特殊变量$?中。

示例:

[root@node1 ~]# ls
anaconda-ks.cfg
[root@node1 ~]# echo $?
0
[root@node1 ~]# ls /etcc
ls: cannot access /etcc: No such file or directory
[root@node1 ~]# echo $?
2
[root@node1 ~]# lsss /etc
-bash: lsss: command not found
[root@node1 ~]# echo $?
127