zrhe2016

auditd记录linux执行过的所有命令

1. 安装并启动 auditd

yum install audit -y
systemctl enable --now auditd
systemctl status auditd

2. 永久生效:写入规则文件

只记录手动输入的命令

cat >/etc/audit/rules.d/execve-auid.rules <<'EOF'
-a always,exit -F arch=b64 -S execve -S execveat -F auid>=0 -F auid!=4294967295 -k cmdlog
-a always,exit -F arch=b32 -S execve -S execveat -F auid>=0 -F auid!=4294967295 -k cmdlog
EOF
augenrules --load
systemctl restart auditd

3. 再次确认规则是否加载成功

auditctl -l

4. 常用查询方式

查看今天的 execve 记录

ausearch -sc execve --start today -i

只看最近的几条

ausearch -sc execve --start today -i | tail -n 50

一行命令显示

ausearch -sc execve --start today | \
awk '
/^time->/ {t=$0}
/type=EXECVE/{
  cmd=""
  for(i=1;i<=NF;i++){
    if($i ~ /^a[0-9]+=/){
      gsub(/^a[0-9]+=/,"",$i)
      gsub(/"/,"",$i)
      cmd=cmd $i " "
    }
  }
  print t "\nCMD: " cmd "\n----"
}'