Centos记录所有用户登录和操作的详细日志

1、起因

​ 最近Linux服务器上一些文件被篡改,想追查已经查不到记录了,所以得想个办法记录下所有用户的操作记录。

​ 一般大家通常会采用history来记录,但是history有个缺陷就是默认是1000行,当然你也可以vim /etc/profile将1000修改成1000000行,但是这只是比较笼统的做法,看不到详细的用户来源已经操作记录,比如来源ip地址、操作时间、操作用户等。

2、环境准备

1
2
3
cat  /etc/passwd              #查看可以登录的用户
mkdir -p /var/log/history/admin #创建可登录用户的目录
chown -R admin:admin /var/log/history/admin #给各个用户赋予权限

3、自动记录脚本

在/etc/profile文件的末尾追加编写脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#set user history
history
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}
chown -R ${LOGNAME}:${LOGNAME} /var/log/history/${LOGNAME}
chmod 770 /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 660 /var/log/history/${LOGNAME}/*history* 2>/dev/null

最后刷新配置

1
source   /etc/profile

而每次用户登录到退出都会产生以用户名、登录ip地址、操作时间为文件名的文件,文件里面包含本次用户的所有操作记录。

参考文章:https://www.cnblogs.com/harlanzhang/p/10273379.html