Verificando alterações no cronjobs

3

De qualquer forma, verifique e notifique se alguém fez uma alteração / adição aos cronjobs para um usuário em particular em um servidor Linux?

É possível conhecer as mudanças feitas também?

    
por nitins 03.01.2013 / 08:27

4 respostas

2

Se alguém edita seu arquivo crontab por usuário via crontab -e , uma entrada de log é gravada em / var / log / syslog . Exemplos:

user alex editou seu próprio arquivo crontab:

Jan  3 08:42:47 localhost crontab[4278]: (alex) BEGIN EDIT (alex)
Jan  3 08:42:50 localhost crontab[4278]: (alex) END EDIT (alex)

usuário root editou o arquivo crontab do usuário alex :

Jan  3 08:49:06 localhost crontab[4557]: (root) BEGIN EDIT (alex)
Jan  3 08:49:07 localhost crontab[4557]: (root) END EDIT (alex)

Se o crontab for alterado por um editor externo, a seguinte entrada de log de exemplo será exibida em / var / log / syslog :

Jan  3 08:46:01 localhost cron[1146]: (*system*) RELOAD (/etc/crontab)

Este mecanismo de registro é provavelmente configurável, mas é ativado por padrão pelo menos no Debian e Ubuntu e eu suponho que a maioria das outras distribuições também.

    
por 03.01.2013 / 08:47
1

Muitos deles, mas (afaik) nada intrínseco ao cron. Provavelmente usaria o tripwire no servidor e certificaria-se de que /var/spool/cron foi tripwired.

    
por 03.01.2013 / 08:33
1
[user@user-ld ~]$ sudo tail /var/log/cron | grep RELOAD
Jan  3 00:19:01 user-ld crond[3074]: (user) RELOAD (/var/spool/cron/user)

grep para ' RELOAD ' no log do cron ( /var/log/cron ). Então, se alguém editar / adicionar um cron job, você pode ver o tipo de coisa acima no cron log.

Escreva um script de monitoramento para esse arquivo de registro e use o que enviou um alerta para o seu ID de e-mail.

Se você quiser, pode usar o seguinte script para monitorar as entradas do cron de um usuário em particular:

#!/bin/bash
echo 'YOURPASSWORD_SUDO' | sudo -S crontab -l -u user > current_status_'date +"%m%d%y%s"'
diff <(cat 'ls -1tr current_status_*| tail -1') <(cat 'ls -1tr current_status_* | tail -2 | head -1')
if [[ $? == 0 ]] ; then 
    echo "no change in cron"
else
    echo "cron changed"
fi
    
por 03.01.2013 / 09:22
0

Você pode usar incron , que é semelhante a cron , mas trata de eventos do sistema de arquivos (alterações em arquivos / pastas) em vez de manipular eventos com base no tempo. Você pode monitorar a pasta /var/spool/cron/crontabs para alterações e invocar um script para registrá-las e fazer o que quiser.

    
por 03.01.2013 / 08:36