Para el proyecto final del ciclo necesitaba automatizar la ejecución de un script cada vez que se modificase un archivo de configuración en concreto. Consultando con mi tutor me recomendó Incron, un cron guiado por eventos inotify.

Incron, que viene de juntar las palabras “inotify” y  “cron”, es un demonio que monitoriza lo que ocurre en el sistema de ficheros y ejecuta acciones en respuesta a determinados eventos. Estas acciones están definidas, como en el caso del “cron”, por una serie de reglas.

Podemos instalarlo con nuestro gestor de paquetes preferido:

sudo apt-get install incron

Una vez instalado crearemos el archivo /etc/incron.allow para incluir a los usuarios que podrán declarar reglas de incron, si solo queremos que sea root lo incluiremos en dicho archivo.

La sintaxis de la reglas, muy similar a la de cron, es:

Directorio_o_fichero   Evento   Acción
  • Directorio o fichero que se va a monitorizar.
  • Evento que activará la acción, los más usados son:
    • IN_ACCESS: el fichero ha sido leído.
    • IN_MODIFY: el fichero fue modificado.
    • IN_MOVED_FROM: fichero movido desde el directorio observado.
    • IN_MOVED_TO: fichero movido al directorio observado.
    • IN_OPEN: el fichero fue abierto.
    • IN_CREATE: un fichero/directorio fue creado en el directorio.
    • IN_DELETE: un fichero/directorio fue eliminado en el directorio.
    • ALL_EVENTS: se lanzará en todos los casos.
  • Acción, es el comando o script que se ejecutará cuando se cumpla el evento. Se pueden usar las siguientes variables:
    • $$: signo del dolar.
    • $@: ruta al directorio contenedor
    • $#: fichero o directorio observado sin su ruta
    • $%: evento que provoca la notificación
    • $&: número del evento que se ejecutó

Para crear y manipular la reglas usaremos el comando incrontab:

  • incrontab -l : Muestra las reglas que tenemos definidas.
  • incrontab -r : Borra la tabla de reglas por completo. (Cuidado, que no pide confirmación.)
  • incrontab -d : Recarga la tabla de reglas. Esto será necesario para que los cambios que hagamos en la lista de reglas sean efectivos.
  • incrontab -e: Abrirá nuestro editor predeterminado para crear las nueva reglas.

 

Lo usos que se le pueden dar a esta aplicación dependerán de la imaginación de cada uno: reiniciar un servicio después de una modificación en su configuración, copias de seguridad de una carpeta o archivo importante, monitorización de eventos del sistema, incluso autocompiladores

/var/www/html/php/SnortRulez/test.rules IN_MODIFY restart-IDS

Esta es la regla usada en mi proyecto, que reiniciaba el sensor del IDS cada vez que se modificaba el archivo de reglas de Snort.

Hay una limitación a tener en cuenta con Incron (y inotify)  y es que no soporta la monitorización de directorios recursivamente, habría que crear una regla separada para cada uno de los subdirectorios.

 

Espero que os sea útil y le encontréis un hueco en vuestro sistema.

 

Saludos y que la fuerza os acompañe!