dmli的博客小屋

专注IT运维

linux操作日志审计

一、思路

1、将每个用户的操作记录实时保存到日志文件。

2、日志记录时间、用户、操作命令等信息。

3、保证日志文件不能被删除、任何用户都能写入,方便查找及维护。

二、示例

以ubuntu18系统为例,在 /etc/profile 下添加以下两行:

export HISTORY_FILE=/var/log/history/history.log
export readonly PROMPT_COMMAND='{ date "+%Y-%m-%d %T $(who am i |awk "{print \$1\" \"\$5}") $(history 1 | { read x cmd; echo "$cmd"; })"; } >> $HISTORY_FILE'

创建日志文件,并赋予最小化权限:

mkdir -p /var/log/history
touch /var/log/history/history.log
chown nobody:nogroup /var/log/history/history.log
chmod 002 /var/log/history/history.log
chattr +a /var/log/history/history.log

执行profile,验证命令是否写入日志文件:

source /etc/profile
echo helloworld

配置logrotate,每天进行日志文件切割:

cat > /etc/logrotate.d/history <<EOF
/var/log/history/history.log {
daily
rotate 365
compress
dateext
missingok
notifempty
sharedscripts
prerotate
  chattr -a /var/log/history/history.log
endscript
postrotate
  touch /var/log/history/history.log
  chown nobody:nogroup /var/log/history/history.log
  chmod 002 /var/log/history/history.log
  chattr +a /var/log/history/history.log
endscript
}
EOF

prerotate和postrotate分别表示滚动切割前和切割后执行的脚本,用来保证文件属性不变。


发表评论:

Copyright© dmli 2015-2019