Linux的用户行为审计
Linux用户行为审计
方式1
很多时候,一台服务器会有多个用户需要去登陆维护,或者执行各自的操作,这样一来各个用户的行为审计就显得格外重要了!
无论何时,都要对用户的所有行为做到记录和可追溯,这在解决一些疑难杂症的时候很有帮助,因为你不知道什么时候会有些牛鬼蛇神对机器做些匪夷所思的操作!
其实Linux系统他有自己的审计功能,不信你看:
[root@VM-75-60 audit]# pwd
/var/log/audit
[root@VM-75-60 audit]#
[root@VM-75-60 audit]# ll
total 27864
-rw------- 1 root root 3329179 Jul 25 21:50 audit.log
-r-------- 1 root root 6291591 Jul 8 04:01 audit.log.1
-r-------- 1 root root 6291652 Jun 4 14:50 audit.log.2
-r-------- 1 root root 6291598 May 2 02:00 audit.log.3
-r-------- 1 root root 6291466 Mar 29 02:40 audit.log.4
但这里面只有crond相关的东西,好像不太够,而且我也没找到去设置他的方法。
看看自定义的方式:
编辑/etc/profile文件,在末未添加:
if [ $UID -ge 0 ]; then
exec /usr/bin/script -t 2>/var/log/samba/$USER-$UID-`date +%Y%m%d%H%M`.date -a -f -q /var/log/samba/$USER-$UID-`date +%Y%m%d%H%M`.log
fi
此时我们去/var/log/ 创建test目录,并修改777权限。
为什么要用samba目录呢?
因为通常人们都把samba看作是共享目录,如果有黑客侵入,在做足迹清理的时候,希望被忽略~起到掩人耳目的作用~真他娘的是个天才
目录创建好以后,就能使配置生效了,执行指令:
[root@VM-75-60 audit]# source /etc/profile
执行完以后,我们去看目录的变化:
[root@VM_0_13_centos samba]# ll
total 116
-rw-rw-r-- 1 fmj fmj 1790 Jun 24 18:05 fmj-500-201906241803.date
-rw-rw-r-- 1 fmj fmj 11360 Jun 24 18:05 fmj-500-201906241803.log
-rw-rw-r-- 1 fmj fmj 127 Jun 24 18:24 fmj-500-201906241824.date
-rw-rw-r-- 1 fmj fmj 203 Jun 24 18:24 fmj-500-201906241824.log
-rw-rw-r-- 1 fmj fmj 12 Jun 24 18:27 fmj-500-201906241827.date
-rw-rw-r-- 1 fmj fmj 74 Jun 24 18:27 fmj-500-201906241827.log
-rw-r--r-- 1 root root 6307 Jun 24 18:32 root-0-201906241800.date
-rw-r--r-- 1 root root 63039 Jun 24 18:32 root-0-201906241800.log
-rw-r--r-- 1 root root 12 Jun 24 18:24 root-0-201906241824.date
-rw-r--r-- 1 root root 75 Jun 24 18:24 root-0-201906241824.log
我们从尝试打开:
[root@VM_0_13_centos samba]# vim fmj-500-201906241803.log
Script started on Mon 24 Jun 2019 06:03:32 PM JST
[fmj@VM_0_13_centos ~]$ ^M
[fmj@VM_0_13_centos ~]$ ll^M
total 0^M
[fmj@VM_0_13_centos ~]$ a^H^[[Kdate^M
Mon Jun 24 18:03:35 JST 2019^M
[fmj@VM_0_13_centos ~]$ ^M
[fmj@VM_0_13_centos ~]$ date -s ''^H2'^H0'^H1'^H9'^H-'^H6'^H-'^H2'^H4'^H '^H1'^H8'^H:'^H0'^H0'^H:'^H0'^H0'^H^[[C^M
date: cannot set date: Operation not permitted^M
Mon Jun 24 18:00:00 JST 2019^M
[fmj@VM_0_13_centos ~]$ date^M
Mon Jun 24 18:03:53 JST 2019^M
[fmj@VM_0_13_centos ~]$ ^M
[fmj@VM_0_13_centos ~]$ date^M
Mon Jun 24 18:03:54 JST 2019^M
[fmj@VM_0_13_centos ~]$ ll^M
你会发现这都是一些没有规则的字段,那么该如何使用这些文件追溯用户行为呢?
script重演
scriptreplay指令:
[root@VM_0_13_centos samba]# scriptreplay fmj-500-201906241803.date fmj-500-201906241803.log
[fmj@VM_0_13_centos ~]$ #从这里开始,都不是我执行的了,是在重演fmj用户的操作
[fmj@VM_0_13_centos ~]$ ll
total 0
[fmj@VM_0_13_centos ~]$ date
Mon Jun 24 18:03:35 JST 2019
[fmj@VM_0_13_centos ~]$
[fmj@VM_0_13_centos ~]$ date -s '2019-6-24 18:00:00'
date: cannot set date: Operation not permitted
Mon Jun 24 18:00:00 JST 2019
[fmj@VM_0_13_centos ~]$ date
Mon Jun 24 18:03:53 JST 2019
[fmj@VM_0_13_centos ~]$
[fmj@VM_0_13_centos ~]$ date
Mon Jun 24 18:03:54 JST 2019
[fmj@VM_0_13_centos ~]$
直到这里,就像视频回放一样!还不错 !
看起来还是很方便的,不过这里发现samba目录下的文件增长很快哦,所以还要注意下磁盘的大小,不能被写满了~
方式2
上面那种方式生成的文件比较大,还有种进记录操作日志的方法:
编辑/etc/profile文件:
添加如下内容:
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
保存退出:
source /etc/profile
使配置生效!
[root@VM_70_21_centos history]# pwd
/var/log/history
[root@VM_70_21_centos history]# ll
total 8
d-wx------ 2 bdbuser bdbuser 4096 Sep 5 17:48 bdbuser
d-wx------ 2 root root 4096 Sep 5 17:46 root
此时/var/log下会创建history目录,下面会有根据登录用户名区分的目录:
[root@VM_70_21_centos root]# ll
total 4
-rw------- 1 root root 1150 Sep 5 18:02 root@180.168.144.210_20190905_17:46:14
[root@VM_70_21_centos root]# pwd
/var/log/history/root
登录用户目录下,是记录对应登陆时间和操作指令的日志文件!
这里面仅仅包含操作指令,因此数据产出一般不会太大!
无论哪种方式都要密切关注磁盘的空间变化,同时应该设置crontab去定时清理日志!
以上,共勉!