auditd可精准监控系统级定时任务文件及目录的读写执行与属性变更,需为/etc/crontab、/etc/cron.d/等每个路径单独配置-w规则并设-p rwxa,通过-k统一标识便于ausearch检索,规则存入/etc/audit/rules.d/后执行augenrules --load生效。

Auditd 可以精确监控对 /etc/cron.d/、/etc/crontab、/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/ 等系统级定时任务目录和文件的访问行为,包括读取、写入、执行、属性修改等操作。关键在于使用 -w(watch)规则配合恰当的权限标志,并确保覆盖所有相关路径。
监控核心定时任务目录和文件
为全面捕获访问,需为每个关键路径单独添加审计规则。推荐在 /etc/audit/rules.d/ 下新建规则文件(如 99-cron-access.rules),内容如下:
-w /etc/crontab -p rwxa -k cron_config-w /etc/cron.d/ -p rwxa -k cron_d_dir-w /etc/cron.daily/ -p rwxa -k cron_daily_dir-w /etc/cron.weekly/ -p rwxa -k cron_weekly_dir-w /etc/cron.monthly/ -p rwxa -k cron_monthly_dir-w /etc/cron.hourly/ -p rwxa -k cron_hourly_dir
其中 -p rwxa 表示监控 read(读)、write(写)、execute(执行)、attribute change(属性变更),-k 指定统一的审计键(key),便于后续用 ausearch -k cron_config 等命令快速检索。
注意递归监控与子目录行为
Auditd 的 -w 不自动递归子目录,但对目录设置 -p rwxa 时,以下操作会被记录:
- 在该目录中创建、删除、重命名文件(触发 write 权限)
- 修改目录内任意文件的内容或权限(触发 write 或 attribute change)
- 执行目录下的脚本(若该脚本被 execve 调用,且其路径匹配 watch 规则)
无需为每个子目录(如 /etc/cron.d/myjob)单独加规则——只要父目录已设 watch,其内部文件的访问事件就会被关联捕获(前提是访问动作触发了被监控的权限类型)。
启用规则并验证是否生效
添加规则后执行:
-
sudo augenrules --load(重载所有/etc/audit/rules.d/*.rules并应用) - 或手动
sudo auditctl -e 0 && sudo auditctl -R /etc/audit/rules.d/99-cron-access.rules && sudo auditctl -e 1
验证方式:
- 运行
sudo auditctl -l | grep cron查看规则是否已加载 - 手动测试:如
sudo touch /etc/cron.d/test或sudo cat /etc/crontab - 立即检查日志:
sudo ausearch -k cron_config -i | head -10,应看到 type=SYSCALL 记录,含 comm(调用命令)、exe(执行路径)、path(被访问路径)等字段
补充建议:避免遗漏 systemd timer 和权限绕过
传统 cron 目录之外,还需注意:
- systemd 定时器配置位于
/etc/systemd/system/*.timer和/usr/lib/systemd/system/*.timer,如需统一监控,应额外添加对应-w规则 - 普通用户可能通过
crontab -e修改自己的表,但该操作不直接触碰系统目录,而是更新/var/spool/cron/下的文件——若需监管用户级定时任务,需单独监控该路径 - 某些工具(如
vim编辑时生成临时文件)可能触发多次事件,关注name字段可区分真实目标文件与临时副本










