Manual TRIPWARE (Seguridad en Integridad Sistema de archivos)

Tripwire sirve para mejorar la seguridad de tu sistema. Sirve para alertar al administrador de cambios en el sistema de archivos.

Para esto, Tripwire monitorea rutinariamente la integridad de una gran cantidad de archivos que tienden a ser blanco de los atacantes. Sin embargo, este proceso es pesado, y se suele ejecutar a intervalos; por ejemplo, diarios o interdiarios, aunque no hay ninguna restricción (salvo de recursos) para no lanzarlo cada media hora.


En primer lugar hay que descargar los fuentes del programa

(http://sourceforge.net/projects/tripwire)

E instalarlo con el típico


./configure

make

make install


Ahora empieza lo bueno: la configuración.

Configuración de Tripwire

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: /usr/local/etc/twpol.txt.

Puedes modificarlo directamente con un editor de texto (aunque te aconsejo que guardes 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 nunca lo has usado, probablemente te 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 comprendas el proceso completo, podrás retomar el archivo original y aprovecharlo.

ADVERTENCIA: haz una copia de seguridad del archivo twpol.txt.


Instalar el archivo de políticas

Cuando el archivo de políticas contiene todo lo que pretendemos monitorear, es menester “instalarlo”. En realidad Tripwire usa una versión compilada y encriptada de este archivo, que se almacena en /usr/local/etc/tw.pol. Para generarlo (y regenerarlo cuantas veces se necesite), usar:

# twadmin -m P /etc/tripwire/twpol.txt

Se puede apuntar a diferentes archivos de políticas por defecto.

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. Los errores deberán corregirse en twpol.txt(esto significa ir quitando o modificando opciones), 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 tu 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.


Configuración permanente de Tripwire

Automatización

Ahora que haa probado la correcta ejecución de Tripwire, debemos programar su ejecución automática. Se aconseja una frecuencia diaria, aunque el administrador es libre de usar otro esquema. En RedHat, la ejecución diaria de tripwire se efectúa fácilmente creando un archivo en el directorio

/etc/cron.daily (por ejemplo, /etc/cron.daily/tripwire con)

con el siguiente contenido:

/usr/sbin/tripwire -m c | mail root@localhost

Donde tienes que modificar la dirección “root@localhost” por lo que más te convenga. No olvide asegurarse de que el servicio cron esté operativo.

Asegúrese de que este archivo para cron sea ejecutable:

# chmod 755 /etc/cron.daily/tripwire

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 necesites hacer una modificación de la política, puedes 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 deberás 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 contendrá las siguientes líneas:

#!/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

### END OF COMMENTS

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"

~ por chavodie en 26/05/2009.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: