Monitorizar cambios en carpetas

Fijo que a muchos de vosotros alguna vez os interesó saber quién o cuando se modificaba un archivo y también que os llegase un aviso o que por lo menos quedase registrado en los log's. Aunque ya vimos una forma de hacerlo con audit, hoy os quiero presentar un servicio que se dedica sólo a eso. Se llama incron y, por definirlo, se podría decir que es un pequeño servicio que de dedica a monitorizar las carpetas que le indicamos y ejecutar acciones cuando detecta un cambio (también el que indiquemos).
incron está disponible tanto en Debian/Ubuntu como en CentOs/Red Hat en los repositorios, así que la instalación es sencilla.
shell> apt-get install incron
El fichero de configuración principal es /etc/incron.conf, pero su configuración por defecto nos sirve perfectamente. Dentro de la carpeta /etc/incron.d se colocan todos aquellos archivos de configuración que deseemos incluir con el siguiente formato.
directorio  cambio_a_monitorear  comando_a_ejecutar  parámetros
De los cuales,
  • directorio
    Ruta completa al path que deseamos monitorizar
  • cambio_a_monitorear
    Tipo de cambio sobre el que se va a alertar. Puede ser más de uno, separados por comas. Los cambios disponibles son:
    • IN_ACCESS
      Se accedió a un archivo del directorio
    • IN_ATTRIB
      Se cambió algunos de los atributos de algún archivo
    • IN_CLOSE_WRITE
      Archivo abierto para escritura fue cerrado
    • IN_CLOSE_NOWRITE
      Archivo abierto no fue cerrado
    • IN_CREATE
      Se creó un nuevo fichero o directorio
    • IN_DELETE
      Se borró un fichero o directorio
    • IN_DELETE_SELF
      Fichero o directorio se borró a si mismo
    • IN_MODIFY
      El archivo fue modificado
    • IN_MOVE_SELF
      El archivo se movió a si mismo
    • IN_MOVED_FROM
      Se movió un archivo a otro directorio
    • IN_MOVED_TO
      Se movió un archivo a este directorio
    • IN_OPEN
      El archivo fue abierto
    • IN_ALL_EVENTS
      Todos los eventos
  • comando_a_ejecutar
    Comando bash a ejecutar.
  • parámetros
    Variables que pueden ser pasadas al comando como parámetros.
    • $$
      Símbolo del dolar
    • $@
      Ruta completa del directorio monitorizado
    • $#
      Archivo que produjo el evento
    • $%
      Nombre del evento que produce la alerta. Son de la lista anterior
    • $&
      Número de evento
Un ejemplo de fichero de configuración que monitorice todo lo ocurrido en /tmp/example puede ser,
/tmp/example  IN_ALL_EVENTS  logger  "$% $#"
Y lo que hacemos es que todo lo que suceda lo envía con logger a syslog. Si ahora vemos lo ocurrido,
logger: "IN_CLOSE_NOWRITE,IN_ISDIR "
logger: "IN_OPEN,IN_ISDIR "
incrond[14571]: (system::test) CMD (logger "IN_CREATE file2")
incrond[14571]: (system::test) CMD (logger "IN_OPEN file2")
incrond[14571]: (system::test) CMD (logger "IN_ATTRIB file2")
incrond[14571]: (system::test) CMD (logger "IN_CLOSE_WRITE file2")
logger: "IN_CREATE file2"
logger: "IN_OPEN file2"
logger: "IN_CLOSE_WRITE file2"
logger: "IN_ATTRIB file2"
Y si en vez de emplear el comando logger empleamos el comando mail, se non enviaría una alerta al correo en cada evento que hayamos detectado.

La entrada Monitorizar cambios en carpetas la puedes leer en Puppet Linux.


No hay comentarios :

Publicar un comentario

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Últimos comentarios