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
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.
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
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.
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:
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:
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:
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.
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.
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.
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:
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.
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.
Antes de analizar el formato de registro JSON, instala jq en tu máquina ejecutando el siguiente comando apt.
sudo apt install jq -y
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.
A continuación, ejecuta el comando jq que aparece a continuación para procesar el registro JSON dns.log.
jq . dns.log
O puedes visualizar el formato compacto mediante la opción -c como la siguiente.
jq . -c dns.log
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.
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.