
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

- directorio
Ruta completa al path que deseamos monitorizar - cambio_a_monitorearTipo 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