Como interceptar um evento quando um arquivo com um conteúdo específico (fornecido, por exemplo, pela soma de verificação) foi criado no sistema de arquivos local?

1

Eu quero implementar uma espécie de mecanismo de segurança trip-wire, que rastreia eventos em tempo real quando o usuário grava um arquivo com um conteúdo específico no disco rígido de sua estação de trabalho (que será gerenciado por mim).

Caso contrário, o loggedfs brilhante não me permite monitorar o conteúdo do arquivo, apenas nomes de arquivos.

Que outra opção eu tenho? Eu acho que eu preciso de algo semelhante ao material que usa o software antivírus em tempo real.

P.S. Eu posso usar o btrfs e confiar em suas checksums de blocos de folhas, se isso ajudar. Mas eu prefiro uma solução mais geral.

    
por Adam Ryczkowski 17.06.2015 / 08:10

1 resposta

6

Quando no Linux você pode usar o mecanismo inotify em combinação com incron . Setup incron instalando o pacote e editando a configuração:

/etc/incron.conf
system_table_dir=/etc/incron.d
user_table_dir=/var/spool/incron
allowed_users=/etc/incron.allow
denied_users=/etc/incron.deny
lockfile_dir=/var/run
logfile_name=incrond
editor=vi

Em seguida, configure um relógio em /etc/incron.d/myscriptwatch :

/path/to/dir IN_CLOSE_WRITE,IN_MOVED_TO /path/to/check_content_script.sh $@ $#

O próximo passo é configurar o /path/to/check_content_script.sh para verificar o que é feito com o arquivo:

CURRSUM=$(md5sum $@)
PREVSUM=$(cat /path/to/old_saved_sum)

if [ "$CURRSUM" = "$PREVSUM" ]
then
   echo "file $@ is not altered" >> /tmp/watch_log
else
   echo "file $@ is altered" >> /tmp/watch_log
fi

Você também pode monitorar os outros eventos para ver se o arquivo é alterado como IN_CLOSE_WRITE,IN_ATTRIB,IN_MODIFY

Veja man 5 incrontab para mais detalhes.

    
por 17.06.2015 / 09:26