auditd监控systemd单元文件及操作是发现持久化后门最可靠方式之一,需审计/etc/systemd/system/、/usr/lib/systemd/system/、/run/systemd/system/的写入与属性变更,并监控systemctl enable/start等关键执行行为。

直接用 auditd 监控 systemd 单元文件和相关操作,是发现持久化后门最可靠的方式之一。攻击者常通过修改 .service 文件、创建恶意 unit、启用自启动或劫持依赖链来实现驻留,而这些行为都会触发底层系统调用,auditd 正好能捕获。
监控核心目标路径与操作类型
systemd 单元的持久化行为主要落在三类位置:系统级单元目录、用户级单元目录、以及运行时激活动作。需分别设置写入(w)和属性变更(a)审计:
- /etc/systemd/system/:管理员自定义服务首选位置,后门最爱藏身于此
- /usr/lib/systemd/system/:官方软件包安装的 unit 所在,异常新增或覆盖即高危
- /run/systemd/system/:运行时生成的临时 unit,重启即消失,但若被恶意脚本反复写入,说明有自动化驻留逻辑
-
systemctl 命令执行本身:如
systemctl enable、systemctl daemon-reload、systemctl start等,是后门激活的关键动作
添加精准审计规则(推荐持久化配置)
不要只用 auditctl -w 临时加,应写入规则文件并加载,确保重启不失效:
- 编辑
/etc/audit/rules.d/systemd.rules,加入以下内容:
-w /etc/systemd/system/ -p wa -k systemd_unit_change<br>-w /usr/lib/systemd/system/ -p wa -k systemd_unit_change<br>-w /run/systemd/system/ -p wa -k systemd_unit_change<br>-a always,exit -F path=/usr/bin/systemctl -F perm=x -k systemctl_exec<br>-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/systemctl -F a0=*enable* -k systemctl_enable<br>-a always,exit -F arch=b64 -S execve -F exe=/usr/bin/systemctl -F a0=*start* -k systemctl_start
- 执行
sudo augenrules --load加载规则,或重启auditd - 验证是否生效:
sudo auditctl -l | grep systemd应看到上述规则
快速定位可疑变动的常用查询命令
一旦怀疑存在后门,按时间+行为组合检索,比翻日志高效得多:
- 查最近 24 小时所有对 systemd 单元目录的写入或属性修改:
sudo ausearch -k systemd_unit_change -ts today -i | aureport -f -i - 查谁执行了
systemctl enable(含参数):sudo ausearch -k systemctl_enable -i | grep -A 2 -B 2 "exe.*systemctl" - 查非 root 用户(UID ≠ 0)却调用了 systemctl:
sudo ausearch -m SYSCALL -sc execve -F exe=/usr/bin/systemctl -F uid!=0 -i - 查新出现的 .service 文件(结合文件名特征):
sudo ausearch -k systemd_unit_change -m PATH -i | grep -E "\.service$" | head -20
识别典型后门痕迹的关键线索
不是所有记录都危险,重点看上下文是否违背运维常识:
-
陌生路径 + 非标准命名:如
/etc/systemd/system/backup-manager@.service(带@的模板服务,但无对应实例)或sysmon.service(非已知组件) - root 启动但 auid 是 1000+:说明是普通用户提权后操作,而非管理员直接执行
- daemon-reload 后立即 start:常见于攻击者部署完 unit 就立刻激活,日志中这两类事件时间戳极近
-
exe 路径异常:如
exe="/tmp/.X11-unix/sshd"却调用了 systemctl,明显是伪装进程 - 同一 IP 或终端短时间内多次 enable/start 不同 service:可能是批量植入脚本行为


















