首页/安全/安全加固速查/计划任务与自启项核查

计划任务与自启项核查

计划任务是持久化重灾区:逐条解释来源与用途,奇怪的 wget/curl 一行流直接按事件排查。

安全加固速查安全更新于 2026-10-13

计划任务是持久化的重灾区

要在 Linux 上长期驻留,最简单的方法不是维持进程,而是写一条计划任务:机器重启也照样执行,且大多数运维人员不会每天查看。攻击者常用的一行流是下载脚本并直接交给解释器执行,或定时回连指挥端。因此计划任务核查的目标很明确——每一条任务都能说清来源与用途,说不清的就是待查对象。

基本信息

加固项计划任务与自启项核查
适用平台Linux(systemd、cron、anacron)
风险等级高
判读每条任务有来源说明;出现下载并执行的一行流按事件处理
覆盖范围用户 crontab、系统 cron 目录、systemd timer、anacron、启动脚本

典型使用场景

  • 入侵排查:计划任务是痕迹最集中的位置之一,必查
  • 基线核查:确认设备上只有经审批的定时任务
  • 运维交接:任务来源不明的环境,先从计划任务开始梳理
  • 故障排查:任务执行失败或重复执行导致资源异常时定位来源
  • 清理废弃项:历史遗留的备份或监控脚本长期无人维护

核查命令

核查命令
crontab -l 2>/dev/null                                  # 当前用户的任务
for u in $(cut -d: -f1 /etc/passwd); do crontab -l -u "$u" 2>/dev/null | sed "s/^/$u: /"; done
cat /etc/cron.d/* 2>/dev/null | grep -v '^#' | head -20
ls -la /etc/cron.hourly/ /etc/cron.daily/ 2>/dev/null
systemctl list-timers --all --no-pager | head -20        # systemd 定时器
cat /etc/rc.local 2>/dev/null | head                     # 传统启动脚本

五个持久化面

位置特征核查要点
用户 crontab存放在 spool 目录,按用户分开只查 root 会漏,需遍历全部账号
/etc/cron.d 与 cron.*系统级任务目录关注非 root 属主与最近修改时间
systemd timer以单元形式存在,易被忽略定时触发的是服务单元,要连服务一起看
anacron面向不定期开机的机器任务集中在配置文件中,易被遗忘
rc.local 与启动脚本传统自启入口确认文件是否存在以及内容是否被改动
发现「下载并执行」形式的一行流(把网络内容取回后直接交给 shell 执行)按入侵事件流程走:先封存证据,记录文件内容与修改时间,再决定处置方式。直接删除会破坏时间线,也不排除还有其他驻留点。
有三个面容易漏:各用户 crontab 分散在 spool 目录下,只查 root 会漏掉其他账号;systemd timer 与 cron 是完全独立的两套机制;anacron 在容器与虚拟机环境中也常被使用。核查时把这三个面与系统 cron 目录一起覆盖,才算完整。

按时间线关联分析

计划任务的价值不只在内容,还在时间。把任务的创建与修改时间与账号文件、授权文件、审计日志的变更时间放在同一条时间线上,常能还原出一串连续动作:某时刻有账号被创建,随后授权文件被改写,紧接着出现新的定时任务。这种关联比孤立地看一条任务更容易判断是否为攻击痕迹。

易错点

  • 只查 root 的 crontab:其他账号的任务会完全漏掉,必须遍历全部账号或直接检查 spool 目录
  • 只看 cron 不看 systemd timer:两套机制互相独立,只覆盖一套会留下盲区
  • 任务内容正常就放行:来源不明的任务即使是常规命令也可能是被劫持的持久化手段,要核实修改时间
  • 发现可疑任务直接删除:破坏取证时间线,正确做法是先封存内容与时间戳
  • 忽略任务的文件属主与权限:非 root 属主的任务文件本身可能就是权限问题的一部分

数据来源与参考

  • 等保 2.0:入侵防范
  • CIS Linux Benchmark:计划任务

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌