Linux cron持久化检查需确认任务执行者、权限及脚本可信性,重点审查/etc/crontab、/etc/cron.d/、用户crontab及anacrontab、systemd timer等,并排查路径、权限、环境变量与隐藏机制。

Linux 系统中,计划任务(cron)是攻击者常利用的持久化入口点。检查其安全性,核心是确认谁在运行什么任务、权限是否合理、脚本是否可信。
检查全局和用户级 cron 配置
系统级任务通常放在 /etc/crontab、/etc/cron.d/ 目录下;用户级任务通过 crontab -l 查看(需逐个用户检查)。重点关注:
- 非 root 用户是否配置了 root 权限任务(如 /etc/cron.d/ 中指定 user=root)
- 路径是否使用绝对路径,避免 PATH 劫持风险
- 是否存在可疑命令,例如调用临时目录下的可执行文件(/tmp、/dev/shm)或 base64 解码执行
审查 cron 脚本与目标文件权限
计划任务本身只是调度器,真正风险常来自它调用的脚本或二进制文件。应检查:
- 脚本文件属主是否为可信用户,权限是否宽松(如 world-writable:-rw-rw-rw-)
- 脚本是否由 root 运行但属主为普通用户(可能被篡改)
- 是否引用环境变量(如 $PATH、$HOME),且未显式定义,易被恶意覆盖
排查隐藏或绕过机制的任务
攻击者可能规避常规检查,需额外留意:
- /etc/anacrontab:用于非持续运行的系统(如桌面或笔记本),同样支持定时执行
- systemd timer:用 systemctl list-timers --all 查看,对应 unit 文件可能位于 /etc/systemd/system/ 或 /usr/lib/systemd/system/
- 用户 home 目录下的 .bashrc、.profile 中是否包含 & 后台启动或 sleep 循环调用
自动化检查建议
可编写简短脚本辅助初筛:
- 列出所有启用的 cron 文件:find /etc/cron* -type f 2>/dev/null
- 检查 world-writable 脚本:find /etc/cron* /var/spool/cron -type f -perm -o+w 2>/dev/null
- 搜索高危关键字:grep -r "curl\|wget\|base64\|sh -c\|/tmp\|/dev/shm" /etc/cron* /var/spool/cron 2>/dev/null










