Installation · 9 min read · Oct 29, 2025

Comment installer l'outil d'analyse du trafic réseau Malcolm sur Ubuntu 22.04

Malcolm est un outil d’analyse du trafic réseau simple, facile à utiliser et puissant. Il est capable de capturer des artefacts (fichiers PCAP) et des journaux Zeek. Malcolm fournit un cadre interconnecté qui le rend supérieur à la somme de ses parties. Le déploiement facile et flexible de Malcolm, ainsi que sa combinaison robuste d’outils, comblent un vide dans le domaine de la sécurité réseau et rendent l’analyse avancée du trafic réseau accessible à de nombreux acteurs des secteurs public et privé.

Dans cet article, nous allons vous montrer comment installer l’outil d’analyse du trafic réseau Malcolm sur Ubuntu 22.04.

Prérequis

  • Un serveur exécutant Ubuntu 22.04.
  • Minimum 16 Go de RAM et 4 cœurs CPU.
  • Un mot de passe root configuré sur le serveur.

Créer un utilisateur système Malcolm

Tout d’abord, vous devrez créer un compte utilisateur dédié pour exécuter Malcolm. Vous pouvez le créer avec la commande suivante :

useradd -m -d /opt/malcolm -s /bin/bash -G sudo malcolm

Ensuite, définissez le mot de passe de l’utilisateur avec la commande suivante :

passwd malcolm

Ensuite, vérifiez l’UID de l’utilisateur Malcolm avec la commande suivante :

id malcolm

Vous devriez voir la sortie suivante :

uid=1000(malcolm) gid=1000(malcolm) groups=1000(malcolm),27(sudo)

Installer Malcolm sur Ubuntu 22.04

Tout d’abord, passez à l’utilisateur Malcolm et téléchargez la dernière version de Malcolm en utilisant la commande suivante :

su - malcolm  
git clone https://github.com/idaholab/Malcolm

Une fois le téléchargement terminé, changez de répertoire pour le répertoire téléchargé et commencez à installer Malcolm en utilisant la commande suivante :

cd Malcolm  
sudo ./scripts/install.py

Pendant l’installation, vous serez invité à répondre à plusieurs questions, comme indiqué ci-dessous :

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

Une fois que Malcolm est installé, vous pouvez passer à l’étape suivante.

Configurer Malcolm

Après avoir installé Malcolm, vous devrez le configurer en utilisant la commande suivante :

sudo ./scripts/install.py --configure

Pendant la configuration de Malcolm, vous serez invité à répondre à plusieurs questions. Répondez à toutes les questions comme indiqué ci-dessous :

  • Les processus de Malcolm s’exécuteront avec l’UID 1000 et le GID 1000. Est-ce correct ? (Y/n): Y
  • Définir 10 Go pour OpenSearch et 3 Go pour Logstash. Est-ce correct ? oui
  • Définir 3 travailleurs pour les pipelines Logstash. Est-ce correct ? (Y/n): oui
  • Redémarrer Malcolm lors du redémarrage du système ou du démon Docker ? Oui Ensuite, choisissez l’option par défaut, unless-stopped.
  • Choisissez si vous souhaitez configurer Malcolm avec HTTPS : Oui
  • Choisissez si Malcolm fonctionnera derrière un proxy : Non
  • Choisissez le réseau : Appuyez simplement sur Entrée pour accepter les valeurs par défaut. Choisissez LDAP : Non
  • Stocker les instantanés d’index OpenSearch localement dans /opt/malcolm/Malcom/opensearch-backup ? Oui
  • Choisissez de compresser les instantanés d’index OpenSearch : Oui
  • Souhaitez-vous supprimer les indices les plus anciens lorsque la base de données dépasse une certaine taille : Non
  • Recherche DNS inversée localement pour les adresses IP source et destination dans les journaux : Non
  • Recherches OUI de fournisseur matériel pour les adresses MAC : Oui
  • Effectuer un scoring de randomité de chaîne sur certains champs : oui
  • Exposer le port OpenSearch aux hôtes externes : non
  • Exposer le port Logstash aux hôtes externes : non
  • Transférer les journaux Logstash vers une instance OpenSearch externe : non
  • Exposer le port TCP Filebeat aux hôtes externes : non
  • Activer l’extraction de fichiers avec Zeek : oui
  • Choisissez intéressant comme comportement d’extraction. Choisissez la méthode de préservation des fichiers : quarantaine
  • Scanner les fichiers extraits/fichiers PE avec ClamAV : oui
  • Scanner les fichiers extraits/fichiers PE avec Yara : oui
  • Scanner les fichiers extraits/fichiers PE avec Capa : oui
  • Rechercher les hachages de fichiers extraits avec VirusTotal : non
  • Télécharger périodiquement les signatures de scanner mises à jour : oui
  • Malcolm doit-il capturer le trafic réseau dans des fichiers PCAP : oui
  • Spécifiez l’interface(s) de capture (séparées par des virgules) sur laquelle Malcolm utilisera le trafic réseau : eth0
  • Capturer les paquets en utilisant netsniff-ng ? (Y/n): oui
  • Capturer les paquets en utilisant tcpdump ? (y/N): non
  • Filtre de capture (expression de filtre similaire à tcpdump ; laissez vide pour capturer tout le trafic) (): Vous pouvez désactiver le trafic lié à Elasticsearch (port 9200), Logstash (5044), Arkime(8005): not port 9200 and not port 5044 and not port 8005
  • Désactiver le déchargement matériel de l’interface de capture et ajuster les tailles de tampon circulaire ? (y/N): n

Une fois que Malcolm a été configuré, redémarrez votre système pour appliquer la configuration.

sudo reboot

Créer un compte administrateur Malcolm

Ensuite, vous devrez créer un compte administratif pour accéder à l’interface web de Malcolm.

Tout d’abord, passez à l’utilisateur Malcolm et naviguez vers le répertoire Malcolm en utilisant la commande suivante :

su - malcolm  
cd ~/Malcolm

Ensuite, exécutez la commande suivante pour créer un compte admin :

./scripts/auth_setup

Répondez à toutes les questions comme indiqué ci-dessous pour créer un compte admin :

  • Stocker le nom d’utilisateur/mot de passe administrateur pour l’accès local à Malcolm ? oui
  • Définir le mot de passe et le nom d’utilisateur administrateur.
  • (Re)générer des certificats SSL auto-signés pour le trafic web HTTPS : oui
  • (Re)générer des certificats auto-signés pour un transmetteur de journaux distant : oui
  • Stocker le nom d’utilisateur/mot de passe pour le transfert des événements Logstash vers une instance OpenSearch externe secondaire : non. Stocker le nom d’utilisateur/mot de passe pour le compte d’expéditeur d’alerte par e-mail : non

Télécharger les images Docker de Malcolm

Ensuite, vous devrez télécharger toutes les images Docker requises depuis le registre Docker Hub. Vous pouvez tout télécharger avec la commande suivante :

docker-compose pull

Une fois toutes les images téléchargées, vérifiez toutes les images en utilisant la commande suivante :

docker images

Vous devriez obtenir la sortie suivante :

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

Démarrer le service Malcolm

À ce stade, tous les composants requis pour Malcolm sont prêts. Vous pouvez maintenant démarrer le service Malcolm en utilisant la commande suivante :

./scripts/start

Attendez un certain temps pour démarrer tous les services. Une fois tous les services démarrés, vérifiez tous les services en cours d’exécution en utilisant la commande suivante :

docker ps -a

Vous devriez voir tous les conteneurs en cours d’exécution dans la sortie suivante :

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

Vous pouvez également vérifier tous les ports à l’écoute en utilisant la commande suivante :

ss -atlnp | grep -i docker

Vous devriez voir la sortie suivante :

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))

Accéder à Malcolm

Vous pouvez maintenant accéder au tableau de bord OpenSearch de Malcolm en utilisant l’URL https://your-server-ip/dashboards/. Vous serez invité à fournir votre nom d’utilisateur et votre mot de passe administrateur :

Fournissez votre nom d’utilisateur administrateur, votre mot de passe et cliquez sur le bouton Se connecter. Vous devriez voir le tableau de bord OpenSearch à l’écran suivant :

Pour accéder à l’écran de téléchargement de fichiers de capture et d’archives de journaux de Malcolm, tapez l’URL https://your-server-ip/upload/.

Pour accéder à l’éditeur de mappage des noms d’hôtes et de sous-réseaux, tapez l’URL https://your-server-ip/name-map-ui/.

Pour accéder à l’écran de gestion des comptes, utilisez l’URL https://your-server-ip:488/

Félicitations ! Vous avez réussi à installer et configurer l’outil d’analyse du trafic réseau Malcolm sur Ubuntu 22.04.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.