必须覆盖全部 cron 入口点,为 /etc/crontab、/etc/cron.d/、/etc/cron.hourly/、/etc/cron.daily/、/etc/cron.weekly/、/etc/cron.monthly/ 分别配置 -w 路径规则并设 -p wa,添加 -f auid>=1000 -f auid!=4294967295 过滤真实用户操作,同时补充 -a always,exit -f arch=b64 -s execve 等系统调用规则监控 crontab 编辑与脚本执行行为。

要严防黑客通过 /etc/cron* 目录植入定时任务后门,auditd 必须对这些路径做**写入+属性变更+子目录递归监控**,同时结合 UID 过滤和关键词标记,确保所有新增、修改、删除操作可追溯、可告警、可回溯。
一、监控所有 cron 相关配置路径的完整变更
不能只盯 /etc/crontab,必须覆盖全部入口点。在 /etc/audit/rules.d/10-cron-integrity.rules 中写入以下规则:
-w /etc/crontab -p wa -k cron_master-
-w /etc/cron.d/ -p wa -k cron_d_dir(注意末尾斜杠,表示监控目录本身及子项) -w /etc/cron.hourly/ -p wa -k cron_hourly-w /etc/cron.daily/ -p wa -k cron_daily-w /etc/cron.weekly/ -p wa -k cron_weekly-w /etc/cron.monthly/ -p wa -k cron_monthly
每条规则用 -p wa 捕获写入(write)和属性变更(attribute),覆盖文件创建、内容修改、权限/属主改动、软链接替换等常见后门手法。
二、过滤非系统用户操作,排除干扰日志
系统级 cron 配置理应仅由 root 或管理账户修改。添加 UID 过滤避免记录 systemd、dbus 等内建进程的无关事件:
- 在每条
-w规则后追加-F auid>=1000 -F auid!=4294967295,例如:-w /etc/cron.d/ -p wa -F auid>=1000 -F auid!=4294967295 -k cron_d_dir -
auid>=1000表示只记录真实登录用户的审计 ID(排除无人值守服务) -
auid!=4294967295排除未设置审计 ID 的上下文(如某些容器或异常会话)
三、同步监控关键执行工具调用行为
攻击者可能绕过直接写文件,改用 crontab -e 或脚本动态生成任务。需补上系统调用级规则:
-a always,exit -F arch=b64 -S execve -F auid>=1000 -F exe=/usr/bin/crontab -k crontab_edit-a always,exit -F arch=b64 -S execve -F auid>=1000 -F path=/usr/bin/sh -k shell_spawn_from_cron-a always,exit -F arch=b64 -S openat -F auid>=1000 -F path=/etc/cron.d/ -k cron_d_open
这些规则能捕获:用户手动编辑 crontab、shell 脚本尝试写入 cron.d、或程序调用 openat 打开 cron 目录的行为,形成行为链证据。
四、加载并验证规则有效性
规则写完不等于生效。执行以下步骤确认落地:
- 运行
sudo augenrules --load编译并加载全部.rules文件 - 检查是否载入:
sudo auditctl -l | grep -E "(cron_|crontab_edit)" - 手动触发测试(如
sudo touch /etc/cron.d/test),再执行:sudo ausearch -k cron_d_dir -ts recent | aureport -f -i - 确认输出中包含
touch进程、UID、命令路径、时间戳等完整上下文
不复杂但容易忽略。只要 cron 目录下发生任何写或属性变动,auditd 就会留下带关键词的日志,配合 ausearch -k cron_d_dir 即可秒级定位异常来源。










