Tripwire

Tripwire.
Información sobre la plantilla
Tripwire..jpg
Tripwire .Es un programa de computador basado en Open Source consistente en una herramienta de seguridad e integridad de datos.

Características Generales

  • Util para monitorizar y alertar de cambios en los ficheros de un sistema de ficheros.
  • Funciona cotejando la firma digital de archivos y directorios contra una base de datos de los mismos en un instante previo.
  • La base de datos se genera tomando una instantánea en el momento de su instalación y se accede a ella mediante contraseña cifrada, por lo que su instalación en un sistema posiblemente infectado, carecería de efectividad y se recomienda que su instalación y configuración sea hecha antes de haber conectado el computador por primera vez a internet.
  • Funciona en sistemas operativos GNU/Linux.

Instalación

Tripwire normalmente se distribuye en un archivo RPM que viene empacado en formato TAR comprimido. En este último caso, usar:

  • tar xvzf tripwire.tar.gz

Lo cual debería generar el archivo tripwire-2.3-47.i386.rpm (el nombre exacto dependerá de su versión.) Ahora instálelo:

  • rpm -ivh tripwire-2.3-47.i386.rpm

Nota: En diversas distribuciones de Linux, incluyendo RedHat 7.2 y superiores, Tripwire ya está instalado, razón por la cual este paso puede no ser necesario.

Configuración de Tripwire

  • Definir las claves de Tripwire

Tripwire utiliza dos claves (que pueden ser palabras u oraciones) para almacenar su información. Una de ellas, la "site key" o "clave del site", se emplea para encriptar los archivos de configuración y de las políticas. La otra - la "local key" o "clave local", se usa para encriptar la información referida al estado de los archivos del sistema que se monitorean. Ud. necesita estas dos claves para las tareas de administración de Tripwire. Estas se deben introducir tan pronto como se ha instalado Tripwire mediante el comando:

/etc/tripwire/twinstall.sh Recuérdelas bien, o anótelas en un lugar seguro.

Configurar el archivo de políticas

La configuración de los archivos que van a ser monitoreados por Tripwire se mantiene en un gran archivo conocido como "archivo de políticas" (policy file.) Su manipulación es algo tediosa dada su extensión. Tripwire viene con un archivo que sirve de "plantilla" para ser modificado. Este archivo es: /etc/tripwire/twpol.txt. Ud. puede modificarlo directamente con un editor de texto (aunque le aconsejo que guarde una copia sin modificar del mismo.) Ahora haremos una observación de órden práctico y didáctico: Tripwire por lo general toma varios minutos en cada una de sus ejecuciones, y si Ud. nunca lo ha usado, probablemente le resultará desesperante aguardar mucho tiempo sin saber si las cosas están yendo bien o mal. Por este motivo yo sugiero que empecemos con una versión reducida (y casi inútil) del archivo de políticas. Una vez que Ud. comprenda el proceso completo, podrá retomar el archivo original y aprovecharlo. Nuevamente va la advertencia: haga una copia de seguridad del archivo twpol.txt. Para recortar el archivo proporcionado, simplemente use un editor de texto (como vi) y busque la sección "File System and Disk Administraton Programs" (que en el archivo que yo tengo, se ubica a partir de la línea 185.) Un extracto de esa sección es presentado aquí:

 rulename = "File System and Disk Administraton Programs",
 severity = $(SIG_HI)


 /sbin/accton                         -> $(SEC_CRIT) ;
 /sbin/badblocks                      -> $(SEC_CRIT) ;
 /sbin/dosfsck                        -> $(SEC_CRIT) ;
 /sbin/e2fsck                         -> $(SEC_CRIT) ;
 /sbin/debugfs                        -> $(SEC_CRIT) ;
 /sbin/dumpe2fs                       -> $(SEC_CRIT) ;
 /sbin/dump                           -> $(SEC_CRIT) ; 

Como Ud. ya se imaginará, esto corresponde a un conjunto de archivos que se monitorean por Tripwire. Nosotros reduciremos la extensa lista recortando el archivo en esta sección. Por ejemplo, haciendo que termine en /sbin/e2fsck:

 rulename = "File System and Disk Administraton Programs",
 severity = $(SIG_HI)
/sbin/accton                         -> $(SEC_CRIT) ;
 /sbin/badblocks                      -> $(SEC_CRIT) ;
 /sbin/dosfsck                        -> $(SEC_CRIT) ;
 /sbin/e2fsck                         -> $(SEC_CRIT) ;

Construir la base de datos Tripwire

Una vez configurado e instalado el archivo de políticas, Tripwire necesita recolectar la información actual de los archivos que debe monitorear. Dicha información se almacena en una base de datos especial generada mediante el comando:

  • tripwire -m i 2> /tmp/mensajes

Hemos redirigido parte de la salida de este comando al archivo /tmp/mensajes. Es muy probable que hayan archivos especificados en las políticas (twpol.txt) que no existen o están incorrectamente escritos (como lechuga.) Esto quedará registrado en /tmp/mensajes. Los errores deberán corregirse en twpol.txt, el cual se deberá reinstalar, para proceder a reconstruir la base de datos Tripwire. Este procedimiento se repetirá mientras subsistan errores en el archivo de políticas. Borre el archivo /tmp/mensajes cuando hayan desaparecido todos los errores.

Verificación del filesystem

Ahora que Tripwire está correctamente configurado con su base de datos, es el momento de verificar la integridad del filesystem. Esto se consigue con el comando:

  • tripwire -m c

Este comando se usará cada vez que deseamos saber que nuestro sistema no ha sido alterado. Si por algún motivo algunos de los archivos monitoreados son modificados (por ejemplo, por una actualización en el software) entonces debemos reconstruir la base de datos como se vió en el paso anterior, a fin de que no aparezcan discrepancias con el estado actual del filesystem en las próximas verificaciones. Si deseamos dejar de monitorear ciertos archivos o iniciar el monitoreo de otros, entonces debemos configurar el archivo de políticas (twpol.txt) como se vió anteriormente, y reinstalarlo. Después, se volverá a generar la base de datos del filesystem. Este proceso lamentablemente puede ser muy tedioso cuando hay muchos archivos por monitorear.

Finalmente, el archivo /etc/cron.daily/tripwire debe ser modificado del siguiente modo:

  • /usr/sbin/tripwire -m c --email-report

El archivo de configuración twcfg.txt contiene algunos parámetros adicionales para la configuración del sistema de notificación de email. Por ejemplo, es posible configurar si se deben enviar reportes aún si no han habido problemas (ver directiva MAILNOVIOLATIONS de twcfg.txt.) También se puede seleccionar el agente de mensajería (ver directiva MAILPROGRAM) a fin de no usar sendmail y generar una conexión directa SMTP hacia otro host. Consulte el manual de twconfig(4) y twpolicy(4) para más opciones y ejemplos.

Eliminación de archivos de texto

Tripwire guarda su configuración y la política del filesystem en dos archivos encriptados con la "clave del site". Estos son: /etc/tripwire/tw.cfg y /etc/tripwire/tw.pol, respectivamente. El primero se generó a partir de /etc/tripwire/twcfg.txt cuando se configuraron las claves, y el segundo ha sido regenerado cada vez que Ud. modificó su archivo de políticas /etc/tripwire/twpol.txt. Por seguridad, Ud. no debería mantenerlos en el sistema hasta que se vuelvan a necesitar, así que proceda a borrarlos:

  • rm /etc/tripwire/twcfg.txt /etc/tripwire/twpol.txt

Cuando Ud. necesite hacer una modificación de la política, puede regenerar el archivo twpol.txt del siguiente modo:

  • twadmin -m p > /etc/tripwire/twpol.txt

Y el de configuración mediante:

  • twadmin -m f > /etc/tripwire/twcfg.txt
  • Script check_twpol.sh

Tal como se indicó, eventualmente Ud. deberá emplear el archivo twpol.txt que viene con tripwire, el cual contiene numerosas referencias a los archivos del sistema. Sin embargo, este archivo en casi todos los casos deberá personalizarse puesto que no todos los sistemas tienen instalados los mismos archivos. A fin de agilizar este proceso (que es tremendamente tedioso), confeccioné el siguiente script que genera una versión "corregida" del twpol.txt contrastándo el original contra lo que se encuentra en el sistema. Este script NO modifica el archivo twpol.txt, sino por el contrario, deja la "nueva versión" en /tmp/new.twpol.txt. Para ejecutarlo, simplemente escribir:

  • bash check_twpol.sh

El script de preferencia deberá ser descargado y no copiado manualmente (debe estar disponible junto con este documento o en mi web site) a fin de evitar sutiles errores entre espacios y tabulados. De igual modo, ahí va: !/bin/bash

Generacion de version corregida de archivo de politicas twpol.txt (C) 2002-4002 Diego (www.compulinux.com/diego) Por favor verifique estas variables: Please cheack these veriables:

Original twpol.txt TWPOL=/etc/tripwire/twpol.txt

Donde buscar nuevos archivos Where to search for new files SRC_DIR="/sbin /etc /etc/sysconfig /bin"

El twpol.txt generado Generated twpol.txt RESULTADO=/tmp/new.twpol.txt if [ ! -f $TWPOL ]; then

       echo "$TWPOL debe existir para poder empezar!"
       echo "$TWPOL must exist for running this thing!"
       exit

fi echo "Quitando archivos inexistentes de twpol.txt" echo "Cutting non-existent files from twpol.txt" while read L do Cuidado: entre corchetes se escribe un espacio y un tab (3 lineas abajo) Beware: between brackets there is a space and a tab (following 3 lines) if echo "$L" | grep '^[ ]*/' > /dev/null ; then

       PX=$(echo "$L" | sed 's/^[     ]*\([^  ]*\).*/\1/')
       PY=$(echo "$L" | sed 's/^[     ]*\([^  ]*\)\(.*\)/\2/')
       if [ -e "$PX" ]; then
              echo "$PX $PY"
       else
              echo "#-- $PX $PY"
              echo -n '.' > /dev/tty
              # echo $PX > /dev/tty
       fi

else

       echo "$L"

fi

done < $TWPOL > $RESULTADO
echo

echo "Insertando nuevos archivos en twpol.txt" echo "Inserting new files to twpol.txt"

for DIR in $SRC_DIR

do echo "#-- " echo "#-- " echo "#-- " echo "(" echo "rulename = \"$DIR\"," echo 'severity = $(SIG_HI)' echo ")" echo "{"

       echo > /dev/tty
       echo "Procesando $DIR" > /dev/tty
       echo "Processing $DIR" > /dev/tty
       for F in $DIR/*
       do

Cuidado: entre corchetes se escribe un espacio y un tab (siguiente linea) Beware: between brackets there is a space and a tab (next linea)

              if [ -f $F ] && ! grep  "^[    ]*$F[   ]" $RESULTADO > /dev/null ; then
                      echo "  $F             -> \$(SEC_CRIT) ;"
                      echo -n "." > /dev/tty
              fi
       done

echo "}" done >> $RESULTADO echo echo "El nuevo archivo twpol.txt se ha generado en $RESULTADO" echo "New twpol.txt file was generated as $RESULTADO"

Referencias