Siguiente: Nessus
Subir: Algunas herramientas de seguridad
Anterior: SSH
Índice General
La herramienta Tripwire ([KS93]),
[KS94b]) es un comprobador de integridad para ficheros y
directorios de sistemas Unix: compara un conjunto de estos objetos con la
información sobre los mismos almacenada previamente en una base de datos, y
alerta al administrador en caso de que algo haya cambiado. La idea es simple:
se crea un resumen de cada fichero o directorio importante para nuestra
seguridad nada más instalar el sistema, y esos resúmenes se almacenan en
un medio seguro (un CD-ROM o un disco protegido contra escritura), de forma que
si alguno de los ficheros es modificado (por ejemplo, por un atacante que
sustituye un programa por una versión troyanizada o añade una entrada en
nuestro fichero de contraseñas) Tripwire nos alertará la próxima
vez que realicemos la comprobación. Para generar esos resúmenes se utilizan
funciones hash, de forma que es casi imposible que dos ficheros generen
el mismo resumen; concretamente Tripwire implementa MD2, MD4,
MD5, Snefru, CRC-16 y CRC-32.
Una vez hemos compilado el código fuente de Tripwire debemos
inicializar la base de datos; para ello necesitamos en primer lugar crear el
fichero tw.config en la localización indicada en include/config.h, donde
espedificaremos los directorios a analizar (en el directorio configs/
tenemos algunos ficheros de ejemplo, adecuados a diferentes plataformas Unix).
A continuación inicializaremos la base de datos con la orden tripwire
-initialize (o simplemente -init):
anita:/tmp/tripwire-1.2/src# ./tripwire -init
### Phase 1: Reading configuration file
### Phase 2: Generating file list
### Phase 3: Creating file information database
###
### Warning: Database file placed in ./databases/tw.db_anita.
###
### Make sure to move this file file and the configuration
### to secure media!
###
### (Tripwire expects to find it in '/usr/local/tw'.)
anita:/tmp/tripwire-1.2/src#
En el fichero ./databases/tw.db_anita se encuentran las funciones
resumen de los archivos y directorios especificados en tw.config;
evidentemente, los datos de ese fichero se asumen como fiables, por lo que
es recomendable generarlo antes de abrir la máquina a los usuarios,
nada más instalar el operativo. Además, si un usuario lo consigue modificar
toda la seguridad de Tripwire se rompe, así que deberemos almacenarlo
en un medio seguro (por ejemplo, de sólo lectura), e incluso imprimir en
papel una copia para realizar comprobaciones si sospechamos de un ataque.
Con la base de datos inicial ya generada, podemos ejecutar regularmente
Tripwire para verificar que no ha cambiado ningún resumen de nuestros
fichero; para ello es necesario utilizar dicha base de datos desde una fuente
segura (por ejemplo, recién copiada desde el medio de sólo lectura al
disco, en modo monousuario):
anita:/tmp/tripwire-1.2/src# ./tripwire &>resultados
anita:/tmp/tripwire-1.2/src# head -17 resultados
### Phase 1: Reading configuration file
### Phase 2: Generating file list
### Phase 3: Creating file information database
### Phase 4: Searching for inconsistencies
###
### Total files scanned: 4821
### Files added: 2
### Files deleted: 0
### Files changed: 4413
###
### After applying rules:
### Changes discarded: 3959
### Changes remaining: 458
###
added: -rw------- root 0 May 5 03:46:06 2000 /var/tmp/test
changed: -rw-r--r-- root 972 May 5 03:49:53 2000 /var/adm/utmp
changed: -rw-r--r-- root 10044 May 5 03:49:53 2000 /var/adm/utmpx
anita:/tmp/tripwire-1.2/src#
Finalmente, debemos pensar que existirán ficheros o directorios que van a
cambiar habitualmente (por ejemplo, el archivo de contraseñas cada vez que
añadamos a un usuario al sistema); por tanto, es lógico que Tripwire
ofrezca un mecanismo de actualización de la base de datos. Es más, este
programa posee dos: o bien el modo interactivo o el modo actualización. En
el primero, cada vez que Tripwire detecte un fichero con modificaciones
nos consultará si deseamos actualizar nuestra base de datos, mientras que en
el modo update se utiliza para la actualización o bien un nombre de
archivo (si es lo único modificado) o bien un directorio pasado como
parámetro al ejecutable. El modo interactivo se invocado mediante la
opción -interactive:
anita:/tmp/tripwire-1.2/src# ./tripwire -interactive
### Phase 1: Reading configuration file
### Phase 2: Generating file list
### Phase 3: Creating file information database
### Phase 4: Searching for inconsistencies
###
### Total files scanned: 4820
### Files added: 1
### Files deleted: 0
### Files changed: 4413
###
### After applying rules:
### Changes discarded: 3958
### Changes remaining: 457
###
added: -rw------- toni 32768 May 5 03:55:29 2000 /var/tmp/Rx0000755
---> File: '/var/tmp/Rx0000755'
---> Update entry? [YN(y)nh?]
Mientras que el modo update se consigue mediante el parámetro -update; por ejemplo, si hemos añadido a un usuario (y por tanto modificado
los ficheros /etc/passwd y /etc/shadow), actualizaremos la base de
datos de Tripwire con la siguiente orden:
anita:/tmp/tripwire-1.2/src# ./tripwire -update /etc/passwd /etc/shadow
### Phase 1: Reading configuration file
### Phase 2: Generating file list
Updating: update file: /etc/passwd
Updating: update file: /etc/shadow
### Phase 3: Updating file information database
###
### Old database file will be moved to `tw.db_anita.old'
### in ./databases.
###
### Updated database will be stored in './databases/tw.db_anita'
### (Tripwire expects it to be moved to '/usr/local/tw'.)
###
anita:/tmp/tripwire-1.2/src#
Tripwire es una herramienta muy útil como sistema de detección de
intrusos ([KS94a]) en nuestras máquinas Unix; ejecutarlo
periódicamente, y mantener segura la base de datos de resúmenes - donde
recordemos que
reside toda la fiabilidad del producto - nos puede ayudar a detectar
accesos no autorizados al sistema y, más importante, modificaciones que el
pirata haya podido realizar en él para garantizarse un futuro acceso.
Siguiente: Nessus
Subir: Algunas herramientas de seguridad
Anterior: SSH
Índice General
2003-08-08