首页/安全/安全加固速查/cron 与 at 使用限制(allow 白名单)
主机加固基线90 条

cron 与 at 使用限制(allow 白名单)

通过 /etc/cron.allow 与 /etc/at.allow 白名单只允许指定用户创建计划任务;依赖默认放开不是控制,白名单才是收敛姿态。

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

计划任务为什么要白名单

定时任务是攻击者做持久化最喜欢的位置之一,也是普通账号越权执行的常见入口。很多系统默认靠 cron.deny 黑名单控制,甚至两个文件都不存在,结果是只要能登录就能写计划任务。收敛的正确姿态是用 /etc/cron.allow 与 /etc/at.allow 白名单:只列出确实需要跑定时任务的账号,其余一律拒绝。规则很简单,allow 文件存在时以它为准,deny 文件会被忽略。

基本信息

加固项计划任务创建权限白名单
适用平台Linux(RHEL/CentOS、Debian/Ubuntu,cronie/vixie-cron)
权限要求root
达标判据cron.allow、at.allow 存在且仅列授权用户
生效优先级allow 存在则忽略 deny,两者都在时以 allow 为准

典型使用场景

  • 等保与 CIS 基线明确要求限制 crontab 使用范围
  • 跳板机、堡垒机上只允许运维账号建计划任务
  • 业务账号拆分成专用账号后,逐个确认谁还需要定时任务
  • 应急排查中清点异常定时任务并顺手关闭普通账号的创建权
  • 容器或虚拟化宿主机上收紧运维入口

加固:只允许 root 建任务

加固:只允许 root 建任务
printf 'root\n' > /etc/cron.allow            # 每行一个用户名,不要写逗号
printf 'root\n' > /etc/at.allow
chmod 600 /etc/cron.allow /etc/at.allow      # 防止被普通用户读取或篡改
rm -f /etc/cron.deny /etc/at.deny            # allow 优先,deny 留着只会造成误判

核查:先盘清现有任务

核查:先盘清现有任务
cat /etc/cron.allow /etc/at.allow 2>/dev/null   # 看白名单内容
for u in $(cut -f1 -d: /etc/passwd); do crontab -l -u "$u" 2>/dev/null | grep -v '^#' | sed "s/^/$u: /"; done   # 全量盘点各账号任务
ls -l /etc/cron.d /etc/cron.daily /var/spool/cron   # 系统级与用户级任务目录

相关文件与语义

文件或目录作用注意点
/etc/cron.allow允许创建计划任务的用户白名单存在即生效,优先于 cron.deny
/etc/cron.deny禁止名单allow 存在时完全被忽略
/etc/at.allow、at.denyat 命令的同类控制需要 atd 服务在运行才起作用
/etc/cron.d 与 cron.hourly 等系统级任务目录属 root,白名单管不到这里,需单独核查内容
/var/spool/cron/<user>用户级 crontab 落盘位置白名单只挡新建,已存在的任务仍在跑
建设白名单前必须先跑上面的盘点命令:白名单一旦生效,不在列表里的账号连 crontab -e 都会被拒绝,如果业务账号漏登记,任务会在无人察觉时停掉。稳妥顺序是先盘点、再登记常用账号、最后加严。
allow 文件里每行只能是一个用户名,不能写逗号分隔或域账号格式;用 printf 或编辑器逐行写最可靠。用 sed、echo -e 批量拼接容易写出行尾空格或空行,导致规则意外生效范围变化。

易错点

  • allow 与 deny 同时存在时误以为 deny 还生效:多数实现里 deny 被完全忽略,配置意图和实际行为不一致
  • 白名单上线前没盘点现有任务,业务定时任务静默停摆,往往几天后才被发现
  • 只做 /etc/cron.d 里系统任务的核查,漏掉用户级 crontab 与 at 队列里的隐藏任务
  • 用 sed 批量编辑 allow 文件写坏格式,导致所有用户都被拒绝或所有用户都被放行

数据来源与参考

  • cron.allow(5)、at.allow(5) 手册
  • CIS Linux Benchmark:Restrict at/cron to authorized users

相关工具

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