Preciso escanear sistemas Linux em busca de vírus/malwares, apenas todo o sistema de arquivos. Há algumas opções a considerar.
- Uma delas é o que os usuários normalmente fazem: usar um antivírus para escanear o sistema uma vez por dia.
- A segunda opção é encontrar arquivos modificados no último dia e fornecer essa lista ao programa antivírus.
Testei o seguinte comando bash find
em um diretório com 5 milhões de arquivos vazios e ele é extremamente eficiente.
date;find /test/ -type f -ctime -1 -type f 1>./find_ctime.out 2>./find.errors;date
Leva apenas cerca de 5 segundos.
Estou usando a opção -ctime apenas para superar alguns horários de modificação de alterações de programas usando utilitários como o touch.
A maioria dos administradores, quando falam sobre uma verificação do sistema, falam sobre ter um antivírus fazendo a verificação completa.
Existe algum motivo pelo qual find não deve ser usado para obter uma lista de arquivos modificados e examiná-los?
Provavelmente não é a pior ideia, desde que você também faça verificações completas do sistema regularmente, além das verificações incrementais. No entanto, há algumas desvantagens:
Nem todos os exploits exigem modificações de arquivo
Alguns exploits podem ficar adormecidos em arquivos antigos que simplesmente não foram capturados por assinaturas de antivírus antigas. Então, quando novas assinaturas são lançadas, é possível que eles encontrem ameaças em arquivos antigos.
Os tempos de modificação dos arquivos são estranhos
Existem todos os tipos de esquisitices e inconsistências com os tempos de modificação e alteração de arquivos no Linux.
dd
você pode ignorar mtime/ctimesEntão, com tudo isso em mente, se um invasor souber que sua política de verificação antivírus é baseada no tempo de modificação/alteração, ele poderá facilmente contornar isso com qualquer um dos métodos acima e provavelmente dezenas de outros.