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去定時清理日志!
以上,共勉!