auditd可精准监控/tmp和/var/tmp目录的异常变动,包括非root用户创建可执行文件、高频小文件写入、目录清空、权限修改及静默替换等行为,并通过持久化规则和ausearch命令实现高效溯源与检测。

监控 /tmp 和 /var/tmp 这类临时目录的异常变动,是发现恶意驻留、横向移动或清理痕迹的关键切入点。攻击者常利用这些目录释放 payload、写入恶意脚本、或删除作案证据;而 auditd 能捕获底层系统调用,绕过 shell 层面的隐藏行为。
明确监控目标与风险场景
临时目录的高危行为不止是“文件被删”,更包括:
– 非 root 用户创建可执行文件(如 /tmp/shell.elf)
– 大量小文件高频写入(内存马落地前的试探)
– 突然清空整个目录(掩盖痕迹)
– 修改关键临时文件的属主/权限(提权准备)
– 通过 renameat 或 unlinkat 实现静默替换
配置精准审计规则(持久化)
避免使用 -p rwa 全权限监控,否则日志爆炸。应聚焦高危系统调用,并限定路径:
- 监控
/tmp下所有写入与属性变更:-w /tmp/ -p wa -k tmp_dir_change - 监控
/var/tmp/同样策略:-w /var/tmp/ -p wa -k vartmp_dir_change - 捕获所有删除类操作(覆盖
rm、unlink、rename等):-a always,exit -F arch=b64 -S unlink,unlinkat,rmdir,rename,renameat -F dir=/tmp/ -k tmp_file_deletion - 记录非 root 用户在
/tmp中执行文件的行为:-a always,exit -F arch=b64 -S execve -F dir=/tmp/ -F uid!=0 -k tmp_unpriv_exec
将以上规则写入 /etc/audit/rules.d/tmp.rules,再执行:sudo augenrules --load
快速识别异常行为的查询命令
不用翻日志,直接按意图检索:
- 查过去 1 小时内谁清空了
/tmp:sudo ausearch -k tmp_file_deletion -ts recent -i | grep -E "(rmdir|unlinkat)" | grep -A 1 -B 1 "cwd.*\/tmp" - 找非 root 用户在
/tmp执行了什么:sudo ausearch -k tmp_unpriv_exec -i | awk '/exe/{print $NF} /comm=/{print $NF}' | sort -u - 看是否有大量短命文件创建+删除(典型 loader 行为):
sudo ausearch -k tmp_dir_change -m PATH -ts today | grep -c "name.*\.tmp\|name.*[0-9]\{8\}"
配套加固建议
auditd 是探测器,不是防火墙。需配合以下措施提升实效性:
- 设置
/tmp为noexec,nosuid,nodev(在/etc/fstab中挂载选项) - 定期检查
/tmp下 SUID/SGID 文件:find /tmp -type f \( -perm -4000 -o -perm -2000 \) 2>/dev/null - 启用
systemd-tmpfiles自动清理策略,防止目录长期堆积 - 对已发现的可疑进程,用
sudo cat /proc/<pid>/environ</pid>查环境变量,确认是否带编码参数











