Linux Crontab定时任务介绍及检测思路分析

一、Cron介绍

1、定义

crontab为Linux下的计划任务程序,对应的服务为crond。crond是一个守护进程,每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux系统上面原本就有非常多的计划性工作,故而,这个系统服务是默认启动的。

2、定时任务配置方式

配置定时任务的方式有两种,对应的Cron任务配置文件也有两种:

1)系统级别的任务,系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。对应全局配置文件:直接通过命令编辑配置文件vi /etc/crontab,任务查看cat /etc/crontab;

2)用户级别的任务,对应用户配置文件:通过crontab -e编辑任务,自动保存到/var/spool/cron/<user_name>文件,即以用户名命名的文件,通过crontab -l查看。推荐此方式,系统会检查任务的配置语法。

3、常见目录

我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

  • /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
  • /etc/crontab 全局任务配置列表,这个文件负责调度各种管理和维护任务。
  • /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
  • 我们还可以把脚本在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
  • /etc/cron.allow 允许执行crontab任务的用户列表,文件存在时,只有该文件中的用户才能执行计划任务,一般不创建此文件。
  • /etc/cron.deny 不允许执行crontab任务的用户列表,文件不存在时,出现在文件中的用户将不能执行计划任务,一般用于隔离不允许执行的用户。

4、crontab的使用

1)使用语法

2)示例

|----------------------------|---------------------------------------------|
| 每1分钟执行1次myCommand | * * * * * myCommand |
| 每小时的第3和第15分钟执行 | 3,15 * * * * myCommand |
| 在上午8点到11点的第3和第15分钟执行 | 3,15 8-11 * * * myCommand |
| 每隔两天的上午8点到11点的第3和第15分钟执行 | 3,15 8-11 */2 * * myCommand |
| 每周一上午8点到11点的第3和第15分钟执行 | 3,15 8-11 * * 1 myCommand |
| 每晚的21:30重启smb | 30 21 * * * /etc/init.d/smb restart |
| 每月1、10、22日的4:45重启smb | 45 4 1,10,22 * * /etc/init.d/smb restart |
| 每周六、周日的1:10重启smb | 10 1 * * 6,0 /etc/init.d/smb restart |
| 每天18:00至23:00之间每隔30分钟重启smb | 0,30 18-23 * * * /etc/init.d/smb restart |
| 每周六晚上11:00重启smb | 0 23 * * 6 /etc/init.d/smb restart |
| 每一小时重启smb | 0 */1 * * * /etc/init.d/smb restart |
| 晚上11点到早上7点之间,每隔一小时重启smb | 0 23-7/1 * * * /etc/init.d/smb restart |

二、检测思路分析

1、攻击场景

主机计划任务常被攻击者用来作为一种植入程序的持久化方式。主机计划任务被修改,恶意进程被关闭或删除后会在机器重启后再次安装。

2、检测规则思路

  • 数据源:Linux终端日志
  • 命中逻辑:
  • or:
  • 进程命令行 包含(忽略大小写) '/etc/crontab'
  • 进程命令行 包含(忽略大小写) '/var/spool/cron'
  • 进程命令行 包含(忽略大小写) '/etc/cron.d'
  • 进程命令行 包含(忽略大小写) '/etc/cron.hourly'
  • 进程命令行 包含(忽略大小写) '/etc/cron.daily'
  • 进程命令行 包含(忽略大小写) '/etc/cron.weekly'
  • 进程命令行 包含(忽略大小写) '/etc/cron.monthly'
  • 检测时间:10s
  • 归并分组:受害者IP/设备IP
  • 统计次数:count >= 1
相关推荐
睡一觉就好了。9 分钟前
TcpSocket
linux
小陈运维13 分钟前
使用kubeadm初始化IPV4/IPV6集群
linux·docker·云原生·容器·kubernetes
行者-全栈开发15 分钟前
SpringBoot 生产环境踩坑实录:10个真实故障案例与教训
java·spring boot·后端
李福春18 分钟前
斗破Google ADK Java苍穹-第7境斗皇-御天地-Harness治理
java·人工智能·python·深圳同盟·腾讯云架构师技术同盟·adk java·harness 治理
Wang's Blog20 分钟前
Java 项目部署之 Docker工具快速入门: 容器命令练习:创建、改文件、重启到删除的完整闭环
java·开发语言·docker
我是人✓21 分钟前
Java面向对象核心特性深度解析
java·前端·算法
Wx-bishekaifayuan24 分钟前
springboot线上中医药养生平台管理系统36753-计算机课程设计、毕业设计
java·spring boot·后端·spring·课程设计·express·旅游
东风微鸣27 分钟前
精简 Ubuntu Linux 固件包:每个 N100 节点省下约 450 MB
linux·ubuntu·postgresql
Wx-bishekaifayuan28 分钟前
springboot大学生就业平台47691-计算机课程设计、毕业设计
java·spring boot·后端·elasticsearch·课程设计·express·旅游
snhna29 分钟前
Agent 上云部署实战(上):从 GitHub 到 Linux,用 Dify 跑通中间件、域名和 HTTPS
linux·中间件