bash linux_Linux中bash的奇技淫巧:历史命令实现用户行为审计

a3342d90fed84c3e864f6eb8832406f9

用bash的history特性实现linux用户行为审计

1.Bash的历史命令特性

liunx的bash为用户提供了历史命令的功能:可将所执行的操作保存下来,当bash退出时,将其缓存的命令写入到用户家目录下的.bash_history文件中。

历史命令的知识点:(1)默认当bash退出时,缓存的历史命令被写入到~/.bash_history。

(2)每一个用户都将在其家目录下拥有一个.bash_history的文件,该文件中记录该用户的不同终端上的“历史命令”。

(3)历史命令的保留条目是可控制的,系统默认是1000条。


2.用户行为审计的实现

基于以上对bash的history特性的介绍,我们可以通过历史命令功能,来对用户的行为做审计。

实现思路:

(1)将每个用户的历史命令收集到root用户下的某个文件中,该文件存放在以用户名命令的目录中;

(2)然后给历史命令添加上必要的字段,例如,命令访问时间,命令执行的用户等,使其变成日志的形式;

(3)开启历史命令的实时刷新功能,让用户的行为升级变成实时的效果。

(4)修改历史命令的保留条目,限制审计日志的文件大小。

实现方法:

(1)在环境变量文件/etc/profile文件中添加一下脚本,使其完成日志的集中收集。

[root@localhost ~]# vim /etc/profile​if [ ! -d /usr/local/domob/record/${LOGNAME} ]then    mkdir -p /usr/local/domob/record/${LOGNAME}    chmod 300 /usr/local/domob/record/${LOGNAME}fi export HISTORY_FILE="/usr/local/domob/record/${LOGNAME}/.bash_history"export PROMPT_COMMAND='{ date "+%Y-%m-%d %T ##### $(who am i |awk "{print $1" "$2" "$5}") #### $(history 1 | { read x cmd; echo "$cmd"; })"; } >>$HISTORY_FILE'[root@localhost ~]# source /etc/profile

(2)给日志文件添加权限,使得日志文件用户可以访问但不能修改。

[root@localhost ~]# chmod 777 /usr/local/domob/record/  [root@localhost ~]# chmod +t /usr/local/domob/record/     

测试效果:

创建普通用户test:[root@localhost ~]# useradd test[root@localhost ~]# passwd test切换到test执行命令:[root@localhost ~]# su - test[test@localhost ~]$ pwd [test@localhost ~]$ ls[test@localhost ~]$ touch test退出用户看效果:[test@localhost ~]$ exit
a016c489690a42269d15b9507a8088a8

在record下将产生两个日志目录

20afcdb2d055495f88848f868f4a8d1b

日志目录中定义的是用户历史命令的保存文件

b90538d472f147cd9b187f600c85b3d6

root的日志审计结果

591e7e878eca4e4f8c6a208b8f442a69

普通用户test的审计结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值