Monitoreo de seguridad de Linux con Tripwire

Todos los administradores de sistemas pierden el sueño de vez en cuando debido a intrusiones en el sistema. Nadie quiere que un servidor del que es responsable se vea comprometido. El problema es que, incluso si revisa los registros con regularidad, una intrusión en el sistema realmente efectiva no deja registros obvios tirados por ahí. Por lo tanto, es difícil saber con certeza si sus sistemas son seguros.

Además de configurar SELinux en Solicitud y al implementar pentests regulares, una de las mejores maneras de monitorear su sistema en busca de vulnerabilidades de seguridad es, bueno, monitorear su sistema en busca de vulnerabilidades de seguridad. Si eso suena más fácil decirlo que hacerlo, entonces tienes que intentarlo. cable trampa. Tripwire es una herramienta de monitoreo de integridad de archivos que monitorea los cambios en archivos críticos en su sistema. Este artículo le muestra cómo instalar, configurar y usar Tripwire en su red.

Tripwire es tanto una empresa como una base de código fuente abierta. Puede comprar monitoreo de cable trampa, o puede usar el código GPLv2 que pusieron a disposición en GitHub. Se aplican los compromisos habituales. Si está pagando por ello, Tripwire hace la mayor parte del trabajo duro por usted, y todo lo que tiene que hacer es prestar atención a los informes. Si está implementando Tripwire usted mismo, debe configurarlo y configurarlo usted mismo.

Instalación

Para instalar Tripwire en RHEL o CentOS, debe agregar el Paquetes adicionales para Enterprise Linux (EPEL) depositar. En RHEL 8, debe habilitar el codeready-builder opción en subscription-manager:

$ sudo repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"

En CentOS necesitas habilitar PowerTools:

$ sudo dnf config-manager --set-enabled PowerTools

Instalar:

$ sudo dnf install -y epel-release

Ahora que EPEL está agregado a su lista de repositorios, instale Tripwire:

$ sudo dnf install -y tripwire

Definición de un nombre de host

Antes de configurar Tripwire, debe definir un nombre de host para su servidor si aún no tiene uno. Los nombres de host son un punto común de confusión, así que lea mi artículo sobre la definición de nombres de host para asegurarse de que tiene claro lo que está definiendo. En CentOS, RHEL y Fedora, puede establecer un nombre de host con hostnamectl:

$ sudo hostnamectl set-hostname --pretty "Rockhopper tripwire demo machine"
$ sudo hostnamectl set-hostname --static rockhopper

Generación de claves

A continuación, debe generar claves de cifrado para Tripwire. Después de todo, el propósito de Tripwire es evitar que los atacantes cubran sus huellas, por lo que los datos de Tripwire deben estar fuertemente encriptados.

Primero, cree una clave local con el twadmin herramienta:

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

A continuación, cree una clave de sitio:

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

En cualquier caso, debe proporcionar una frase de contraseña para cada clave. ¡Mantenga estas contraseñas privadas y seguras!

Tripwire usa dos claves diferentes para el cifrado: la clave local, que es única para cada servidor, y una clave de sitio, que puede usar en todos los sistemas de su organización. La clave del sitio es una característica importante porque permite que un administrador de TI dicte una política de seguridad única para la organización, y puede actualizarse de forma centralizada, firmarse con la clave del sitio y luego distribuirse con Ansible Donde scp para su uso en cada servidor. Cada administrador del servidor siempre tiene una clave local única, por lo que incluso si el archivo de la política de seguridad no se puede cambiar, aún pueden acceder a Tripwire para obtener actualizaciones e informes.

Archivo de configuración de cable trampa

A continuación, debe crear un archivo de configuración básico para Tripwire. La mayoría de los valores predeterminados de configuración son aceptables y no se debe cambiar nada a menos que sepa que su sistema difiere significativamente de lo que ve en el archivo de configuración de muestra proporcionado en /etc/tripwire/twcfg.txt. Por defecto, Tripwire usa sendmail para enviarle alertas por correo electrónico. Sin embargo, si está utilizando postfix, no es necesario modificarlo, porque postfix proporciona sendmail seudónimos Las ubicaciones de las claves de cifrado y el archivo de políticas también se definen en el archivo de configuración. Así que comprueba que son correctos.

Cuando esté satisfecho con las opciones de configuración, utilice twadmin para validar el texto de configuración y escribirlo en un archivo llamado /etc/tripwire/tw.cfg, que está firmado con la clave del sitio. La firma del archivo de configuración requiere la frase de contraseña de la clave de su sitio.

$ sudo twadmin --create-cfgfile --site-keyfile=/etc/tripwire/site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg

Sintaxis del archivo de política

El archivo de políticas es donde coloca la mayor parte del trabajo para Tripwire. Su política de Tripwire dicta qué archivos vigilar y cuáles ignorar, y cuáles se encuentran en algún punto intermedio. Ambos extremos son igualmente importantes. Si sus informes diarios de Tripwire envían un falso positivo por cada archivo de usuario que cambia durante un día laboral, aprenderá rápidamente a ignorar por completo sus informes de Tripwire.

El archivo de política de muestra incluido con la instalación de EPEL de Tripwire se basa en una instalación completa de una estación de trabajo Fedora. Debe personalizarlo para su sistema a menos que esté ejecutando una instalación completa de Fedora Workstation, pero leerlo le da una idea de lo que contiene un archivo de política estándar. Para decodificar la notación Tripwire, revise el twpolicy(4) página de manuales.

Los archivos de políticas pueden ser complejos y puede ser útil pensar en ellos más como un Sass Donde Makefile que un archivo de configuración. puedes crear variables, o usar los predeterminados, y rules, e incluso conditionals para regir cómo Tripwire trata los directorios y archivos individuales.

por ejemplo, el ReadOnly define una regla para los archivos destinados a ser de solo lectura. En este contexto, "solo lectura" no significa que sus permisos de archivo estén configurados para r-- (Está, 400), pero que generalmente no hay cambios esperados entre el momento en que se inicializa Tripwire y un informe diario o un informe día a día.

Una regla está estructurada como una línea que termina con un punto y coma (;) y delimitado por una flecha (->). Este bloque de código establece los ejecutables de Tripwire para ReadOnly:

/sbin/siggen    ->   $(ReadOnly);
/sbin/tripwire  ->   $(ReadOnly);
/sbin/twadmin   ->   $(ReadOnly);
/sbin/twprint   ->   $(ReadOnly);

El archivo de muestra de Fedora usa variables para definir la mayoría de las reglas. Por ejemplo:

SEC_BIN = $(ReadOnly) ;  # Binaries that should not change

Entonces, sus entradas para monitorear los binarios de Tripwire son:

/sbin/siggen    ->   $(SEC_BIN);
/sbin/tripwire  ->   $(SEC_BIN);
/sbin/twadmin   ->   $(SEC_BIN);
/sbin/twprint   ->   $(SEC_BIN);

Ambos ejemplos sirven exactamente para el mismo propósito, y la implementación es simplemente diferente.

Utilice el archivo de política de muestra como punto de partida y cree una política para monitorear su sistema.

Generación de un archivo de estrategia

Solo con fines de prueba, agregue esta línea al Archivos de datos Tripwire sección:

/etc/tripwire/secrets -> $(SEC_CRIT); # proof of concept

Para crear un crítico archivo de prueba con nombre secrets:

$ sudo touch /etc/tripwire/secrets

Genera tu ficha de estrategia con twadmin:

$ sudo twadmin --create-polfile 
--site-keyfile=/etc/tripwire/site.key 
/etc/tripwire/twpol.txt

Ingrese la frase de contraseña para la clave de su sitio cuando se le solicite.

Esto da como resultado un archivo firmado y encriptado, /etc/tripwire/tw.pol.

Inicialización de cable trampa

Con sus claves generadas, su configuración definida y un archivo de política en su lugar, ahora puede inicializar Tripwire:

$ sudo tripwire --init

Ingrese la contraseña de su clave cuando se le solicite.

Si ve alguna advertencia, léala cuidadosamente y corrija cualquier entrada errónea en su archivo de póliza. No es raro que su primer intento en un archivo de política, especialmente cuando se basa en un archivo existente, haga referencia a archivos que en realidad no existen en su sistema. Puede resolver este problema instalando los archivos que faltan o eliminando sus referencias de su /etc/tripwire/twpol.txt archivo maestro.

Si necesita hacer cambios, actualice su archivo de política reconstruyéndolo, luego reinicie su base de datos:

$ sudo twadmin --create-polfile 
--site-keyfile=/etc/tripwire/site.key 
/etc/tripwire/twpol.txt
$ sudo tripwire --init

Debe hacer esto hasta que haya llegado a un buen punto de partida. Una vez que tenga una base de datos de inicio saludable, no debe restablecer su base de datos, sino usar el tripwire comando para verificar la integridad de su sistema y, opcionalmente, reemplazar las diferencias aceptables con el --interactive opción:

$ sudo tripwire --check --interactive

Ver informes

La instalación EPEL de Tripwire crea cron trabajos para ejecutar informes de Tripwire y enviar informes por correo electrónico a root. También puede ejecutar un informe manual:

$ sudo tripwire --check

Este comando guarda un archivo de informe en /var/lib/tripwire/reports (o cualquier ubicación que establezca en el archivo de configuración). Para ver este archivo, utilice el twprint pedido:

$ sudo twprint --print-report --report-level 1 
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-163425.twr

Para ver un informe que contiene un error, edite el secrets pruebe el archivo y ejecute un informe:

$ sudo echo 1 > /etc/tripwire/secrets
$ sudo tripwire --check

Entonces echa un vistazo al informe:

$ sudo twprint --print-report --report-level 1 
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr
Added: "/var/lib/tripwire/rockhopper.twd.bak
Modified: "/etc/tripwire/secrets"

Suponiendo que esté satisfecho con el cambio en su archivo de prueba, puede actualizar la base de datos de Tripwire:

$ sudo tripwire --update 
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr

Proteja sus sistemas

Tripwire es un monitor de seguridad altamente preciso y extremadamente pedante. Deje de luchar para escanear los registros en busca de signos de intrusos y haga que Tripwire trabaje para usted. Con Tripwire, cuando algo cambie en un sistema, lo sabrá y podrá administrarlo en consecuencia.

Artículos de interés

Subir