Monitoreo de archivos con Tripwire

LinuxBeginner
Practicar Ahora

Introducción

En esta práctica de laboratorio, aprenderás a utilizar Tripwire, un potente Sistema de Detección de Intrusos basado en Host (HIDS), para monitorear la integridad de los archivos. Tripwire funciona creando una base de datos de referencia (baseline) de los archivos de tu sistema y luego escaneándolos periódicamente para detectar cualquier adición, eliminación o modificación. Este proceso es fundamental para identificar cambios no autorizados y mantener la seguridad del sistema.

Recorrerás todo el proceso, desde la configuración inicial de las claves de seguridad hasta la personalización de las políticas de monitoreo, la creación de una base de referencia, la detección de cambios y la revisión de informes.

Configurar las claves de Tripwire

Bienvenido a la práctica. El paquete tripwire ha sido preinstalado en tu entorno para ahorrar tiempo. Tu primera tarea es configurar las claves criptográficas que Tripwire utiliza para proteger su base de datos y archivos de configuración. Estas claves garantizan que un atacante no pueda manipular los propios archivos de Tripwire para ocultar su rastro.

  1. Primero, verifica que Tripwire esté instalado comprobando su versión.

    tripwire --version
    

    Deberías ver una salida que muestra la versión instalada de Tripwire.

    Tripwire(R) 2.4.3.7
    (i686-pc-linux-gnu)
    ...
    
  2. A continuación, genera las claves criptográficas manualmente utilizando twadmin. Necesitas crear tanto una site key (clave de sitio) como una local key (clave local). La clave de sitio protege los archivos de política y configuración, mientras que la clave local protege la base de datos en la máquina local.

    Primero, genera la clave de sitio:

    sudo twadmin --generate-keys --site-keyfile /etc/tripwire/site.key
    

    Si el archivo de clave ya existe, se te preguntará si deseas sobrescribirlo. Escribe y y presiona Enter para confirmar.

    Cuando se te solicite la frase de contraseña (passphrase) de la clave de sitio, introduce labex-password y presiona Enter. Luego, confirma la frase de contraseña introduciéndola de nuevo.

    Nota: La entrada de la frase de contraseña está oculta por seguridad; no verás ningún carácter mientras escribes, pero el sistema sigue recibiendo tu entrada.

  3. Luego, genera la clave local:

    sudo twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key
    

    Nuevamente, si se te pide sobrescribir un archivo de clave existente, escribe y y presiona Enter.

    Cuando se te solicite la frase de contraseña de la clave local, introduce labex-password y presiona Enter. Confirma la frase de contraseña introduciéndola de nuevo. Recuerda que la entrada de la frase de contraseña está oculta.

    Después de haber introducido las frases de contraseña, ambas claves se generarán y se guardarán en el directorio /etc/tripwire/. El proceso de generación de claves puede tardar varios minutos en completarse.

Personalizar la política de monitoreo

Antes de crear la base de datos inicial (la referencia), debes configurar qué archivos y directorios debe monitorear Tripwire. Debido a problemas de compatibilidad con el archivo de política predeterminado que pueden causar errores de segmentación durante la inicialización, crearás una política simplificada que se centre en los archivos esenciales del sistema y en tu directorio de proyecto.

  1. Primero, crea una copia de seguridad del archivo de política original.

    sudo cp /etc/tripwire/twpol.txt /etc/tripwire/twpol.txt.bak
    
  2. Crea un nuevo archivo de política simplificado que evite los sistemas de archivos virtuales problemáticos.

    sudo nano /etc/tripwire/twpol-simple.txt
    
  3. Añade el siguiente contenido al archivo. Esta política simplificada monitorea archivos esenciales del sistema y tu directorio de proyecto, evitando rutas que puedan causar errores de inicialización:

    #
    ## Simplified Tripwire Policy File for Lab Environment
    #
    
    @@section GLOBAL
    TWBIN = /usr/sbin;
    TWETC = /etc/tripwire;
    TWVAR = /var/lib/tripwire;
    
    @@section FS
    
    SEC_CRIT      = $(IgnoreNone)-SHa ;
    SEC_BIN       = $(ReadOnly) ;
    SEC_CONFIG    = $(Dynamic) ;
    SEC_LOG       = $(Growing) ;
    SEC_INVARIANT = +tpug ;
    SIG_LOW       = 33 ;
    SIG_MED       = 66 ;
    SIG_HI        = 100 ;
    
    (
      rulename = "Tripwire Binaries",
      severity = $(SIG_HI)
    )
    {
        $(TWBIN)/siggen         -> $(SEC_BIN) ;
        $(TWBIN)/tripwire       -> $(SEC_BIN) ;
        $(TWBIN)/twadmin        -> $(SEC_BIN) ;
        $(TWBIN)/twprint        -> $(SEC_BIN) ;
    }
    
    (
      rulename = "Tripwire Data Files",
      severity = $(SIG_HI)
    )
    {
        $(TWVAR)/$(HOSTNAME).twd    -> $(SEC_CONFIG) -i ;
        $(TWETC)/tw.pol             -> $(SEC_BIN) -i ;
        $(TWETC)/tw.cfg             -> $(SEC_BIN) -i ;
        $(TWETC)/$(HOSTNAME)-local.key  -> $(SEC_BIN) ;
        $(TWETC)/site.key           -> $(SEC_BIN) ;
        $(TWVAR)/report             -> $(SEC_CONFIG) (recurse=0) ;
    }
    
    (
      rulename = "Critical system files",
      severity = $(SIG_HI)
    )
    {
        /bin            -> $(SEC_BIN) ;
        /sbin           -> $(SEC_BIN) ;
        /etc/passwd     -> $(SEC_CONFIG) ;
        /etc/shadow     -> $(SEC_CONFIG) ;
    }
    
    (
      rulename = "Lab Project Files",
      severity = $(SIG_HI)
    )
    {
      /home/labex/project        -> $(SEC_BIN) ;
    }
    
  4. Guarda el archivo y sal de nano presionando Ctrl + O, luego Enter, y finalmente Ctrl + X.

  5. Reemplaza el archivo de política original con tu versión simplificada.

    sudo cp /etc/tripwire/twpol-simple.txt /etc/tripwire/twpol.txt
    

Ahora has creado una política de monitoreo simplificada que funcionará de manera confiable en el entorno de laboratorio. En el siguiente paso, utilizarás esta política para crear la base de datos inicial.

Inicializar la base de datos de Tripwire

Con tu política simplificada en su lugar, ahora estás listo para crear la base de datos de Tripwire. Esta base de datos sirve como la instantánea de referencia de "estado conocido" de tu sistema. Tripwire comparará el estado actual de tus archivos con esta referencia para detectar cualquier cambio.

  1. Primero, vuelve a crear el archivo de configuración con tu nueva clave de sitio para asegurar la compatibilidad.

    sudo twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt
    

    Se te pedirá la frase de contraseña de tu site key. Introduce labex-password y presiona Enter.

  2. Convierte el archivo de política simplificado al formato binario firmado que utiliza Tripwire.

    sudo twadmin --create-polfile /etc/tripwire/twpol.txt
    

    Nuevamente, introduce la frase de contraseña de tu site key (labex-password) cuando se te solicite.

  3. Inicializa la base de datos. Este comando escanea todos los archivos y directorios especificados en tu política y registra sus firmas criptográficas y atributos.

    sudo tripwire --init
    

    Se te pedirá la frase de contraseña de tu local key. Introduce labex-password y presiona Enter.

  4. Durante la inicialización, es posible que veas una advertencia sobre la inexistencia inicial del archivo de base de datos:

    #### Warning: File system error.
    #### Filename: /var/lib/tripwire/68b1139d06fc790d9895e107.twd
    #### No such file or directory
    #### Continuing...
    

    Esto es normal y esperado durante la primera inicialización. El proceso continuará y creará el archivo de la base de datos.

  5. Una vez que el proceso se haya completado, verifica que el archivo de la base de datos se haya creado.

    ls -l /var/lib/tripwire/
    

    Deberías ver un archivo con el nombre del hostname de tu máquina y la extensión .twd (por ejemplo, 68b1139d06fc790d9895e107.twd). La presencia de este archivo confirma que tu base de datos de referencia se ha establecido correctamente.

    total 8
    -rw-r--r-- 1 root root 4164 Aug 29 11:00 68b1139d06fc790d9895e107.twd
    drwxr-xr-x 2 root root    6 Nov 11  2021 report
    

Tu sistema Tripwire ahora está correctamente inicializado con una base de datos de referencia. Cualquier cambio futuro en los archivos monitoreados será detectado cuando realices verificaciones de integridad.

Detectar e informar cambios en los archivos

Ahora que Tripwire tiene una base de referencia, puedes probar su capacidad para detectar cambios. Crearás un nuevo archivo en tu directorio de proyecto para ver cómo Tripwire detecta modificaciones en las áreas monitoreadas.

  1. Primero, crea un nuevo archivo en el directorio project. Este es un directorio que añadiste explícitamente a la política de monitoreo.

    touch ~/project/test_file.txt
    
  2. Una vez realizado el cambio, ejecuta una verificación de integridad. Tripwire escaneará el sistema y lo comparará con la base de datos de referencia.

    sudo tripwire --check
    

    Se te pedirá la frase de contraseña de tu local key. Introduce labex-password y presiona Enter.

  3. Una vez finalizado el escaneo, Tripwire generará un informe e imprimirá un resumen en la consola. El resumen destacará los objetos que fueron añadidos o modificados. Deberías ver una salida similar a esta:

    ===============================================================================
    Rule Summary:
    ===============================================================================
    
      Rule Name                       Severity Level    Added    Removed  Modified
      ---------                       --------------    -----    -------  --------
      Tripwire Binaries               100               0        0        0
      Critical system files           100               0        0        0
    * Tripwire Data Files             100               1        0        0
    * Lab Project Files               100               1        0        1
      (/home/labex/project)
    
    Total objects scanned:  16
    Total violations found:  3
    
    ===============================================================================
    Object Summary:
    ===============================================================================
    
    -------------------------------------------------------------------------------
    Rule Name: Lab Project Files (/home/labex/project)
    Severity Level: 100
    -------------------------------------------------------------------------------
    
    Added:
    "/home/labex/project/test_file.txt"
    
    Modified:
    "/home/labex/project"
    
  4. El informe muestra que Tripwire detectó:

    • Added (Añadido): El nuevo archivo test_file.txt en tu directorio de proyecto.
    • Modified (Modificado): El propio directorio /home/labex/project (porque su contenido cambió).
    • Tripwire Data Files: El archivo de la base de datos también fue marcado como "añadido" porque esta es la primera verificación desde la inicialización.

Esta salida confirma que Tripwire ha detectado con éxito los cambios realizados en el sistema de archivos.

Revisar el informe de integridad

El resumen del comando --check proporciona una buena visión general, pero para un análisis detallado, puedes ver el archivo de informe completo. Estos informes se almacenan en formato binario y deben leerse utilizando la utilidad twprint.

  1. Primero, enumera el contenido del directorio de informes para encontrar el nombre del informe más reciente. Los informes incluyen una marca de tiempo en sus nombres de archivo.

    sudo ls -lt /var/lib/tripwire/report/
    

    La salida mostrará los archivos de informe, con el más reciente en la parte superior. Toma nota de su nombre de archivo, que normalmente sigue el formato hostname-YYYYMMDD-HHMMSS.twr.

    total 4
    -rw------- 1 root root 3456 Aug 29 11:02 68b1139d06fc790d9895e107-20250829-110252.twr
    
  2. Utiliza el comando twprint para ver el informe en un formato legible para humanos. Reemplaza [REPORT_FILENAME] con el nombre de archivo real que anotaste en el comando anterior.

    sudo twprint --print-report --twrfile /var/lib/tripwire/report/[REPORT_FILENAME]
    

    Por ejemplo:

    sudo twprint --print-report --twrfile /var/lib/tripwire/report/68b1139d06fc790d9895e107-20250829-110252.twr
    
  3. El informe detallado muestra la misma información que el resumen pero con metadatos adicionales:

    Report created on:            Fri Aug 29 11:02:52 2025
    Database last updated on:     Never
    
    Host name:                    68b1139d06fc790d9895e107
    Host IP address:              172.18.0.8
    Policy file used:             /etc/tripwire/tw.pol
    Configuration file used:      /etc/tripwire/tw.cfg
    Database file used:           /var/lib/tripwire/68b1139d06fc790d9895e107.twd
    Command line used:            tripwire --check
    

    El informe proporciona detalles exhaustivos sobre cada cambio, incluyendo marcas de tiempo, propiedades del archivo y sumas de comprobación (checksums). Este nivel de detalle es crucial para el análisis forense a fin de comprender exactamente qué cambios ocurrieron en tu sistema.

  4. También puedes ver una versión más detallada con los atributos de los archivos utilizando el flag --verbose:

    sudo twprint --print-report --verbose --twrfile /var/lib/tripwire/report/[REPORT_FILENAME]
    

    Esto mostrará información adicional como permisos de archivos, propiedad, tamaño y varios hashes criptográficos para cada cambio detectado.

Comprender cómo leer estos informes es esencial para que los administradores de sistemas investiguen posibles incidentes de seguridad y mantengan la integridad del sistema.

Resumen

En esta práctica de laboratorio, has aprendido los fundamentos del uso de Tripwire para el monitoreo de la integridad de los archivos. Configuraste con éxito las claves de seguridad de Tripwire, personalizaste su política de monitoreo para incluir un directorio de proyecto específico y estableciste una base de datos de referencia del estado de los archivos de tu sistema.

Además, practicaste el flujo de trabajo principal de un administrador de sistemas al modificar archivos intencionalmente, ejecutar una verificación de integridad para detectar estos cambios y analizar el informe detallado para comprender qué fue alterado. Estas habilidades son fundamentales para mantener la seguridad del sistema y detectar actividades no autorizadas.