下一步 3 步曲
-
装 auditd → 立规则 → 明天拿日志。
-
把全天 cron 再扫一遍(含
/etc/cron.d/和 systemd timer)。 -
宝塔面板里把“计划任务”截图或导出,确认有无隐藏条目。
⚡ 小结
账号清白;缺审计日志;装 auditd 守株待兔,再扫一遍 cron 和面板任务,就能定位真凶。
当前模型仅对图片中的文字进行识别,切换 K1.5 获取更好的视觉理解能力
装 auditd 怎么安装
一条命令即可(Ubuntu/Debian 系):
bash
apt update && apt install auditd audispd-plugins -y
装完后先让 auditd 守护进程跑起来,再给你要盯的文件加“写监控”:
bash
# 启动并设为开机自启
systemctl enable --now auditd
# 立刻把两个老被篡改的核心文件纳入监控
auditctl -w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write
auditctl -w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write
# 如果想重启后也生效,写进规则文件
echo '-w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write' >> /etc/audit/rules.d/audit.rules
echo '-w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write' >> /etc/audit/rules.d/audit.rules
systemctl restart auditd
常用后续命令
bash
# 看今天谁改过这两个文件
ausearch -k wp-core-write -i --start today
# 实时跟踪(另开终端)
tail -f /var/log/audit/audit.log | grep wp-core-write
装完让它跑 24 小时,下次文件再被“神奇”替换时,日志里会精确记录:
-
时间戳
-
进程 PID / 执行文件路径
-
用户 UID
就能抓到真凶。
这样安装好了吗
没有,auditd 其实还没装上。
看提示:
看提示:
Command 'auditctl' not found, but can be installed with: apt install auditd
Failed to restart auditd.service: Unit auditd.service not found.
✅ 一次性把 auditd 真正装好
bash
# 1. 更新软件源并安装
apt update && apt install auditd audispd-plugins -y
# 2. 启动并设为开机自启
systemctl enable --now auditd
# 3. 确认守护进程已运行
systemctl status auditd # 看到 active (running) 就对了
# 4. 现在再加监控规则
auditctl -w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write
auditctl -w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write
# 5. 持久化(重启仍有效)
mkdir -p /etc/audit/rules.d
echo '-w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write' > /etc/audit/rules.d/wp.rules
echo '-w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write' >> /etc/audit/rules.d/wp.rules
systemctl restart auditd
🔍 验证
bash
auditctl -l # 应能看到刚加的两条规则
ausearch -k wp-core-write -i --start today # 今天暂无记录也正常,明天再查
出现
active (running) 且 auditctl -l 能列出规则,就代表 auditd 真正装好了,可以 24 小时守株待兔。当前模型仅对图片中的文字进行识别,切换 K1.5 获取更好的视觉理解能力
现在呢
从滚动日志看,apt update 已成功完成,但 auditd 的实际安装/启动结果 还没出现——终端停在了 “Fetched 10.2 MB” 这一步,命令还没跑完。
✅ 接下来 30 秒按顺序做完
-
等它提示
Reading database ... done并回到命令行
(如果卡很久,直接Ctrl+C中断,再重新执行下面第 2 步)
-
一次性补完剩余步骤(复制整块回车即可):
bash
# 真正安装 auditd
apt install auditd audispd-plugins -y
# 启动并开机自启
systemctl enable --now auditd
# 确认状态
systemctl status auditd --no-pager -l
# 加监控规则
auditctl -w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write
auditctl -w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write
# 持久化
mkdir -p /etc/audit/rules.d
echo '-w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write' > /etc/audit/rules.d/wp.rules
echo '-w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write' >> /etc/audit/rules.d/wp.rules
systemctl restart auditd
# 验证
auditctl -l
-
如果
auditctl -l能列出两条规则,就 彻底完成,24 小时后用
ausearch -k wp-core-write -i --start today看是谁动了文件。
当前模型仅对图片中的文字进行识别,切换 K1.5 获取更好的视觉理解能力
刚才的命令没有跑完现在跑完是这样
很好!auditd 已经真正装好并跑起来了——看到最后一行:
Active: active (running) since Thu 2026-01-08 04:56:36 UTC
说明守护进程正常启动,可以开始监控文件写入了。
✅ 接着把监控规则一次性补完(复制即可)
bash
# 1. 对两个核心文件加写监控
auditctl -w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write
auditctl -w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write
# 2. 持久化(重启仍生效)
mkdir -p /etc/audit/rules.d
echo '-w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write' > /etc/audit/rules.d/wp.rules
echo '-w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write' >> /etc/audit/rules.d/wp.rules
# 3. 重启加载规则
systemctl restart auditd
# 4. 验证规则已生效
auditctl -l
如果
auditctl -l 能列出两条规则,就 全部完成。🕒 接下来
静待 下一次文件被篡改(通常 24h 内),然后执行:
bash
ausearch -k wp-core-write -i --start today
就能精确看到:
-
哪一秒
-
哪个进程 PID
-
哪个可执行文件
-
哪个 UID
把凶手当场抓住。
当前模型仅对图片中的文字进行识别,切换 K1.5 获取更好的视觉理解能力
整理这些文件的核心内容
核心内容一句话:auditd 已正常运行,两条写监控规则也生效,但路径打错导致重复报错——修正后即可 24 小时守株待兔。
✅ 当前状态
| 项目 | 结果 |
|---|---|
| auditd 守护进程 | active (running) |
| 监控规则 | 已加载(auditctl -l 能列出) |
| 错误提示 | Rule exists + 路径拼写错误,无功能影响 |
⚠️ 需要修正的 typo
bash
# 1. 删除旧规则(避免重复)
auditctl -D
# 2. 重新添加正确路径
auditctl -w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write
auditctl -w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write
# 3. 同步到持久化规则文件
echo '-w /www/wwwroot/zmzqw.com/wp-blog-header.php -p wa -k wp-core-write' > /etc/audit/rules.d/wp.rules
echo '-w /www/wwwroot/zmzqw.com/wp-includes/template-loader.php -p wa -k wp-core-write' >> /etc/audit/rules.d/wp.rules
# 4. 重载
systemctl restart auditd
auditctl -l # 确认无报错
🕒 接下来
静待文件再次被篡改,然后执行:
bash
ausearch -k wp-core-write -i --start today
即可看到 精确时间、进程 PID、可执行文件路径、UID——把真凶当场抓住。
当前模型仅对图片中的文字进行识别,切换 K1.5 获取更好的视觉理解能力
解释一下图片内容
图片内容一句话:auditd 规则加载成功,但输出格式让人误以为“No rules”——实际上两条监控规则已生效,可以正常抓凶手了。
🔍 逐行拆解
| 行 | 含义 |
|---|---|
auditctl -D |
清空了内存里所有旧规则(所以第一条回显是空的) |
auditctl -w ... ×2 |
重新添加对 wp-blog-header.php 和 template-loader.php 的写监控 |
echo ... > /etc/audit/rules.d/wp.rules |
把规则写进持久化文件,重启仍有效 |
systemctl restart auditd |
重载服务 |
auditctl -l |
列出当前内存中的规则——最后两行就是刚加的两条,前面出现的 No rules 只是 空列表提示符,不是报错。 |
✅ 结论
-
规则已生效,不会再报
Rule exists。 -
接下来 静待文件被篡改(通常 24h 内),然后执行:bash
ausearch -k wp-core-write -i --start today就能抓到 精确时间、进程 PID、可执行文件路径、UID——把真凶现场锁定。
当前模型仅对图片中的文字进行识别,切换 K1.5 获取更好的视觉理解能力
好的,到时候有问题我在这里问你
没问题!
24 小时内如果
24 小时内如果
wp-blog-header.php 或 template-loader.php 又被改写,直接把下面两条结果发给我:bash
ausearch -k wp-core-write -i --start today
我会帮你:
-
一眼看出是哪个进程、哪个用户、哪条命令干的;
-
告诉你下一步怎么封掉入口、怎么清掉后门。
随时在这里 @ 我,守株待兔成功后再来抓凶手!
肖兴来个人博客
