Recherche de site Web

Comment installer l’outil de surveillance de la sécurité réseau Zeek sur Ubuntu 24.04


Ce tutoriel existe pour ces versions de l’OS

  • Ubuntu 24.04 (Noble Numbat)
  • Ubuntu 22.04 (Méduse Jammy)

Sur cette page

  1. Conditions préalables
  2. Installation de Zeek
  3. Configuration de Zeek
  4. Utilisation de zeek-cut pour analyser les journaux Zeek
  5. Configuration de la sortie Zeek en JSON
  6. Analyse du format JSON Zeek avec jq
  7. Conclusion

Zeek (anciennement Bro) est une plateforme gratuite et open-source pour la surveillance de la sécurité des réseaux. Il s’agit d’un puissant analyseur de trafic réseau passif qui enquête sur les activités suspectes ou malveillantes. Zeek peut être utilisé comme moniteur de sécurité réseau (NSM) et prend en charge un large éventail d’analyses de trafic, du domaine de la sécurité à la mesure des performances et au dépannage.

Dans ce tutoriel, vous allez apprendre à installer l'outil de surveillance de la sécurité réseau Zeek sur le serveur Ubuntu 24.04. Vous apprendrez également à exécuter Zeek en mode cluster, à analyser le journal Zeek à l'aide de la commande « zeek-cut » et à générer et à analyser le journal JSON Zeek à l'aide de l'utilitaire « jq ».

Conditions préalables

Avant de commencer, assurez-vous d’avoir les éléments suivants :

  • Un serveur Ubuntu 24.04
  • Un utilisateur non root avec des privilèges d’administrateur

Installation de Zeek

Zeek est un outil de surveillance de la sécurité réseau de type Unix. Il peut être installé à l’aide de plusieurs méthodes. Dans cet exemple, vous allez installer Zeek sur le serveur Ubuntu 24.04 avec le gestionnaire de paquets APT à partir du service de compilation OpenSUSE.

Tout d’abord, exécutez la commande ci-dessous pour ajouter le référentiel Zeek à votre système Ubuntu.

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

Maintenant, téléchargez et ajoutez la clé GPG pour le dépôt Zeek avec la commande ci-dessous.

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

Une fois que la clé et le référentiel Zeek GPG sont ajoutés, exécutez la commande 'apt' ci-dessous pour mettre à jour votre paquet Ubuntu.

sudo apt update

Vous pouvez maintenant exécuter la commande 'apt' ci-dessous pour vérifier le paquet 'zeek'. Vous verrez plusieurs versions de Zeek.

sudo apt search zeek
sudo apt-cache policy zeek

Ensuite, installez Zeek avec la commande 'apt' suivante. Dans cet exemple, vous allez installer Zeek LTS.

sudo apt install zeek

Entrez « Y » pour confirmer l'installation.

Une fois l'installation terminée, ajoutez le répertoire '/opt/zeek/bin' au PATH du système via le fichier '~/.bashrc'. Ensuite, rechargez le fichier '~/.bashrc' pour appliquer vos nouvelles modifications. Avec cela, vous pouvez exécuter la ligne de commande Zeek via votre terminal.

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

Enfin, exécutez la commande 'zeek' ci-dessous pour vérifier la version de Zeek et les commandes et options de base.

zeek --version
zeek --help

Vous verrez une sortie comme celle-ci :

Configuration de Zeek

Une fois Zeek installé, vous devez configurer la façon dont Zeek s’exécutera sur votre infrastructure. Vous pouvez choisir d’exécuter Zeek en mode autonome ou en mode cluster. Pour les déploiements de grande envergure, vous pouvez utiliser le mode cluster, où les composants Zeek sont installés sur des serveurs distincts. À cette fin, nous allons définir et exécuter Zeek en mode cluster à l'aide d'un seul serveur.

Vérifiez l'adresse IP de votre serveur à l'aide de la commande 'ip' suivante. Dans cet exemple, nous avons l'adresse IP d'un serveur Ubuntu '192.168.10.60'.

ip a

Ouvrez la configuration réseau Zeek '/opt/zeek/etc/networks.cfg' avec l'éditeur 'nano'.

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

Entrez votre sous-réseau réseau de serveurs cibles comme suit.

192.168.10.0/24 Local Network

Enregistrez le fichier et quittez l’éditeur lorsque vous avez terminé.

Ouvrez maintenant la configuration du nœud Zeek '/opt/zeek/etc/node.cfg' à l'aide de 'nano'.

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

Commentez les lignes suivantes pour désactiver le mode autonome Zeek. Par défaut, Zeek s'exécute en mode autonome avec l'interface réseau par défaut 'localhost' et l'interface réseau 'eth0'.

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

Collez la configuration suivante pour exécuter Zeek en mode cluster au sein d’un seul serveur. Assurez-vous de changer l’adresse IP avec l’adresse IP de votre serveur Ubuntu. Comme vous pouvez le voir ci-dessous, le mode cluster Zeek comportera plusieurs composants tels que l’enregistreur, le gestionnaire, le proxy et les workers.

# 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

Lorsque vous avez terminé, enregistrez le fichier et quittez l’éditeur.

Ensuite, exécutez la commande 'zeekctl' ci-dessous pour vérifier votre syntaxe Zeek. Si vous avez une configuration correcte, vous verrez une sortie 'les scripts sont ok'.

zeekctl check

Exécutez maintenant la commande 'deploy' pour déployer votre installation Zeek. Avec cela, l’enregistreur, le gestionnaire, le proxy et les travailleurs Zeek seront démarrés.

zeekctl deploy

Vous pouvez vérifier chaque composant Zeek avec la commande ci-dessous.

zeekctl status

Dans le résultat ci-dessous, vous pouvez voir que chaque composant Zeek est en cours d’exécution. Cela signifie que le déploiement du nœud unique du cluster Zeek est réussi.

Utilisation de zeek-cut pour analyser les journaux Zeek

Maintenant que vous avez installé et déployé Zeek, les fichiers journaux de votre réseau seront générés dans le répertoire '/opt/zeek/logs/current'. Il y aura plusieurs fichiers journaux Zeek que vous devez connaître et garder à l’œil. Dans cette section, vous allez apprendre à utiliser l'utilitaire 'zeek-cut' pour générer des journaux au format TSV (Tab Separated Value).

Vérifiez le répertoire des journaux Zeek '/opt/zeek/logs/current' avec la commande 'ls' ci-dessous.

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

Vous verrez plusieurs fichiers journaux tels que :

  • conn.log : journal de connexion pour TCP et UDP. Ce fichier journal fournit les informations les plus utiles telles que l’horodatage, la durée de la connexion, le service et bien d’autres
  • dns.log : Le fichier journal DNS (Domain Name System)
  • http.log.log : Journal HTTP (HyperText Transfer Protocol)
  • ssh.log : Le journal Secure Shell (SSH) pour le suivi des connexions SSH.
  • ssl.log : le journal SSL (Secure Socket Layer) qui contient également le journal HTTPS

Allez maintenant dans le répertoire '/opt/zeek/logs/current' et pouvez exécuter la commande 'cat' pour afficher les journaux Zeek et diriger la sortie avec la commande 'zeek-cut' pour analyser la sortie au format 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

Dans cet exemple, nous allons vous montrer les valeurs des champs 'id.orig_h', 'query' et 'answers'.

Vous pouvez également utiliser la commande 'zeek-cut' comme suit pour traiter les journaux TSV et obtenir une sortie similaire.

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

Configuration de la sortie Zeek en JSON

Zeek prend en charge plusieurs formats de journaux, notamment TSV et JSON. Dans cette section, vous allez apprendre à générer un journal Zeek au format JSON. Ensuite, vous apprendrez à analyser les journaux JSON avec la ligne de commande « jq » afin de pouvoir lire facilement vos journaux.

Ouvrez la configuration Zeek '/opt/zeek/share/zeek/site/local.zeek' avec l'éditeur 'nano' suivant.

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

Décommentez la ligne suivante pour activer le journal de sortie au format JSON.

@load policy/tuning/json-logs

Enregistrez le fichier et quittez l’éditeur.

Exécutez maintenant la commande 'zeekctl' ci-dessous pour appliquer et déployer vos modifications. Et une fois le processus terminé, le format de journal JSON sera généré par Zeek.

zeekctl deploy

Vous pouvez voir le résultat suivant lors du déploiement de Zeek.

Ensuite, exécutez la commande 'cat' ci-dessous pour vérifier le fichier journal Zeek. Vous verrez que le journal Zeek est maintenant au format JSON.

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

Analyse du format JSON Zeek avec jq

Installez le paquet 'jq' avec la commande 'apt' ci-dessous.

sudo apt install jq -y

Une fois l'installation terminée, allez dans le répertoire '/opt/zeek/logs/current' avec la commande 'cd'.

cd /opt/zeek/logs/current/

Pour analyser les journaux au format JSON, exécutez la commande « jq » ci-dessous.

jq . dns.log

Si vous souhaitez avoir une sortie compacte, utilisez l'option '-c'comme suit :

jq . -c dns.log

Enfin, vous pouvez également spécifier des fichiers de journaux JSON avec la commande 'jq' ci-dessous.

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

Conclusion

Félicitations! Vous avez terminé l'installation de l'outil de surveillance réseau Zeek sur le serveur Ubuntu 24.04. Vous avez appris à déployer le mode cluster Zeek dans un seul nœud/serveur, à analyser le journal Zeek avec l'utilitaire « zeek-cut » pour générer le format TSV (Tab Separated Value), à générer le journal Zeek au format JSON et à analyser le journal JSON avec l'utilitaire « jq ». À partir de là, vous pouvez passer à l’étape suivante en envoyant votre journal JSON ou vos journaux Zeek à un système de journalisation centralisé tel que Graylog et ELK/EFK Stack.