auditd可精准监控/var/www目录的写入和属性变更,通过规则文件、系统调用捕获及日志加固,实现内核级防篡改与不可抵赖审计。

直接用 auditd 监控 /var/www 目录的写入和属性变更,就能捕获所有非授权修改行为——包括上传木马、替换首页、注入恶意脚本等操作,且日志由内核生成,普通用户甚至 root 都无法绕过或静默删除。
一、添加精准监控规则(永久生效)
把以下规则写入 /etc/audit/rules.d/webprotect.rules:
-
-w /var/www/ -p rwxa -k web_tamper:递归监控整个网站根目录,记录读(r)、写(w)、执行(x)、属性变更(a)四类操作 -
-w /var/www/html/ -p rwxa -k web_html:若实际站点在 html 子目录,单独加一条更聚焦(避免误报其他子目录) -
-a always,exit -F arch=b64 -S openat,openat2,creat,write,writev -F dir=/var/www -k web_write_syscall:补充系统调用级规则,捕获绕过文件监控的低层写入(如某些 CGI 或 PHP 进程直写)
保存后运行:sudo augenrules --load 加载规则。无需重启服务,立即生效。
二、确认监控已启动并验证效果
执行命令检查规则是否加载成功:
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
-
sudo auditctl -l | grep "/var/www"—— 应看到对应规则行 -
sudo systemctl status auditd—— 确保服务处于 active (running) - 手动测试:
echo "test" > /var/www/test.html,再执行sudo ausearch -k web_tamper | tail -5,应能查到完整事件(含 UID、PID、命令路径、时间戳)
三、日常分析与告警建议
真实攻击往往伴随异常 UID 或陌生进程路径,可快速筛查:
- 查非 www-data/nginx 用户的写操作:
sudo ausearch -k web_tamper -ui 0-999 | grep -E "(uid|comm=)" - 查可疑进程名(如 php、curl、wget):
sudo ausearch -k web_tamper | grep -i "comm=.*\(php\|curl\|wget\|sh\)" - 导出最近1小时的 Web 修改汇总:
sudo aureport -f -ts recent-1h -k web_tamper
建议将 ausearch -k web_tamper -i --start today 加入每日巡检脚本,配合邮件或企业微信推送关键事件。
四、增强防篡改能力的关键配置
仅监控不够,还需防止日志本身被清理或覆盖:
- 设置日志权限:
sudo chmod 600 /var/log/audit/audit.log - 调整 auditd.conf:
sudo nano /etc/audit/auditd.conf,确保:-
max_log_file = 20(单个日志最大20MB) -
num_logs = 10(保留10个轮转日志) -
space_left_action = email(磁盘不足时发邮件告警) -
admin_space_left_action = halt(严重空间不足时停机保护)
-
- 定期异地备份:
sudo rsync -a /var/log/audit/ user@backup-server:/backup/audit/










