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
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
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.
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:
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
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
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.
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.
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‘.
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
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.
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
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
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.