Cómo instalar la herramienta de supervisión de seguridad de red Zeek en Ubuntu 24.04

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 que investiga las 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 este tutorial, aprenderás a instalar la herramienta de supervisión de la seguridad de la red Zeek en el servidor Ubuntu 24.04. También aprenderás a ejecutar Zeek en modo clúster, a analizar el registro de Zeek con el comando «zeek-cut» y a generar y analizar el registro JSON de Zeek con la utilidad «jq».

Requisitos previos

Antes de empezar, asegúrate de que tienes lo siguiente

  • Un servidor Ubuntu 24.04
  • Un usuario no root con privilegios de administrador

Instalación de Zeek

Zeek es una herramienta de supervisión de la seguridad de la red de un sistema operativo tipo Unix. Se puede instalar utilizando varios métodos. En este ejemplo, instalarás Zeek en el servidor Ubuntu 24.04 con el gestor de paquetes APT del servicio de compilación de OpenSUSE.

Primero, ejecuta el siguiente comando para añadir el repositorio de Zeek a tu sistema Ubuntu.

echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list

Ahora descarga y añade la clave GPG para el repositorio Zeek con el comando que aparece a continuación.

curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_24.04/Release.key | \
gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null

Una vez añadida la clave GPG de Zeek y el repositorio, ejecuta el comando‘apt‘ que aparece a continuación para actualizar tu paquete de Ubuntu.

sudo apt update

añadir repo

Ahora puedes ejecutar el comando‘apt‘ de abajo para comprobar el paquete‘zeek‘. Verás varias versiones de Zeek.

sudo apt search zeek
sudo apt-cache policy zeek

comprobar zeek

A continuación, instala Zeek con el siguiente comando‘apt‘. En este ejemplo, instalarás Zeek LTS.

sudo apt install zeek

Introduce«Y» para confirmar la instalación.

instalar zeek

Una vez finalizada la instalación, añade el directorio‘/opt/zeek/bin‘ al PATH del sistema a través del archivo‘~/.bashrc‘. Y luego vuelve a cargar el archivo‘~/.bashrc’ para aplicar tus nuevos cambios. Con esto, podrás ejecutar la línea de comandos de Zeek a través de tu terminal.

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

Por último, ejecuta el siguiente comando‘zeek‘ para comprobar la versión de Zeek y los comandos y opciones básicos.

zeek --version
zeek --help

Verás una salida como la siguiente:

ayuda zeek

Configurar Zeek

Una vez instalado Zeek, tienes que configurar cómo se ejecutará Zeek en tu infraestructura. Puedes elegir ejecutar Zeek en modo autónomo o en clúster. Para grandes despliegues, puedes utilizar el modo clúster, en el que los componentes de Zeek se instalan en servidores independientes. Para este propósito de prueba, configuraremos y ejecutaremos Zeek en modo Clúster utilizando un único servidor.

Comprueba la dirección IP de tu servidor con el siguiente comando«ip». En este ejemplo, tenemos una dirección IP de servidor Ubuntu ‘192.168.10.60‘.

ip a

Abre la configuración de red de Zeek‘/opt/zeek/etc/networks.cfg‘ con el editor‘nano‘.

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

Introduce tu subred de red de los servidores de destino como se indica a continuación.

192.168.10.0/24 Local Network

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora abre la configuración del nodo Zeek‘/opt/zeek/etc/node.cfg‘ con‘nano‘.

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

Comenta las siguientes líneas para desactivar el modo autónomo de Zeek. Por defecto, Zeek se ejecuta en modo autónomo con«localhost» y la interfaz de red«eth0».

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

Pega la siguiente configuración para ejecutar Zeek en modo clúster dentro de un único servidor. Asegúrate de cambiar la dirección IP con la dirección IP de tu servidor Ubuntu. Como puedes ver a continuación, el modo clúster de Zeek tendrá varios componentes, como registrador, gestor, proxy y trabajadores.

# logger
[zeek-logger]
type=logger
host=192.168.10.60

# manager
[zeek-manager]
type=manager
host=192.168.10.60

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

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

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

Cuando hayas terminado, guarda el archivo y sal del editor.

A continuación, ejecuta el comando«zeekctl» que aparece a continuación para verificar tu sintaxis Zeek. Si la configuración es correcta, verás una salida‘scripts are ok‘.

zeekctl check

comprueba la configuración de zeek

Ahora ejecuta el comando‘deploy‘ para desplegar tu instalación de Zeek. Con esto, se iniciarán el registrador, el gestor, el proxy y los trabajadores de Zeek.

zeekctl deploy

desplegar zeek

Puedes comprobar cada componente de Zeek con el comando siguiente.

zeekctl status

En la salida que aparece a continuación, puedes ver que cada componente de Zeek se está ejecutando. Esto significa que el despliegue del nodo único del clúster Zeek se ha realizado correctamente.

comprobar el estado de zeek

Uso de zeek-cut para analizar los registros de Zeek

Ahora que has instalado y desplegado Zeek, se generarán archivos de registro de tu red en el directorio‘/opt/zeek/logs/current‘. Habrá varios archivos de registro de Zeek que deberás conocer y vigilar. En esta sección, aprenderás a utilizar la utilidad ‘zeek-cut’ para generar registros en formato TSV (Tab Separated Value).

Comprueba el directorio de registros de Zeek‘/opt/zeek/logs/current‘ con el comando ‘ls’ que aparece a continuación.

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

Verás varios archivos de registro como :

  • 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 archivo de registro DNS (Sistema de Nombres de Dominio)
  • http.log.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 la Capa de Conexión Segura (SSL) que también contiene el registro HTTPS.

registros zeek

Ahora ve al directorio«/opt/zeek/logs/current» y ejecuta el comando«cat» para mostrar los registros de Zeek y canaliza la salida con el comando«zeek-cut» para analizar la salida en formato TSV (Tab Separated Value).

cd /opt/zeek/logs/current/
cat dns.log | zeek-cut id.orig_h query answers
cat dns.log | zeek-cut query answers id.orig_h

En este ejemplo, te mostraremos los valores de los campos‘id.orig_h’,‘consulta‘ y‘respuestas‘.

registro de zeek

También puedes utilizar el comando«zeek-cut» como el siguiente para procesar los registros TSV y obtener una salida similar.

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

zeek-cut log

Configurar la salida de Zeek a JSON

Zeek admite varios formatos de registro, incluidos TSV y JSON. En esta sección, aprenderás a generar un registro Zeek en formato JSON. A continuación, aprenderás a analizar los registros JSON con la línea de comandos «jq» para que puedas leer fácilmente tus registros.

Abre la configuración de Zeek ‘/opt/zeek/share/zeek/site/local.zeek’ con el siguiente editor ‘nano’.

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

Descomenta la siguiente línea para habilitar el registro de salida a JSON.

@load policy/tuning/json-logs

Guarda el archivo y sal del editor.

Ahora ejecuta el siguiente comando‘zeekctl‘ para aplicar y desplegar tus cambios. Una vez finalizado el proceso, Zeek generará el formato de registro JSON.

zeekctl deploy

Puedes ver la siguiente salida durante el despliegue de Zeek.

desplegar zeek

A continuación, ejecuta el comando«cat» que aparece a continuación para comprobar el archivo de registro de Zeek. Verás que el registro de Zeek está ahora en formato JSON.

cat /opt/zeek/logs/current/dns.log

Análisis del formato JSON de Zeek con jq

Instala el paquete‘jq‘ con el siguiente comando ‘apt’.

sudo apt install jq -y

Una vez finalizada la instalación, ve al directorio ‘/opt/zeek/logs/current’ con el comando ‘cd’.

cd /opt/zeek/logs/current/

Para analizar los registros en formato JSON, ejecuta el comando «jq» que aparece a continuación.

jq . dns.log

análisis de registros json con jq

Si quieres obtener una salida compacta, utiliza la opción «-c» como la siguiente:

jq . -c dns.log

Por último, también puedes especificar archivos de registro JSON con el comando «jq» que aparece a continuación.

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

jq mostrar clave-valor específica

Conclusión

¡Enhorabuena! Has completado la instalación de la Herramienta de Monitorización de Red Zeek en el servidor Ubuntu 24.04. Has aprendido a desplegar el modo clúster de Zeek en un único nodo/servidor, a analizar el registro de Zeek con la utilidad«zeek-cut» para generar el formato TSV (Tab Separated Value), a generar el registro de Zeek en formato JSON y a analizar el registro JSON con la utilidad «jq». A partir de aquí, puedes pasar al siguiente paso enviando tu registro JSON o los registros Zeek a un sistema de registro centralizado como Graylog y ELK/EFK Stack.

También te podría gustar...