日常运维工作中,为了系统安全和操作溯源,经常会需要查询所有用户的登录和操作的详细日志,本文详细描述了具体的实现办法,适应于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
文章评论