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

1、前言

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

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

2、配置

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

[[email protected] ~]# which script
/usr/bin/script

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

[[email protected] ~]# 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文件中就完事了,目录都没创建呢:

[[email protected] ~]# mkdir /var/log/script

#最好给个777的权限,我用744的权限反正也生效
[[email protected] ~]# chmod 777 /var/log/script/

2.4 使环境生效

[[email protected] ~]# source  /etc/profile

3、验证

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

[[email protected] ~]# cd /var/log/script/
[[email protected] 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来回放一下操作,看下效果如保:

[[email protected] script]# scriptreplay root-0-201712221545.date root-0-201712221545.log

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

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

时间: 2024-08-04 11:52:55

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

linux 进程审核 记录用户操作记录

1,安装psacct m –y install psacct2启动服务/etc/init.d/psacct start3,激活进程审核touch /var/log/pactaccton /var/log/pact [[email protected] ~]# ac        total      324.67[[email protected] ~]# ac -p        root                               324.25        birdman

Linux 系统监控、诊断工具-top,vmstat,iostat,iotop

1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器硬件配置一样,部署的软件都一样,却单单这一台负载有问题,初步猜测可能硬件有问题了. 同时,我们还需要把负载有异常的罪魁祸首揪出来,到时候从软件.硬件层面分别寻找解决方案. 2.排查: 从 top 中可以看到 load average 偏高,%wa 很高,%us 偏低: 从上图我们大致可以推断 IO

linux 系统监控、诊断工具之 IO wait

1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器硬件配置一样,部署的软件都一样,却单单这一台负载有问题,初步猜测可能硬件有问题了. 同时,我们还需要把负载有异常的罪魁祸首揪出来,到时候从软件.硬件层面分别寻找解决方案. 2.排查: 从 top 中可以看到 load average 偏高,%wa 偏高,%us 很低: 充分说明这个问题是由于 IO

[转]linux 系统监控、诊断工具之 IO wait

1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器硬件配置一样,部署的软件都一样,却单单这一台负载有问题,初步猜测可能硬件有问题了. 同时,我们还需要把负载有异常的罪魁祸首揪出来,到时候从软件.硬件层面分别寻找解决方案. 2.排查: 从 top 中可以看到 load average 偏高,%wa 很高,%us 偏低: 从上图我们大致可以推断 IO

linux系统监控常用工具

linux系统监控常用工具 一.系统核心工具包(coreutils) 1./bin/df 报告系统的磁盘空间用量 df -h  显示磁盘分区fdisk -l 2./bin/uname 显示系统信息 uname -srvmo 二.系统进程工具包(procps) 1./bin/ps 显示系统进程 ps -ef      ps aux 2./usr/bin/pgrep 过滤显示系统进程 3./usr/bin/free 显示系统内存的使用 4./usr/bin/vmstat 报告虚拟内存的统计信息 5.

常用的linux系统监控命令

常用的linux系统监控命令 博客分类: linux 服务器 记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了 找到最耗CPU的java线程 ps命令 命令:ps -mp pid -o THREAD,tid,time   或者  ps -Lfp pid 结果展示: 这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息. 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列. 比如这里找到

权限管理禁止用户su - root并记录用户操作记录实验!

本文目的:整理在实验环境中配置的禁止普通用户用su - root来获取root权限的操作记录.实验还添加了history添加用户详细记录,并配置了使用script记录用户操作,和测试用户操作还原的过程. 一.修改禁止su - root权限的配置:1.修改PAM配置文件:#vi /etc/pam.d/su#%PAM-1.0auth            sufficient      pam_rootok.so# Uncomment the following line to implicitly

Linux系统学习之用户与用户组

在Linux中,每个用户都拥有一个唯一的用户名和与之相关的用户标识符(UID,数值型).一个用户可以属于多个用户组,每个用户组都拥有唯一一个名称和一个用户组标识符(GID,数值型). UID和GID的主要用途有:一,确定各种系统资源的所有权:二,对赋予进程访问资源的权限进行控制. 说起用户和用户组,就必须谈谈相关的系统文件:/etc/passwd./etc/shadow和/etc/group.这些文件在Linux系统上都是以纯文本的形式存储.我们可以使用编辑器来修改它,也可以使用专有的命令来更改

如何从Linux系统中删除用户账户

在服务器上维护用户就是添加.修改以及删除用户.当一个用户出于某种原因不再需要登录系统时,我们需要删除此用户以避免安全漏洞.在Linux系统上,我们用userdel命令来删除一个用户.推荐学习Linux视频教程. userdel是什么 userdel 是一个底层用于删除用户的工具.在 Debian 上,我们通常会使用 deluser 命令.userdel 会查询系统账户文件,例如 /etc/password 和 /etc/group.那么它会删除所有和用户名相关的条目.在我们删除它之前,用户名必须