linux系统监控:记录用户操作轨迹,谁动过服务器

1、前言

      我们在实际工作当中,都碰到过误操作、误删除、误修改过配置文件等等事件。对于没有堡垒机的公司来说,要在linux系统上深究到底谁做过配置文件的修改、做过误删除是很头疼的事情,特别是遇到删库跑路的事件,更头大了。当然你可以通过history来查看历史命令记录,如果把history记录涂抹掉了,是不是啥也看不到了,如果你想查看在某个时间段到底是谁通过vim编辑过某个文件呢?

      那么,有什么办法可以看见这些操作呢,答案是一定有的,具体怎么实现呢,linux script命令正有如此强大的功能,可以满足我们的需求,script可以记录终端会话,只要是linux6.3以上的系统,都会自带script命令,下面我用centos 7系统来测试一下。


2、配置

2.1 验证script命令(我这里是有的)

1
2
[root@localhost ~] # which script
/usr/bin/script


2.2 配置profile文件,在末尾添加如下内容:

1
2
3
4
5
[root@localhost ~] # vim /etc/profile
 
if  [ $UID - ge  0 ];  then
         exec  /usr/bin/script  -t 2> /var/log/script/ $USER-$UID-` date  +%Y%m%d%H%M`. date  -a -f -q  /var/log/script/ $USER-$UID-` date  +%Y%m%d%H%M`.log
fi
参数:
    -t    指明输出录制的时间数据
    -f     如果需要在输出到日志文件的同时,也可以查看日志文件的内容,可以使用 -f 参数。PS:可以用于教学,两个命令行接-f可以实时演示
    -a     输出录制的文件,在现有内容上追加新的内容
    -q     可以使script命令以静默模式运行


如下图所示:

说明:

用户登录执行的操作都会记录到/var/log/script/*.log  里(保存日志的目录根据你自己定义),我们可以通过more、vi等命令查看目录里的日志。


注意:

  • 我这里把用户ID大于0的都记录下来了,你可以重新登录用户,随便操作一些命令,查看生成的文件。

  • root用户的ID为0,新建普通用户的UID是从500开始的(通过cat /etc/password可以查看用户的UID),如果你不想记录root用户的操作,你把if里面的值改成500:  if [ $UID - ge 500 ];


2.3 创建目录、赋予权限

    你是不是以为写了这条if语句在/etc/profile文件中就完事了,目录都没创建呢:

1
2
3
4
[root@localhost ~] # mkdir /var/log/script
 
#最好给个777的权限,我用744的权限反正也生效
[root@localhost ~] # chmod 777 /var/log/script/


2.4 使环境生效

1
[root@localhost ~] # source  /etc/profile


3、验证

    好了,你可以退出linux终端,在重新登录一下,然后随便敲几个命令来看看。

1
2
3
4
5
6
7
[root@localhost ~] # cd /var/log/script/
[root@localhost script] # ll
total 16
-rw-r--r-- 1 root root   68 Dec 22 15:46 root-0-201712221545. date
-rw-r--r-- 1 root root  111 Dec 22 15:46 root-0-201712221545.log
-rw-r--r-- 1 root root    0 Dec 22 15:46 root-0-201712221546. date
-rw-r--r-- 1 root root 5693 Dec 22 15:46 root-0-201712221546.log

从上图可以看到,在/var/log/script目录中,已经产生了log和data为后缀的文件,并且还看到了root用户和UID号0。

    .log:记录了操作

    .data:可以回放操作


我们用scriptreplay来回放一下操作,看下效果如何:

1
[root@localhost script] # scriptreplay root-0-201712221545.date root-0-201712221545.log

注意:先指定“时间文件 .data”,然后是“命令文件 .log”,不要颠倒了

以上就完也了记录用户的所有操作,并且还可以随时查看,相当于有回放功能,像录像一样,以后定位是谁的问题就好找原因了。



本文转自甘兵 51CTO博客,原文链接:http://blog.51cto.com/ganbing/2053636,如需转载请自行联系原作者

你可能感兴趣的:(linux系统监控:记录用户操作轨迹,谁动过服务器)