
Eu tenho um script no servidor que é executado a cada poucos minutos e, entre outras coisas, verifica se algumas entradas maliciosas do crontab foram injetadas. Para fazer isso, verifico os crontabs de todos os usuários, o que funciona muito bem, mas meu /var/log/cron
arquivo é preenchido com entradas de todas as listagens de crontab, então toda vez que eu executo o script, ele registra todas as listas de crontab assim:
Nov 30 17:16:02 myserv crontab[348610]: (root) LIST (root)
Nov 30 17:16:02 myserv crontab[348611]: (root) LIST (bin)
Nov 30 17:16:02 myserv crontab[348612]: (root) LIST (daemon)
Nov 30 17:16:02 myserv crontab[348613]: (root) LIST (adm)
Nov 30 17:16:02 myserv crontab[348614]: (root) LIST (lp)
Nov 30 17:16:02 myserv crontab[348615]: (root) LIST (sync)
Nov 30 17:16:02 myserv crontab[348616]: (root) LIST (shutdown)
Nov 30 17:16:02 myserv crontab[348617]: (root) LIST (halt)
Nov 30 17:16:02 myserv crontab[348618]: (root) LIST (mail)
Nov 30 17:16:02 myserv crontab[348619]: (root) LIST (operator)
Nov 30 17:16:02 myserv crontab[348620]: (root) LIST (games)
Nov 30 17:16:02 myserv crontab[348621]: (root) LIST (ftp)
Nov 30 17:16:02 myserv crontab[348622]: (root) LIST (smb)
Nov 30 17:16:02 myserv crontab[348623]: (root) LIST (named)
Nov 30 17:16:02 myserv crontab[348624]: (root) LIST (postgres)
Nov 30 17:16:02 myserv crontab[348625]: (root) LIST (mysql)
.....
então ele preenche o arquivo de log desnecessariamente. Joguei com diferentes seletores, mas parece que ao escolher cron.info
ele mostra todas as informações, enquanto cron.notice
não mostra quando o crontab foi editado ou executado, o que novamente gosto em meus logs.
# Log cron stuff
cron.* /var/log/cron
cron.*
parece ser o mesmo que cron.info
Alguma idéia de como excluir entradas "LIST"? então /var/log/cron
ficaria assim:
Nov 30 17:24:02 mysrv CROND[349831]: (root) CMDEND (/etc/cron.b/check nout >/dev/null 2>&1)
Nov 30 17:28:01 mysrv CROND[350781]: (root) CMD (/etc/cron.b/check nout >/dev/null 2>&1)
Responder1
Experimente com cron.none
. Se você usar *
um asterisco ( * ) corresponde a zero ou mais ocorrências.
Agora você pode modificar a regra para mover o log para outro arquivo/path/to/another/file
ATUALIZAR
Comparar-Operações
As seguintes operações de comparação são atualmente suportadas:
contém
Verifica se a string fornecida em value está contida na propriedade. Deve haver uma correspondência exata, curingas não são suportados.
é igual
Compara a string de “valor” fornecida e o conteúdo da propriedade. Esses dois valores devem ser exatamente iguais para corresponder. A diferença para contains é que contains procura o valor em qualquer lugar dentro do valor da propriedade, enquanto todos os caracteres devem ser idênticos para isequal. Como tal, isequal é mais útil para campos como syslogtag ou FROMHOST, onde você provavelmente conhece o conteúdo exato.
começa com
Verifica se o valor é encontrado exatamente no início do valor da propriedade. Por exemplo, se você pesquisar “val” com
:msg, startswith, "val"
será uma correspondência se a mensagem contiver “valores estão nesta mensagem”, mas não corresponderá se a mensagem contiver “Existem valores nesta mensagem” (no último caso, “contém” corresponderia). Observe que “startswith” é muito mais rápido que expressões regulares. Portanto, mesmo depois de implementados, pode fazer muito sentido (em termos de desempenho) usar “startswith”.
expressão regular
Compara a propriedade com a expressão regular POSIX BRE fornecida.
ereregex
Compara a propriedade com a expressão regular POSIX ERE fornecida.
Você pode usar o caractere bang (!) imediatamente antes de uma operação de comparação, o resultado desta operação será negado. Por exemplo, se msg
contiver “Esta é uma mensagem informativa”, o exemplo a seguir não corresponderá:
:msg, contains, "error"
mas este corresponde:
:msg, !contains, "error"
Usar a negação pode ser útil se você quiser fazer algum processamento genérico, mas excluir alguns eventos específicos. Você pode usar a ação de descarte em conjunto com isso. Uma amostra seria:
*.* /var/log/allmsgs-including-informational.log
:msg, contains, "informational" ~
*.* /var/log/allmsgs-but-informational.log
Não negligencie o til na linha 2! Neste exemplo, todas as mensagens são gravadas no arquivo allmsgs-incluindo-informational.log. Então, todas as mensagens contendo a string “informacional” são descartadas. Isso significa que as linhas do arquivo de configuração abaixo da “linha de descarte” (número 2 em nosso exemplo) não serão aplicadas a esta mensagem. Então, todas as linhas restantes também serão gravadas no arquivo allmsgs-but-informational.log.
Responder2
Encontrei solução com filtro, para quem tiver interesse. Inseri uma declaração acima do cron.info, para remover mensagens indesejadas. então minha solução se parece com:
:msg, contains, "(root) LIST" ~
cron.* /var/log/cron
agora todas as linhas com entradas com "(root) LIST" serão descartadas.