前段时间,哥们的服务器被人反弹了shell,由于反弹的地址不可达,系统总是会发送一条mail邮件到root账户,导致入侵行为被发现,由于反弹的动作是通过crontab来定时执行的,所以来梳理下crontab相关的知识点

1.crontab填写格式

基本格式 :
*  *  *  *  *  command
分 时  日  月  周  命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
每5分钟执行一次date命令
* /5 * * * * date

每个用户通过crontab -l可以查看当前用户级别下的定时任务,root账户可通过查看/var/spool/cron/{user} 查看不同用户的定时任务

/etc/crontab 存储的是系统级别的定时任务

2.查看crontab执行日志
cat /var/log/cron

上述定时任务在服务器不关机的情况下,会运行良好,但是如果使用的是笔记本或者经常关机的服务器的时候,crontab就力不从心了,因为当在指定时间运行的任务服务器处于关机的状态时,定时任务是不运行的,所以就要用到anacron

anacron适合于每天或每周或每个月执行一次的周期任务,配置文件是 /etc/anacrontab,配置文件格式如下

#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly

period in days:定义任务执行的周期1-@daily,7-@weekly,30-@monthly

delay in minutes: 任务执行前等待的时间,以分钟计

job-identifier: 任务标识符,用于区分任务名称,在这个地方填写的标识符 会在 /var/spool/anacron/{job-identifer} 生成同名文件,该文件记录脚本执行的时间戳

command:定义要执行的命令

我编辑 /etc/anacrontab文件,添加如下行

@daily   2    cron.test   echo 2017>>/tmp/2017

添加完成后,我执行关机操作,当我再次开机2分钟以后,在/tmp/2017文件能看到2017字符,并且,在/var/spool/anacron/目录下生成cron.test文件,该文件内容为今天的日期,

这样就能证明我们的推理,但是添加完成后,等待2分钟并没有发现该任务执行,这是为什么呢?查看下 /etc/cron.d/0hourly文件如下;

HELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
01 * * * * root run-parts /etc/cron.hourly

上述脚本的意思是在每个小时会通过 run-parts脚本执行/etc/cron.hourly目录下的可执行文件 (run-parts命令在/usr/bin/run-parts 使用方法是在脚本后面跟上一个目录即可)

而/etc/cron.hourly/0anacron 脚本如下

#!/bin/bash

# Skip excecution unless the date has changed from the previous run

if test -r /var/spool/anacron/cron.daily; then

day=`cat /var/spool/anacron/cron.daily`

fi

if [ `date +%Y%m%d` = "$day" ]; then

exit 0;

fi

# Skip excecution unless AC powered

if test -x /usr/bin/on_ac_power; then

/usr/bin/on_ac_power &> /dev/null

if test $? -eq 1; then

exit 0

fi

fi

/usr/sbin/anacron -s

对比文件中的日期信息,如果不对应,会执行 anacron -s 命令,而anacron会读取配置文件 /etc/anacrontab 这个配置文件里面记录了每天,每周,每个月要执行的任务,所以可以理解为:

在centos6下,anacrontab的周期执行是依靠crontab在每个小时执行一次维持的,他们两个的区别如下:

综上,在排查后门的时候要排查的文件

/var/spool/cron/{user},

/var/spool/anacron/*

/etc/cron.d/*

/etc/cron.hourly,

/etc/cron.daily,

/etc/cron.weekly,

/etc/cron.monthly,

/etc/anacrontab

参考链接:https://www.tecmint.com/cron-vs-anacron-schedule-jobs-using-anacron-on-linux/

Linux-定时任务排查的更多相关文章

  1. Linux定时任务-cronie

    1.cronie服务介绍 Linux crontab(cronie)是用来定期执行程序的命令. 当安装完成操作系统之后,默认就会启动此任务调度命令. crond 命令每分钟会定期检查是否有要执行的工作 ...

  2. linux定时任务crond export变量问题

    linux定时任务crond export变量问题 1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在 crontab里配置了如下内容: 50 17 ...

  3. Linux 定时任务

    200 ? "200px" : this.width)!important;} --> 介绍 本篇主要介绍Linux定时任务命令crontab的用法,crontab是定时任务 ...

  4. Linux 定时任务 Crontab命令 详解

    前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...

  5. 如何让Linux定时任务crond以秒为单位执行(如每隔3秒)

    需要用到Shell脚本每隔3秒钟去监控一个软件进程的运行状态,发现crond似乎只支持到分,不知道秒,怎么办呢? 第一种方法: 当然首先想到的是写一个触发的脚本,在触发脚本中使用死循环来解决此问题,如 ...

  6. 工作中linux定时任务的设置及相关配置

    工作中会用到定时任务,来处理以前采集来的数据备份, 每周一凌晨4点执行一次    0 4 * * */1 find/data/templatecdr/oracle/dcndatabak/ -type ...

  7. 如何让linux定时任务crontab按秒执行

    如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...

  8. (转载)Linux定时任务cron配置

    (转载)http://blog.csdn.net/jbgtwang/article/details/7995801 实现linux定时任务有:cron.anacron.at等,这里主要介绍cron服务 ...

  9. linux定时任务crontab的设置

    linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...

  10. Linux实战教学笔记11:linux定时任务

    第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种 ...

随机推荐

  1. Array 操作

    一.数组拉平 function arrayFlat(arr) { return arr.reduce((pre, cur) => { const temp = Array.isArray(cur ...

  2. Word模板替换

    package com.sisa.auweb.tools.bookmarkprocess; import org.apache.poi.openxml4j.opc.OPCPackage; import ...

  3. python之openpyxl生成excel文件

    项目需要,需要自动生成PDF测试报告.经过对比之后,选择使用了reportlab模块. 项目背景:开发一个测试平台,供测试维护测试用例,执行测试用例,并且生成测试报告(包含PDF和excel),将生成 ...

  4. Java学习之==>JDBC

    一.概述 官方解释: JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的 Java API,可以为多种关系型数据库提供统一访问,它由一组用 ...

  5. 机器学习之K近邻算法

    K 近邻 (K-nearest neighbor, KNN) 算法直接作用于带标记的样本,属于有监督的算法.它的核心思想基本上就是 近朱者赤,近墨者黑. 它与其他分类算法最大的不同是,它是一种&quo ...

  6. Screen Painter 程序设计

    一.Screen 的创建及维护, TCode:SE51 输入程序名称,单击[建立], 程序1000为SAP预留屏幕号,屏幕号必须定义1000外的其他数字,且最多不超过四位, 本例定义屏幕为SAP预留屏 ...

  7. 禁用linux的密码策略

    注释掉文件  /etc/pam.d/system-auth-ac中的 password requisite pam_passwdqc.so enforce=everyone 这一行 #%PAM-1.0 ...

  8. RTX数据表分析

    /******************************************* * UserName 做主键 **************************************** ...

  9. Pandas中关于 loc \ iloc 用法的理解

    转载至:https://blog.csdn.net/w_weiying/article/details/81411257 loc函数:通过行索引 "Index" 中的具体值来取行数 ...

  10. 【VS开发】【电子电路技术】RJ45以太网传输线研究

    RJ45以太网传输线研究 最近研究远距离差分视频传输方案,理所当然想到了LVDS协议.至于选用cameralink传输线,还是选用其他方案,本人更倾向于廉价的RJ45以太网线来实现LVDS差分信号的传 ...