Incron - supervisionando sistemas de arquivos

Neste artigo, irei abordar como monitorar alterações em diretórios e arquivos, assim como executar comandos ou
scripts para automatizar alguma tarefa usando o Incron.

[ Hits: 20.922 ]

Por: Perfil removido em 24/01/2012


Usando o incron e escrevendo entradas na incrotab



O Incron trabalha analisando as entradas do 'incrontab' de cada usuário, e para cada evento no objeto (diretório e ou arquivo) monitorado, o Incron executa um comando ou script definido pelo administrador.

Desta forma, podemos usar o Incron para armazenar informações sobre alterações no diretórios e/ou arquivos, assim como a criação de arquivos ou exclusão dos mesmos, podendo monitorar um objeto ou vários objetos contidos no diretório.

Caso o serviço não esteja funcionando, execute no terminal, como 'root', para iniciar o serviço:

# /usr/sbin/incrond -f /etc/incron.conf

Ou:

# /etc/init.d/incron start

Escrevendo entradas no incrontab do root

Para escrever uma entrada no 'incrontab' do 'root', é necessário colocar o 'root' no "/etc/incron.allow". Então, execute como 'root' o comando:

# echo “root” >> /etc/incron.allow

Em seguida, acrescente uma entrada no 'incrontab' do usuário 'root', execute o comando como 'root':

# incrontab -e

Dentro do arquivo de edição do 'incrontab', adicione a linha a seguir:

# /usr/local/bin IN_CREATE,IN_DELETE logger -p local1.notice [email protected]/$# $%

* Explicação da entrada no incrontab:

O diretório "/usr/local/bin" será monitorado, e qualquer evento de criação ou deleção de diretório ou arquivo dentro do mesmo, será registrado pelo comando 'logger' com a facilidade 'loca1' e nível 'notice'.

Os símbolos indicam:
  • [email protected]: O diretório que está sendo monitorado “/usr/local/bin” no exemplo.
  • $#: indica o nome do objeto (pode ser um arquivo ou diretório) onde ocorreu um evento.
  • $%: Indica o tipo de evento realizado sobre o $# objeto.

Edite o arquivo "/etc/syslog.conf" e adicione a linha abaixo no arquivo:

# vim /etc/rsyslog.conf
# local1.notice             /var/log/logincron.log


Pronto. O Incron está rodando e monitorando qualquer criação e deleção de arquivo ou diretório dentro de "/usr/local/bin".

Testando

# touch /usr/local/bin/teste
# rm /usr/local/bin/teste
# mkdir /usr/local/bin/kill
# rmdir /usr/local/bin/kill


Saída do arquivo de Log: "/var/log/logincron.log":

# tail -f /var/log/logincron.log
Jan 15 17:05:03 desktop logger: /usr/local/bin/teste IN_CREATE
Jan 15 17:06:01 desktop logger: /usr/local/bin/teste IN_DELETE
Jan 15 17:08:43 desktop logger: /usr/local/bin/kill IN_CREATE,IN_ISDIR
Jan 15 17:09:02 desktop logger: /usr/local/bin/kill IN_DELETE,IN_ISDIR

Monitorando alterações nos arquivos "/etc/passwd" e "/etc/shdow":

Incluindo entrada no 'incrontab' do 'root':

# incrontab -e
/etc/passwd IN_MODIFY,IN_CLOSE_WRITE,IN_ATTRIB logger [email protected] $%
/etc/shadow IN_MODIFY,IN_CLOSE_WRITE,IN_ATTRIB logger [email protected] $%


Testando

# useradd maria
# passwd maria
# userdel maria


Vendo trecho dos Logs registrados pelo comando 'logger' a cada evento identificado pelo 'incrond':

# tail -f /var/log/messages
Jan 15 20:18:49 desktop logger: /etc/passwd IN_CLOSE_WRITE
Jan 15 20:18:49 desktop logger: /etc/passwd IN_ATTRIB
Jan 15 20:18:49 desktop logger: /etc/shadow IN_CLOSE_WRITE
Jan 15 20:18:49 desktop logger: /etc/shadow IN_ATTRIB

Jan 15 20:28:26 desktop logger: /etc/passwd IN_CLOSE_WRITE
Jan 15 20:28:26 desktop logger: /etc/passwd IN_ATTRIB
Jan 15 20:28:26 desktop logger: /etc/shadow IN_CLOSE_WRITE
Jan 15 20:28:26 desktop logger: /etc/shadow IN_ATTRIB

Observe que cada arquivo foi aberto para escrita e foi escrito algo, e também foi mudado os atributos estendidos por que a data da ultima modificação foi alterada.

Isto aconteceu por que os comandos digitados fizeram modificações nos dois arquivos.

Os símbolos ao lado da entrada no 'incrontab' servem para identificar o arquivo e o tipo de evento ocorrido sobre o objeto monitorado, conforme expliquei anteriormente.

Gerando backup do diretório monitorado a cada evento de alteração no objetos contidos no mesmo:

# incrontab -e /home/edson/Documentos IN_MODIFY,IN_CLOSE_WRITE,IN_ATTRIB /usr/local/bin/bkp

Conteúdo do script:

#!/bin/bash

rsync -au /home/edson/Documentos /mnt/backup/bkp-rsync


Cada vez que houver uma alteração em algum arquivo ou diretório dentro de "/home/edson/Documentos", o 'incrond' irá executar o comando “bkp”, que por sua vez irá fazer uma cópia usando o comando “rsync”.

Obs.: O “rsync” está usando a opção '-u', isto faz com que o “rsync” copie para o destino apenas os diretórios e arquivos mais recentes, assim como as alterações nos mesmos.

Conclusão

O Incron é uma boa ferramenta para o fim que foi apresentado neste artigo, podendo ser utilizado para fazer auditorias em sistemas que usam sua instalação.

Observações:

O Incron não faz verificações recursivas, isto significa que se você for tentar monitorar o diretório "/etc" e fizer alguma alteração de algum arquivo ou diretório que esteja contido dentro de um subdiretório do "/etc", ele não será registrado; a menos que você insira uma entrada no 'incrontab' ou faça uso de um comando (exemplo: find) dentro da 'incrontab'.

O Incron também não registra os nomes dos usuários responsáveis pelos eventos.

Fonte de consulta:
Página anterior    

Páginas do artigo
   1. Introdução
   2. Arquivos de configuração, símbolos e opções do incrontab
   3. Usando o incron e escrevendo entradas na incrotab
Outros artigos deste autor

Lançamento do GFP Open (Gerenciador Financeiro Pessoal) versão 0.0.1.2

Exportando e importando confs do Putty em Windows

Criando Arrays, Arrays Multidimensionais e Hashes em BASH Script

Desenvolvendo aplicações GUI simples em Python & Glade (PyGTK) com banco de dados SQLite

Jogando Xadrez online e gratuitamente no Linux

Leitura recomendada

VPN em Linux com OpenVPN

Detectando vulnerabilidades com o Nessus

Tornando o OpenBSD stable

Inprotect + Nessus: Scanner de vulnerabilidades

Segurança da Informação na Internet

  
Comentários
[1] Comentário enviado por brk0_0 em 05/04/2012 - 01:42h

Extremamente útil, obrigado!

[2] Comentário enviado por removido em 17/05/2012 - 20:25h

Cara muito bom o seu tutorial, procurei no Google por outros tutoriais mas o seu é o melhor, muito bem explicado e extremamente útil

[3] Comentário enviado por AprendiNoLinux em 17/05/2012 - 20:46h

Show de bola ;)
Tentei monitorar alterações no meu desktop mas não consegui. Parece que tem problemas com diretorios com espaço.

[4] Comentário enviado por removido em 17/05/2012 - 22:15h

Boa noite, obrigado pelos comentários.

Colega AprendiNoLinux quando diretórios tem espaços nos nomes, imagino que seja espaço no nome é isso ? nunca tive esse problema.

exemplo se quero monitorar o diretório: /opt/exemplo/teste inicial

a entrada ficaria com o diretório desse jeito:

/opt/exemplo/teste\ inicial IN_MODIFY,IN_CLOSE_WRITE,IN_ATTRIB /local/do/script/meu_script.sh

espero ter ajudado.


Contribuir com comentário