GNU/Linux >> Tutoriales Linux >  >> Linux

Monitoreo de seguridad en Linux con Tripwire

Todos los administradores de sistemas pierden el sueño de vez en cuando debido a las intrusiones en el sistema. Nadie quiere que un servidor del que es responsable se vea comprometido. El problema es que, a pesar de que puede revisar los registros con regularidad, una intrusión en el sistema realmente efectiva no deja registros obvios tirados por ahí. Esto dificulta saber definitivamente si sus sistemas son seguros.

Además de configurar SELinux para Aplicar e implementando pentests regulares, una de las mejores maneras de monitorear su sistema en busca de violaciones de seguridad es, bueno, monitorear su sistema en busca de violaciones de seguridad. Si parece más fácil decirlo que hacerlo, entonces debes probar Tripwire. Tripwire es una herramienta de monitoreo de integridad de archivos que observa 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 de fuente abierta. Puede comprar el monitoreo de Tripwire, o puede usar el código GPLv2 que han puesto a disposición en GitHub. Se aplican las compensaciones habituales. Si paga 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 implementa Tripwire usted mismo, puede instalarlo y configurarlo usted mismo.

Instalando

Para instalar Tripwire en RHEL o CentOS, debe agregar el repositorio Extra Packages for Enterprise Linux (EPEL). 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, debe habilitar PowerTools :

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

Para instalar:

$ sudo dnf install -y epel-release

Con EPEL ahora agregado a su lista de repositorios, instale Tripwire :

$ sudo dnf install -y tripwire

Establecer un nombre de host

Antes de configurar Tripwire, debe establecer un nombre de host para su servidor si aún no tiene uno. Los nombres de host son un punto frecuente de confusión, así que lea mi artículo sobre la configuración de nombres de host para asegurarse de tener claro lo que está configurando. 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

Generando claves

A continuación, debe generar claves de cifrado para Tripwire. Después de todo, el objetivo 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 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 ambos casos, debe proporcionar una frase de contraseña para cada clave. ¡Mantenga estas frases de contraseña 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 dentro 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 o scp para su uso en todos los servidores. Sin embargo, cada administrador del servidor todavía tiene una clave local única, por lo que aunque 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 Tripwire

A continuación, debe crear un archivo de configuración básico para Tripwire. La mayoría de los valores predeterminados en la configuración son aceptables y nada necesita para ser cambiado a menos que sepa que su sistema difiere de alguna manera significativa de lo que ve en el archivo de configuración de ejemplo proporcionado en /etc/tripwire/twcfg.txt . De forma predeterminada, Tripwire usa sendmail para enviarle alertas por correo electrónico. Sin embargo, si usa postfix, no es necesario cambiarlo porque postfix proporciona sendmail alias. También se definen en el archivo de configuración las ubicaciones de sus claves de encriptación y el archivo de políticas, así que verifique que sean correctas.

Cuando esté satisfecho con las opciones de configuración, use 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íticas

El archivo de políticas es donde realiza la mayor parte del trabajo para Tripwire. Su política de Tripwire dicta qué archivos monitorear 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 para cada archivo de usuario que cambia a lo largo de un día laboral, aprenderá rápidamente a ignorar sus informes de Tripwire por completo.

El archivo de política de muestra incluido con la instalación 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 ayuda a tener una idea de lo que contiene un archivo de política estándar. Para decodificar la notación Tripwire, revise la twpolicy(4) página man.

Los archivos de políticas pueden ser complejos, y podría ayudar pensar en ellos más como un Sass o Makefile que un archivo de configuración. Puede crear variables , o use algunas predeterminadas y rules , e incluso conditionals para regir cómo Tripwire trata los directorios y archivos individuales.

Por ejemplo, ReadOnly variable define una regla para archivos destinados a ser de solo lectura. En este contexto, "solo lectura" no significa que sus permisos de archivo estén establecidos en r-- (es decir, 400 ), pero que por lo general no se esperan cambios desde el momento de la inicialización de Tripwire a un informe diario o un informe diario.

Una regla está estructurada como una línea terminada por un punto y coma (; ) y delimitado por una flecha (-> ). Este bloque de código establece los ejecutables de Tripwire en 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);

Los dos ejemplos tienen exactamente el mismo propósito y la implementación es diferente.

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

Generando un archivo de política

Exclusivamente con fines de prueba, agregue esta línea a los archivos de datos Tripwire sección:

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

Crear un crítico archivo de prueba llamado secrets :

$ sudo touch /etc/tripwire/secrets

Genere su archivo de política con twadmin :

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

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

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

Inicializando Tripwire

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

$ sudo tripwire --init

Introduzca su local clave de contraseña cuando se le solicite.

Si ve advertencias, léalas detenidamente y corrija las entradas erróneas en su archivo de políticas. No es raro que su primer intento en un archivo de política, especialmente cuando se basa en uno existente, haga referencia a archivos que en realidad no existen en su sistema. Puede solucionar esto instalando los archivos que faltan o eliminando las referencias a ellos de su /etc/tripwire/twpol.txt archivo maestro.

Si tuvo que hacer cambios, actualice su archivo de política regenerándolo y 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 inicial sana, no debe reiniciar su base de datos, sino usar el tripwire para verificar la integridad de su sistema y, opcionalmente, anular 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 para 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, use el twprint comando:

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

Para ver un informe con un error, cambie los secrets archivo de prueba y ejecutar un informe:

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

Luego vea el 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 la modificación de 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 de alta precisión y extremadamente pedante. Deje de luchar para analizar 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á manejarlo en consecuencia.

[ ¿Quiere obtener más información sobre seguridad? Consulte la lista de verificación de cumplimiento y seguridad de TI. ]


Linux
  1. Cifre y descifre archivos con una frase de contraseña en Linux

  2. 5 consejos para comenzar con la seguridad del servidor Linux

  3. Sobrevivir a una auditoría de seguridad con Enterprise Linux

  4. Equilibrar la seguridad de Linux con la usabilidad

  5. Cómo monitorear la seguridad del servidor Linux con Osquery

Monitoreo de hosts Linux y Windows con Glances

Auditoría de seguridad de Linux con Lynis

Monitoreo del ancho de banda en Linux con Nethogs

Monitoreo del servidor Linux con iPhone/iPad

Inicie sesión con una clave privada SSH en Linux y macOS

Seguridad de Linux frente a Windows