Cómo instalar la herramienta de análisis de tráfico de red Malcolm en Ubuntu 22.04
Malcolm es una herramienta de análisis del tráfico de red sencilla, fácil de usar y potente. Es capaz de capturar artefactos (archivos PCAP) y registros Zeek. Malcolm proporciona un marco interconectado que lo hace mayor que la suma de sus partes. El despliegue fácil y flexible de Malcolm y su sólida combinación de herramientas llenan un vacío en el espacio de la seguridad de la red y hacen que el análisis avanzado del tráfico de red sea accesible para muchos, tanto en el sector público como en el privado.
En este post, te mostraremos cómo instalar la herramienta de análisis de tráfico de red Malcolm en Ubuntu 22.04.
Requisitos previos
- Un servidor con Ubuntu 22.04.
- Un mínimo de 16 GB de RAM y 4 núcleos de CPU.
- Una contraseña de root configurada en el servidor.
Crear un usuario del sistema Malcolm
En primer lugar, tendrás que crear una cuenta de usuario dedicada para ejecutar Malcolm. Puedes crearla con el siguiente comando:
useradd -m -d /opt/malcolm -s /bin/bash -G sudo malcolm
A continuación, configura la contraseña del usuario con el siguiente comando:
passwd malcolm
A continuación, comprueba el UID del usuario Malcolm con el siguiente comando:
id malcolm
Deberías ver la siguiente salida:
uid=1000(malcolm) gid=1000(malcolm) groups=1000(malcolm),27(sudo)
Instalar Malcolm Ubuntu 22.04
Primero, cambia el usuario a Malcolm y descarga la última versión de Malcolm con el siguiente comando:
su - malcolm git clone https://github.com/idaholab/Malcolm
Una vez finalizada la descarga, cambia el directorio al directorio descargado e inicia la instalación de Malcolm utilizando el siguiente comando:
cd Malcolm sudo ./scripts/install.py
Durante la instalación, se te harán varias preguntas, como se muestra a continuación:
Installing required packages: ['apache2-utils', 'make', 'openssl', 'python3-dialog'] "docker info" failed, attempt to install Docker? (Y/n): Y Attempt to install Docker using official repositories? (Y/n): Y Installing required packages: ['apt-transport-https', 'ca-certificates', 'curl', 'gnupg-agent', 'software-properties-common'] Installing docker packages: ['docker-ce', 'docker-ce-cli', 'containerd.io'] Installation of docker packages apparently succeeded Add a non-root user to the "docker" group?: Y Enter user account: malcolm Add another non-root user to the "docker" group?: n "docker-compose version" failed, attempt to install docker-compose? (Y/n): Y Install docker-compose directly from docker github? (Y/n): Y Download and installation of docker-compose apparently succeeded fs.file-max increases allowed maximum for file handles fs.file-max= appears to be missing from /etc/sysctl.conf, append it? (Y/n): Y fs.inotify.max_user_watches increases allowed maximum for monitored files fs.inotify.max_user_watches= appears to be missing from /etc/sysctl.conf, append it? (Y/n): Y fs.inotify.max_queued_events increases queue size for monitored files fs.inotify.max_queued_events= appears to be missing from /etc/sysctl.conf, append it? (Y/n): Y fs.inotify.max_user_instances increases allowed maximum monitor file watchers fs.inotify.max_user_instances= appears to be missing from /etc/sysctl.conf, append it? (Y/n): Y vm.max_map_count increases allowed maximum for memory segments vm.max_map_count= appears to be missing from /etc/sysctl.conf, append it? (Y/n): Y net.core.somaxconn increases allowed maximum for socket connections net.core.somaxconn= appears to be missing from /etc/sysctl.conf, append it? (Y/n): Y vm.dirty_background_ratio defines the percentage of system memory fillable with "dirty" pages before flushing vm.dirty_background_ratio= appears to be missing from /etc/sysctl.conf, append it? (Y/n): Y vm.dirty_ratio defines the maximum percentage of dirty system memory before committing everything vm.dirty_ratio= appears to be missing from /etc/sysctl.conf, append it? (Y/n): Y /etc/security/limits.d/limits.conf increases the allowed maximums for file handles and memlocked segments /etc/security/limits.d/limits.conf does not exist, create it? (Y/n): Y
Una vez instalado Malcolm, puedes pasar al siguiente paso.
Configurar Malcolm
Después de instalar Malcolm, tendrás que configurarlo utilizando el siguiente comando:
sudo ./scripts/install.py --configure
Durante la configuración de Malcolm, se te harán varias preguntas. Responde a todas las preguntas como se muestra a continuación:
- Los procesos de Malcolm se ejecutarán como UID 1000 y GID 1000. ¿Te parece bien? (S/N): Y
- Configuración 10g para OpenSearch y 3g para Logstash. ¿Está bien? sí
- Configurar 3 trabajadores para los pipelines de Logstash. ¿Está bien? (S/N): sí
- ¿Reiniciar Malcolm al reiniciar el sistema o el demonio Docker? Sí A continuación, elige la opción por defecto, a menos que se detenga.
- Elige si quieres configurar Malcolm con HTTPS: Sí
- Elige si Malcolm se ejecutará detrás de cualquier proxy: No
- Elige la red: Sólo introduce para aceptar los valores por defecto. Elige LDAP: No
- ¿Almacenar snapshosts del índice OpenSearch localmente en /opt/malcolm/Malcom/opensearch-backup? Sí
- Elige Comprimir instantáneas de índice OpenSearch: Sí
- Si quieres eliminar los índices más antiguos cuando la base de datos supere un determinado tamaño: No
- Búsqueda DNS inversa localmente para direcciones IP de origen y destino en los registros: No
- Búsqueda de OUI de proveedores de hardware para direcciones MAC: Sí
- Realizar puntuación de aleatoriedad de cadenas en algunos campos: sí
- Exponer el puerto OpenSearch a servidores externos: No
- Exponer el puerto Logstash a hosts externos: no
- Reenviar los registros de Logstash a una instancia externa de OpenSearch: no
- Exponer el puerto TCP de Filebeat a hosts externos: no
- Activar la extracción de archivos con Zeek: sí
- Elige interesante como comportamiento de extracción. Elegir método de conservación de archivos: cuarentena
- Escanear archivos extraídos/archivos PE con ClamAV: sí
- Escanear archivos extraídos/archivos PE con Yara: sí
- Escanear archivos extraídos/archivos PE con Capa: sí
- Buscar hashes de archivos extraídos con VirusTotal: no
- Descargar firmas de escáner actualizadas periódicamente: sí
- Debe Malcolm capturar el tráfico de red en archivos PCAP: sí
- Especifica la(s) interfaz(es) de captura (separadas por comas) que Malcolm utilizará para capturar el tráfico de red: eth0
- ¿Capturar paquetes utilizando netsniff-ng? (sí/no): sí
- ¿Capturar paquetes usando tcpdump? (sí/no): no
- Filtro de captura (expresión de filtro similar a tcpdump; dejar en blanco para capturar todo el tráfico) (): Puedes desactivar el tráfico relacionado con Elasticsearch (puerto 9200), Logstash (5044), Arkime(8005): no el puerto 9200 y no el puerto 5044 y no el puerto 8005
- ¿Desactivar la descarga de hardware de la interfaz de captura y ajustar el tamaño de los búferes de anillo? (sí/no): n
Una vez configurado el Malcolm, reinicia el sistema para aplicar la configuración.
sudo reboot
Crear una cuenta de administrador de Malcolm
A continuación, tendrás que crear una cuenta administrativa para acceder a la interfaz web de Malcolm.
En primer lugar, cambia el usuario a Malcolm y navega hasta el directorio de Malcolm utilizando el siguiente comando:
su - malcolm cd ~/Malcolm
A continuación, ejecuta el siguiente comando para crear una cuenta de administrador:
./scripts/auth_setup
Responde a todas las preguntas como se muestra a continuación para crear una cuenta de administrador:
- ¿Guardar nombre de usuario/contraseña de administrador para el acceso local a Malcolm? sí
- Establece la contraseña y el nombre de usuario del administrador.
- (Re)generar certificados SSL autofirmados para el tráfico web HTTPS: sí
- (Re)genera certificados autofirmados para un reenviador de registro remoto: sí
- Almacenar nombre de usuario/contraseña para reenviar eventos de Logstash a una instancia secundaria externa de OpenSearch: no Almacenar nombre de usuario/contraseña para la cuenta de envío de alertas por correo electrónico: no
Descarga las imágenes Docker de Malcolm
A continuación, tendrás que descargar todas las imágenes Docker necesarias del registro Docker Hub. Puedes descargarlas todas con el siguiente comando:
docker-compose pull
Una vez descargadas todas las imágenes, verifícalas con el siguiente comando:
docker images
Deberías obtener la siguiente salida:
REPOSITORY TAG IMAGE ID CREATED SIZE malcolmnetsec/filebeat-oss 6.2.0 5e9fa4c8ea2d 11 days ago 648MB malcolmnetsec/arkime 6.2.0 4f4e6025c82d 11 days ago 793MB malcolmnetsec/zeek 6.2.0 5b117ad2b4bb 11 days ago 1.4GB malcolmnetsec/dashboards 6.2.0 9dcaff859eec 11 days ago 1.13GB malcolmnetsec/logstash-oss 6.2.0 cf4d75dcf4af 11 days ago 1.64GB malcolmnetsec/file-monitor 6.2.0 26227c3c7dc9 11 days ago 589MB malcolmnetsec/nginx-proxy 6.2.0 3b8b5413b52e 11 days ago 121MB malcolmnetsec/file-upload 6.2.0 2c704be24433 11 days ago 263MB malcolmnetsec/api 6.2.0 90f964b5d728 11 days ago 148MB malcolmnetsec/suricata 6.2.0 cbdb091d2df4 11 days ago 274MB malcolmnetsec/htadmin 6.2.0 2b55630700d1 11 days ago 242MB malcolmnetsec/opensearch 6.2.0 9ccb4665bd6c 11 days ago 1.25GB malcolmnetsec/pcap-monitor 6.2.0 d957d803bdbb 11 days ago 214MB malcolmnetsec/freq 6.2.0 3959a9daa952 11 days ago 131MB malcolmnetsec/dashboards-helper 6.2.0 7da9699a72b3 11 days ago 168MB malcolmnetsec/pcap-capture 6.2.0 df63e8daa369 11 days ago 121MB malcolmnetsec/name-map-ui 6.2.0 6bd6c7c58d36 11 days ago 120MB
Iniciar el servicio Malcolm
En este punto, todos los componentes necesarios para Malcolm están listos. Ahora puedes iniciar el servicio Malcolm utilizando el siguiente comando:
./scripts/start
Espera algún tiempo a que se inicien todos los servicios. Una vez iniciados todos los servicios, verifica todos los servicios en ejecución utilizando el siguiente comando:
docker ps -a
Deberías ver todos los contenedores en ejecución en la siguiente salida:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 840ea2b0e9ad malcolmnetsec/nginx-proxy:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 0.0.0.0:443->443/tcp, 127.0.0.1:5601->5601/tcp, 0.0.0.0:488->488/tcp, 127.0.0.1:9200->9200/tcp malcolm-nginx-proxy-1 dd5c8c63816c malcolmnetsec/suricata:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) malcolm-suricata-1 3112e1bd8f73 malcolmnetsec/filebeat-oss:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 127.0.0.1:5045->5045/tcp malcolm-filebeat-1 c93cfe93ad7e malcolmnetsec/file-upload:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 80/tcp, 127.0.0.1:8022->22/tcp malcolm-upload-1 18ee20b46f3c malcolmnetsec/dashboards:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 5601/tcp malcolm-dashboards-1 2c34206c06e4 malcolmnetsec/zeek:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) malcolm-zeek-1 41103ef99ce1 malcolmnetsec/logstash-oss:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 9001/tcp, 127.0.0.1:5044->5044/tcp, 9600/tcp malcolm-logstash-1 0408f42a76c3 malcolmnetsec/dashboards-helper:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 28991/tcp malcolm-dashboards-helper-1 3e78024620de malcolmnetsec/arkime:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 8000/tcp, 8005/tcp, 8081/tcp malcolm-arkime-1 58cd869beced malcolmnetsec/pcap-monitor:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 30441/tcp malcolm-pcap-monitor-1 1040fa8bd6df malcolmnetsec/file-monitor:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 3310/tcp, 8440/tcp malcolm-file-monitor-1 25c83f14413d malcolmnetsec/zeek:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes malcolm-zeek-live-1 b321a96c0362 malcolmnetsec/api:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 5000/tcp malcolm-api-1 0f1f4ac023f9 malcolmnetsec/name-map-ui:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 8080/tcp malcolm-name-map-ui-1 ba4d553cf6b5 malcolmnetsec/suricata:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes malcolm-suricata-live-1 e4637d0ec04d malcolmnetsec/opensearch:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 13 minutes (health: starting) 9200/tcp, 9300/tcp, 9600/tcp, 9650/tcp malcolm-opensearch-1 ac002e31d9be malcolmnetsec/htadmin:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 80/tcp malcolm-htadmin-1 7223d5244a7b malcolmnetsec/pcap-capture:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes malcolm-pcap-capture-1 971931b21788 malcolmnetsec/freq:6.2.0 "/usr/local/bin/dock…" 17 minutes ago Up 17 minutes (unhealthy) 10004/tcp malcolm-freq-1
También puedes verificar todos los puertos de escucha utilizando el siguiente comando:
ss -atlnp | grep -i docker
Deberías ver la siguiente salida:
LISTEN 0 65535 127.0.0.1:5601 0.0.0.0:* users:(("docker-proxy",pid=7480,fd=4)) LISTEN 0 65535 0.0.0.0:488 0.0.0.0:* users:(("docker-proxy",pid=7519,fd=4)) LISTEN 0 65535 127.0.0.1:9200 0.0.0.0:* users:(("docker-proxy",pid=7443,fd=4)) LISTEN 0 65535 127.0.0.1:5044 0.0.0.0:* users:(("docker-proxy",pid=6247,fd=4)) LISTEN 0 65535 127.0.0.1:5045 0.0.0.0:* users:(("docker-proxy",pid=7063,fd=4)) LISTEN 0 65535 127.0.0.1:8022 0.0.0.0:* users:(("docker-proxy",pid=6826,fd=4)) LISTEN 0 65535 0.0.0.0:443 0.0.0.0:* users:(("docker-proxy",pid=7567,fd=4))
Accede a Malcolm
Ahora puedes acceder al panel de control de Malcolm OpenSearch utilizando la URL https://your-server-ip/dashboards/. Se te pedirá que proporciones tu nombre de usuario y contraseña de administrador:
Proporciona tu nombre de usuario y contraseña de administrador y haz clic en el botón Iniciar sesión. Deberías ver el panel de control de OpenSearch en la siguiente pantalla:
Para acceder a la pantalla de Carga de Archivos de Captura de Malcolm y Archivos de Registro, escribe la URL https://your-server-ip/upload/.
Para acceder al editor de asignación de nombres de host y subred, escribe la URL https://your-server-ip/name-map-ui/.
Para acceder a la pantalla de Gestión de Cuentas, utiliza la URL https://your-server-ip:488/.
Enhorabuena! has instalado y configurado correctamente la herramienta de análisis de tráfico de red Malcolm en Ubuntu 22.04.