zoukankan      html  css  js  c++  java
  • Linux-定时任务排查

    前段时间,哥们的服务器被人反弹了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/

  • 相关阅读:
    Apache虚拟主机(VirtualHost)配置
    LAMP源码安装
    SUSE上配置SAMBA服务
    Linux下安装或升级Python 2.7
    HTML5,CSS3,JS绘制饼图
    Single Number
    Reverse Words in a String
    C++控制台日历
    百度JS破盗链
    腾讯前端突击队Ⅱ
  • 原文地址:https://www.cnblogs.com/Kevin-1967/p/7219120.html
Copyright © 2011-2022 走看看