Linux服务器日志审计需通过auditd内核级服务实现不可篡改记录,覆盖登录、命令执行、敏感文件访问等行为,并配合权限控制、日志轮转与异地备份保障合规性。
Linux 服务器访问日志审计不是“写”出来的,而是通过配置系统服务、定义监控规则、收集分析日志来实现的。核心目标是:谁、在什么时间、从哪台机器、访问了哪些资源(如文件、命令、服务)、做了什么操作(读/写/执行/登录等),且所有记录不可篡改、可追溯。
先搞清你要审什么,再找对应日志:
/var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS),记录SSH登录、sudo操作、密码失败等;HISTFILE不跨用户、易被清除,不可靠;必须依赖auditd捕获execve系统调用,真实记录每个bash、ls、curl等命令;/etc/passwd、/etc/shadow、/root/.ssh/,用auditd -w规则监控读写执行;/var/log/apache2/access.log或/var/log/nginx/access.log;数据库查/var/log/mysql/error.log或启用通用查询日志;/var/log/audit/audit.log记录,这是最权威的源头。仅靠应用日志(如auth.log)不够——它可被普通root删改;auditd直接挂钩内核,防篡改,才是审计基石:
systemctl enable --now auditd;/etc/audit/rules.d/cmd.rules):-a always,exit -F arch=b64 -S execve -k cmd_exec
-w /etc/passwd -p wa -k passwd_mod;
augenrules --load(不要用auditctl -a临时加,重启即失效);ausearch -k cmd_exec -ts recent | head -5,执行几个命令后应能查到记录。不用翻原始日志文件,用专用工具高效提取信息:
ausearch -ui 1001 -m execve | aureport -f -i(1001是UID);ausearch -k passwd_mod | aureport -f -i;ausearch -m avc -ts 2026-07-29 00:00:00 -te 2026-07-29 23:59:59 | grep denied;aureport -ts yesterday -te today --summary,一眼看出登录数、命令数、文件访问异常量。审计日志本身必须受保护,否则等于没审:
chmod 600 /var/log/audit/audit.log*,只允许root读写;/etc/logrotate.d/auditd中设maxsize 50M、rotate 12,避免撑爆磁盘;/var/log/audit/目录并同步到独立安全存储;echo "export HISTCONTROL=ignoredups:ignorespace" >> /etc/profile,配合auditd形成双重记录。