如何设置linux的系统日志审计功能

在linux系统中可通过history查看用户所有的历史操作记录的,并且操作命令都会存在.bash_history文件中,通过查看这个文件可以查到所有的执行命令,有助于运维的审查和历史排查,但是在黑客入侵的时候也很可能会被黑客利用,也会删除这个文件,毁灭痕迹,我们为了保护历史执行命令,下面我们介绍安全设置。

让history记录shell命令的执行时间设置

修改/etc/bashrc文件

HISTFILESIZE=4000
HISTSIZE=4000
HISTTIMEFORMAT='%F %T'
export HISTTIMEFORMAT

其中,HISTFILESIZE定义了在.bash_history文件中保存命令的记录总数,默认值是1000,这里设置为4000;HISTSIZE定义了history命令输出的记录总数;HISTTIMEFORMAT定义时间显示格式,这里的格式与date命令后的“+"%F %T"”是一致的;HISTTIMEFORMAT作为history的时间变量将值传递给history命令。

设置完之后在执行history命令就可以看到命令的执行时间了

为了防止篡改下面我们设置系统变量来实现记录操作的用户、IP地址、shell命令以及操作时间等,并将这些信息以文件保存在一个自定义的一个安全的地方,可以供运维人员系统审计和故障排查等。

下面是变量设置的内容

#history
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
HISTDIR=/usr/share/.history
if [ -z $USER_IP ]
then
USER_IP=`hostname`
fi
if [ ! -d $HISTDIR ]
then
mkdir -p $HISTDIR
chmod 777 $HISTDIR
fi
if [ ! -d $HISTDIR/${LOGNAME} ]
then
mkdir -p $HISTDIR/${LOGNAME}
chmod 300 $HISTDIR/${LOGNAME}
fi
export HISTSIZE=4000
DT=`date +%Y%m%d_%H%M%S`
export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"
export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"
chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null

实现的效果

发表评论

后才能评论