Cómo instalar la herramienta de supervisión de la seguridad de la red Zeek en Debian 12

Zeek (antes Bro) es una plataforma gratuita y de código abierto para la supervisión de la seguridad de la red. Es un potente analizador pasivo del tráfico de red para investigar actividades sospechosas o maliciosas. Zeek puede utilizarse como monitor de seguridad de red (NSM) y admite una amplia gama de análisis de tráfico, desde el ámbito de la seguridad hasta la medición del rendimiento y la resolución de problemas.

En esta guía, te mostraré cómo instalar Zeek monitor de seguridad de red en el servidor Debian 12 paso a paso. Instalarás Zeek y lo configurarás en modo clúster; a continuación, aprenderás a analizar el formato de registro TSV de Zeek mediante la línea de comandos zeek-cut. Además, aprenderás a configurar la salida del registro de Zeek como JSON y a analizar el registro JSON de Zeek mediante la línea de comandos jq.

Requisitos previos

Antes de empezar, confirma que tienes lo siguiente:

  • Un servidor Debian 12.
  • Un usuario no root con privilegios de administrador.

Añadir repositorio

Zeek puede instalarse en el sistema Linux compilándolo manualmente o utilizando un repositorio de terceros. En esta guía, instalarás Zeek utilizando un repositorio de terceros mediante APT.

Primero, ejecuta el siguiente comando para añadir la clave GPG y el repositorio para el paquete Zeek.

curl -fsSL https://download.opensuse.org/repositories/security:zeek/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null
echo 'deb http://download.opensuse.org/repositories/security:/zeek/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list

Ahora actualiza y refresca tu repositorio Debian ejecutando el siguiente comando apt update.

sudo apt update

añadir repo

Instalación de Zeek

Después de añadir el repositorio de Zeek, ya puedes iniciar la instalación de Zeek en tu máquina Debian. En el siguiente paso, instalarás Zeek y añadirás el directorio de instalación de Zeek al PATH del sistema.

Ejecuta el siguiente comando apt install para instalar Zeek en tu máquina Debian. Hay varias versiones de Zeek disponibles, como la última versión, LTS y nightly. En este ejemplo, instalarás zeek-lts.

sudo apt install zeek-lts

Escribe y para proceder a la instalación.

instalar zeek

Una vez instalado zeek, que se encuentra por defecto en el directorio de destino /opt/zeek. Ejecuta el siguiente comando para añadir el directorio /opt/zeek/bin al PATH del sistema a través del archivo ~/ .bashrc.

echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc

A continuación, vuelve a cargar el archivo ~/. bashrc y comprueba la variable PATH del sistema mediante el siguiente comando. Deberías ver el directorio /opt/zeek/bin dentro del PATH del sistema.

source ~/.bashrc
echo $PATH

configurar PATH

Por último, verifica Zeek ejecutando el siguiente comando. Con esto, comprobarás la ubicación del archivo binario de Zeek, comprobarás la versión de Zeek e imprimirás el mensaje de ayuda de Zeek.

which zeek
zeek --version
zeek --help

En la siguiente salida, deberías ver que zeek 5. 0 está instalado en /usr/zeek/bin/zeek. Además, deberías ver las opciones del comando Zeek.

comprueba la versión de zeek

Configurar Zeek

Ahora que Zeek está instalado, el siguiente paso es configurar la instalación de Zeek. Puedes ejecutar Zeek en varios modos, como el modo de línea de comandos, el modo autónomo y el modo clúster.

En el siguiente ejemplo, aprenderás a ejecutar Zeek en modo clúster utilizando un único servidor.

Antes de configurar Zeek, ejecuta el siguiente comando para comprobar tus interfaces de red y tu dirección IP.

ip a

Deberías ver la lista de interfaces disponibles en tu sistema con información detallada sobre la dirección IP de un servidor como la siguiente:

comprobar ip

Abre la configuración de red para Zeek /opt/zeek/etc/networks.cfg utilizando el siguiente comando del editor nano.

sudo nano /opt/zeek/etc/networks.cfg

Inserta la subred de tu red interna como se indica a continuación. También puedes añadirle varias subredes.

10.0.0.0/8          Private IP space
172.16.0.0/12       Private IP space
192.168.0.0/16      Private IP space

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora abre la configuración de zeek /opt/zeek/etc/node.cfg utilizando el siguiente comando del editor nano.

sudo nano /opt/zeek/etc/node.cfg

Por defecto, Zeek se ejecuta en modo autónomo. Añade el # para desactivar el modo autónomo de Zeek.

#[zeek]
#type=standalone
#host=localhost
#interface=eth0

Introduce la siguiente configuración para ejecutar Zeek en modo clúster con un único servidor. Asegúrate de cambiar la dirección IP del servidor con tus datos.

Con la siguiente configuración, ejecutarás Zeek en modo clúster, que tiene varios componentes, como zeek-logger, zeek-manager, zeek-proxy y zeek-worker.

# logger
[zeek-logger]
type=logger
host=192.168.10.15
# manager
[zeek-manager]
type=manager
host=192.168.10.15

# proxy
[zeek-proxy]
type=proxy
host=192.168.10.15

# worker
[zeek-worker]
type=worker
host=192.168.10.15
interface=eth0

# worker localhost
[zeek-worker-lo]
type=worker
host=localhost
interface=lo

Guárdalo y ciérralo cuando hayas terminado.

A continuación, ejecuta el siguiente comando para acceder al intérprete de comandos de control de Zeek.

zeekctl

Ejecuta el comando check para validar tu configuración de Zeek.

check

Si todo va bien, deberías ver que cada componente del script de Zeek está bien:

comprobar configuración de zeek

A continuación, ejecuta el comando deploy para iniciar y ejecutar Zeek en tu máquina. El comando deploy es equivalente a los comandos install e start en Zeek.

deploy

Deberías ver que cada componente del clúster Zeek se está iniciando:

desplegar zeek

Por último, verifica cada componente de tu clúster Zeek ejecutando el comando de estado que aparece a continuación.

status

Si tu instalación se ha realizado correctamente, deberías ver que cada uno de los componentes del clúster Zeek se está ejecutando.

comprobar el estado de zeek

Escribe exit para salir del intérprete de comandos de control de Zeek.

En este momento, el clúster Zeek se está ejecutando. También supervisa la interfaz de red y la subred de destino y genera archivos de registro en el directorio /opt/zeek/logs.

Guía de los registros de Zeek

Tras configurar Zeek, el siguiente paso es explorar los archivos de registro que genera Zeek, que se encuentra en el directorio /opt/zeek/logs/current. Por defecto, zeek genera archivos de registro con el formato TSV (valores separados por tabuladores).

Cuando Zeek se esté ejecutando, supervisará la interfaz de red de destino de tu sistema y generará archivos de registro en el directorio /opt/zeek/logs/current/.

Mueve tu directorio de trabajo al directorio /opt/zeek/logs/current/ y ejecuta el siguiente comando ls.

cd /opt/zeek/logs/current/
ls -ah

Deberías ver varios archivos de registro generados por Zeek. Puede que veas que faltan algunos archivos de registro en tu sistema porque el servicio de destino no está disponible.

comprueba los archivos de registro de zeek

A continuación se muestran algunos de los archivos de registro importantes que debes conocer:

  • conn.log: El registro de conexión tanto para TCP como para UDP. Este archivo de registro proporciona la información más útil, como la marca de tiempo, la duración de la conexión, el servicio y mucho más.
  • dns.log: El registro DNS (Sistema de Nombres de Dominio).
  • http.log: El registro del Protocolo de Transferencia de Hipertexto (HTTP).
  • ssh.log: El registro de Secure Shell (SSH) para el seguimiento de las conexiones SSH.
  • ssl.log: El registro de Secure Socket Layer (SSL) que también contiene el registro HTTPS.

Analizar TSV (valores separados por tabuladores) de Zeek Logs mediante Zeek-cut

Por defecto, zeek genera archivos de registro con formato TSV (valores separados por tabulaciones). En el siguiente paso, analizarás los archivos de registro de Zeek con formato TSV mediante la línea de comandos zeek-cut.

Ejecuta el comando cat que aparece a continuación para ver el archivo de registro dns.log.

cat dns.log

En la siguiente salida, deberías ver múltiples campos como ts, uid, id.orig_p, id.resp_h, id.resp_p, proto, y muchos más.

cat archivos de registro

A continuación, ejecuta el siguiente comando para analizar el formato de registro TSV de Zeek. Con esto, enviarás la salida a través de la tubería «|» al comando zeek-cut.

En este ejemplo, analizarás tres campos del archivo de registro, como id.orig_h, consulta y respuestas.

cat dns.log | zeek-cut id.orig_h query answers
cat dns.log | zeek-cut query answers id.orig_h

Deberías ver una salida similar a la siguiente:

usando zeek-cut

También puedes utilizar el símbolo de redirección para procesar el archivo de registro TSV mediante zeek-cut como el siguiente comando.

zeek-cut id.orig_h query answers < dns.log

La salida debería ser similar.

usando zeek-cut

Configurar los archivos de registro de Zeek a JSON

En el siguiente paso, configurarás Zeek para que genere archivos de registro de salida con formato JSON. Para ello, debes modificar el archivo local.zeek y cargar el script zeek tuning/json-logs en tu instalación de zeek.

Abre el archivo /opt/zeek/share/zeek/site/local.zeek utilizando el siguiente comando del editor nano.

sudo nano /opt/zeek/share/zeek/site/local.zeek

Inserta la siguiente configuración al final de la línea.

@load tuning/json-logs

Guarda y cierra el archivo cuando hayas terminado.

Ahora ejecuta el siguiente comando zeekctl para volver a desplegar tu instalación de zeek.

zeekctl deploy

Deberías ver que ahora zeek se está reinstalando. Una vez finalizado el proceso, zeek generará archivos de registro JSON.

volver a ejecutar zeek deploy

Antes de analizar el formato de registro JSON, instala jq en tu máquina ejecutando el siguiente comando apt.

sudo apt install jq -y

instalar jq

Una vez instalado jq, desplázate al directorio /opt/zeek/logs/current/. El directorio /opt/zeek/logs/current contiene archivos de registro de zeek en formato JSON, y es generado automáticamente por zeek.

cd /opt/zeek/logs/current/

Ejecuta el comando cat que aparece a continuación para ver el archivo de registro dns.

cat dns.log

La salida JSON se mostrará en la pantalla de tu terminal.

zeek json log

A continuación, ejecuta el comando jq que aparece a continuación para procesar el registro JSON dns.log.

jq . dns.log

analizar el registro json

O puedes visualizar el formato compacto mediante la opción -c como la siguiente.

jq . -c dns.log

jq salida como columna

Por último, ejecuta el siguiente comando para mostrar una clave/valor concretos del archivo JSON dns.log.

jq -c '[."id.orig_h", ."query", ."answers"]' dns.log

Deberías ver la salida como la siguiente.

comprobar campo específico jq

Conclusión

¡Enhorabuena! Ya has instalado correctamente la herramienta de supervisión de red Zeek en el servidor Debian 12. Has instalado Zeek, has ejecutado Zeek en modo clúster, has aprendido algunos archivos de registro de Zeek y también has aprendido a analizar archivos de registro de Zeek con formato TSV mediante zeek-cut. Además, también has cambiado el registro de zeek a JSON y has aprendido a analizar el formato JSON del registro de Zeek mediante las líneas de comandos jq.

También te podría gustar...