Tripwire es una herramienta de seguridad e integridad de datos de software libre que permite monitorear y alertar sobre cambios específicos en archivos en una variedad de sistemas [2] [3], desarrollada originalmente por Eugene H. Spafford y Gene Kim. [4] El proyecto se basa en código originalmente aportado por Tripwire, Inc. en 2000. [5] [6] Se publica bajo los términos de la Licencia Pública General de GNU . [1] [7]
Funciona creando una base de datos de referencia y luego comparando periódicamente el estado del sistema de archivos con la base de datos. Si detecta cambios (por ejemplo, adición o modificación de algunos archivos), incluye estos cambios en su informe, de modo que los administradores de seguridad puedan verificar estos cambios. [2]
El Dr. Eugene Spafford y Gene Kim crearon Tripwire en 1992 como respuesta a una serie de intrusiones furtivas que ocurrieron a principios de 1991. Estos ataques burlaron los sistemas de seguridad existentes al infectar las bibliotecas compartidas de manera que sus sumas de verificación CRC no se modificaran. Tripwire fue diseñado para utilizar funciones de resumen de mensajes de diferentes familias de hash (por ejemplo, MD5 y Snefru ) para seguir siendo confiable incluso después de que uno de los algoritmos de hash se vea comprometido. [4]
El nombre "Tripwire" proviene de los archivos trampa o tripwire que alertan a los administradores cuando son accedidos por intrusos. [8] [9] : 4 Spafford recuerda:
Hemos escuchado varias historias de casos en los que se crearon archivos trampa, según nuestra intención original, que se utilizaron para detectar a personas con información privilegiada que husmeaban en archivos y directorios en los que no tenían motivos para explorar. Al menos uno de esos usos se nos relató como un detonante que descubrió un fraude perpetrado por personas con información privilegiada. [4]
Tripwire fue escrito en C y su diseño enfatizó la portabilidad del programa y de la base de datos . El 2 de noviembre de 1992, fue lanzado para una prueba beta . En diciembre de 1993, se realizó el lanzamiento formal después de identificar y corregir varios errores. Los primeros lanzamientos se desarrollaron en un estilo de sala limpia , donde Gene Kim hizo el desarrollo y Eugene Spafford dirigió las pruebas de aceptación . [4]
Tripwire fue inicialmente gratuito y de código abierto, pero comenzó a comercializarse en 1997. Tripwire de código abierto se lanzó en octubre de 2000, [6] bajo la Licencia Pública General de GNU. [7]
El 4 de mayo de 2015, el código fuente se trasladó de SourceForge a GitHub . [10]
Durante la instalación, Open Source Tripwire solicita al usuario que configure las contraseñas de la clave del sitio y la clave local . La contraseña de la clave del sitio encripta los archivos de configuración y políticas que se comparten entre varios sistemas. La contraseña local se utiliza para proteger los archivos en una máquina específica. El archivo de políticas contiene la lista de archivos y directorios que se deben escanear y las reglas (por ejemplo, qué atributos del árbol de directorios se deben examinar). [2]
Open Source Tripwire solicita posteriormente la contraseña local al crear una base de datos inicial con firmas de archivos . Ejecuta el primer análisis del sistema y guarda el resultado en la base de datos. Después, ejecuta comprobaciones de integridad y compara el resultado con la base de datos. Por ejemplo, si se crea un nuevo archivo, se incluirá en el informe de comprobación de integridad posterior. [3] Open Source Tripwire se puede configurar para ejecutar comprobaciones de integridad de forma periódica y enviar correos electrónicos con los informes al administrador del sistema. [11] La base de datos debe inicializarse antes de que el sistema corra el riesgo de verse comprometido. [ cita requerida ]
El usuario puede crear archivos Tripwire que parezcan contener información valiosa (por ejemplo, el archivo llamado ) y configurar Open Source Tripwire para que rastree estos archivos con el fin de atrapar a intrusos fisgones. Cuando el intruso lee estos archivos, sus marcas de tiempomaster-password.txt
de acceso se actualizan y los administradores de seguridad reciben una notificación sobre este incidente. [4]
A diferencia de Tripwire Enterprise, Open Source Tripwire no está disponible para Windows y solo tiene políticas básicas. [12] Los usuarios de Windows pueden ejecutar Open Source Tripwire usando Cygwin , pero no escaneará atributos específicos de Windows como el Registro de Windows . [13]
El archivo de políticas se llama twpol.txt
[11] (o tw.config
en las versiones anteriores), e indica qué archivos y directorios necesitan ser monitoreados. Admite preprocesamiento que permite a los administradores escribir solo un archivo de políticas para muchas máquinas diferentes. En el archivo de políticas, junto con cada archivo o directorio hay una máscara de selección que indica qué atributos ignorar y cuáles informar. Por ejemplo, la máscara de selección podría escribirse para informar cambios en la marca de tiempo de modificación, número de enlaces , tamaño del archivo, permiso y modos , pero ignorar los cambios en la marca de tiempo de acceso. Además, hay una opción para especificar si Tripwire debe o no realizar una recursión en un directorio, es decir, verificar los subdirectorios, los subdirectorios de esos subdirectorios, etc. [14] [9] : 11–12
Ejemplo de archivo de política: [14]
# binarios del sistema SYSBIN = +pngu+sm ; /usr/local/bin/pwgen -> $( SYSBIN ) ; /usr/bin -> $( SYSBIN ) ; /usr/sbin -> $( SYSBIN ) ; /etc/security -> +pug (recurse = -1 ) ; # ¡ignora el último registro !/etc/security/lastlog;# registros SYSLOGS = +p-lum ; /var/adm/messages -> $( SYSLOGS ) ; /opt -> $( SYSBIN ) ; # ignorar estos no escanear !/opt/dump; !/opt/freeware;
El siguiente ejemplo del archivo de políticas de "El diseño e implementación de Tripwire: un verificador de integridad del sistema de archivos" de Spafford y Kim hace uso del lenguaje de preprocesamiento. Aquí se utiliza para ignorar el directorio con registros de impresora en un host específico, y este directorio se escaneará en todos los demás hosts. Por lo tanto, el preprocesamiento permite utilizar el mismo archivo de políticas en este host específico y en otros hosts, de lo contrario, el usuario necesitaría escribir archivos de políticas separados. [9] : 12
# máscara de selección de archivo/directorio /etc R # todos los archivos en /etc @@ifhost solaria.cs.purdue.edu !/etc/lp # excepto los registros de impresora SVR4 @@endif /etc/passwd R+12 # no se puede ser demasiado cuidadoso /etc/mtab L # archivos dinámicos /etc/motd L /etc/utmp L = /var/tmp R # solo el directorio, no su contenido
El archivo de configuración se llama twcfg.txt
, y contiene información sobre las rutas al archivo de políticas, archivo de base de datos, archivo de informe, etc. También tiene entradas para configuraciones de correo (por ejemplo, qué programa usar para enviar un correo electrónico con el informe). [14] [15] Ejemplo del archivo de configuración: [14]
RAÍZ = /opt/freeware/sbin ARCHIVO POLFILE = /etc/tripwire/tw.pol ARCHIVO DBFILE = / var/lib/tripwire/ $(NOMBRE DE HOST).twd ARCHIVO DE INFORME = /var/lib/tripwire/report/ $ ( NOMBRE DE HOST ) - $ ( FECHA ) .twr ARCHIVO DE CLAVE DEL SITIO = /etc/tripwire/site.key ARCHIVO DE CLAVE LOCAL = /etc/tripwire/ $( NOMBRE DE HOST ) -local.key EDITOR = /usr/bin/vi LATEPROMPTING = false LOOSEDIRECTORYCHECKING = false MAILNOVIOLATIONS = true NIVELDEINFORMEDEEMAIL = 3 NIVELDEINFORME = 3 MÉTODODEEMAIL = SENDMAIL INFORMESDELOGOSDESISTEMA = false PROGRAMADEMAIL = / usr /sbin/sendmail -oi -t
El archivo de base de datos es único para cada máquina, a diferencia de los archivos de políticas y configuración que podrían compartirse entre varias máquinas. Almacena permisos de archivos, fechas de modificación y firmas de los archivos. Para cada archivo, la base de datos puede almacenar hasta diez firmas. La base de datos no almacena el contenido en sí, porque almacenar el contenido de los archivos utilizaría demasiado espacio en disco. [9] : 13–15 El archivo de base de datos es legible por humanos y el usuario puede verificar las propiedades de archivos individuales y verificar la base de datos para detectar posibles alteraciones. [4] [9] : 7
Cuando la comprobación de integridad detecta un nuevo archivo, pero su ruta no tiene una entrada en el archivo de políticas, Tripwire elige la entrada antecesora más cercana y copia su máscara de selección, o utiliza la máscara de selección predeterminada si no se pudo encontrar la entrada. Tripwire tiene un modo de actualización interactivo que simplifica el proceso de revisión de cada archivo actualizado. Para cada archivo creado, eliminado o modificado, pregunta si se debe cambiar o no la entrada de la base de datos correspondiente. [9] : 13–15
Para minimizar el impacto de las colisiones de hash (es decir, la firma no cambiaría incluso cuando se cambiara el archivo) en la seguridad, Tripwire usa múltiples algoritmos de hash diferentes para calcular múltiples firmas para cada archivo. [4] Debido a que los diferentes algoritmos de hash tienen diferentes rendimientos , Tripwire permite configurar qué firmas usar y con qué frecuencia. Por ejemplo, el sistema podría configurarse para comparar firmas CRC32 cada hora y comparar firmas MD5 todos los días. De esta manera, las comprobaciones de integridad por hora se ejecutarían más rápido, e incluso si algún archivo se modifica sin cambiar su suma de comprobación CRC32, se informará durante la comprobación de integridad diaria. [9] : 7,15 Tripwire proporciona una interfaz genérica para las rutinas de firma, por lo que el usuario puede incluir sus propios métodos de suma de comprobación. [9] : 15