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

2020年3月25日 432点热度 0人点赞 0条评论

日常运维工作中,为了系统安全和操作溯源,经常会需要查询所有用户的登录和操作的详细日志,本文详细描述了具体的实现办法,适应于linux 6、7所有的OS版本,只是最后一步的rsyslog服务重启方式有一点差异。实施之后在/var/log/目录的command.log和command_logs可以看到详细的登录和操作日志。

【本文档追求极致的全傻瓜式命令行操作,实施仅需1分钟,已在linux6、7两个大版本测试通过

■设置command history记录

cat >> /etc/profile << "EOF"
export HISTFILESIZE=2000
export HISTSIZE=2000
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; });logger -p local1.notice -t bash -i "user=$USER,ppid=$PPID,from=$SSH_CLIENT,pwd=$PWD,command:$command"; }'
EOF
source /etc/profile

■增加一个本地的日志策略local.notice,并设置该消息不通过messages输出

cat >> /etc/rsyslog.conf << EOF
local1.notice /var/log/command.log
EOF
sed -i 's/\*\.info;mail\.none;authpriv\.none;cron\.none/\*\.info;mail\.none;authpriv\.none;cron\.none;local1\.none/g' /etc/rsyslog.conf

■修改rsyslog时间格式

sed -i 's/$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat/#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat/g' /etc/rsyslog.conf
cat >> /etc/rsyslog.conf << "EOF"
$template myformat,"%$NOW% %TIMESTAMP:8:15% %hostname% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate myformat
EOF

■配置command.log

cat >> /etc/logrotate.d/local1 << EOF
/var/log/command.log{
       daily
       olddir /var/log/command_logs/
       create 0600 root root
}
EOF
mkdir -p /var/log/command_logs

■重启日志服务

service rsyslog restart
systemctl restart rsyslog

 

liking

我是雪人

文章评论