Comment construire un SIEM avec Suricata et Elastic Stack sur Rocky Linux 8

De Get Docs
Aller à :navigation, rechercher

Introduction

Les didacticiels précédents de cette série vous ont guidé dans l'installation, la configuration et l'exécution de Suricata en tant que système de détection d'intrusion (IDS) et de prévention d'intrusion (IPS). Vous avez également appris les règles de Suricata et comment créer les vôtres.

Dans ce didacticiel, vous découvrirez comment intégrer Suricata à Elasticsearch, Kibana et Filebeat pour commencer à créer votre propre outil de gestion des informations et des événements de sécurité (SIEM) à l'aide de la pile Elastic et de Rocky Linux 8. Les outils SIEM sont utilisés pour collecter, agréger, stocker et analyser les données d'événements afin de rechercher les menaces de sécurité et les activités suspectes sur vos réseaux et serveurs.

Les composants que vous utiliserez pour construire votre propre SIEM sont :

  • Elasticsearch pour stocker, indexer, corréler et rechercher les événements de sécurité provenant de votre serveur Suricata.
  • Kibana pour afficher et parcourir les journaux des événements de sécurité stockés dans Elasticsearch.
  • Filebeat pour analyser le fichier journal eve.json de Suricata et envoyer chaque événement à Elasticsearch pour traitement.
  • Suricata pour analyser votre trafic réseau à la recherche d'événements suspects et enregistrer ou supprimer les paquets non valides.

Vous allez d'abord installer et configurer Elasticsearch et Kibana avec des paramètres d'authentification spécifiques. Ensuite, vous ajouterez Filebeat à votre système Suricata pour envoyer ses journaux eve.json à Elasticsearch.

Enfin, vous apprendrez à vous connecter à Kibana à l'aide de SSH et de votre navigateur Web, puis à charger et à interagir avec les tableaux de bord Kibana qui affichent les événements et les alertes de Suricata.

Conditions préalables

Si vous avez suivi cette série de didacticiels, vous devriez déjà avoir Suricata en cours d'exécution sur un serveur Rocky Linux. Ce serveur sera appelé votre serveur Suricata.

Vous aurez également besoin d'un deuxième serveur pour héberger Elasticsearch et Kibana. Ce serveur sera appelé votre serveur Elasticsearch. Il devrait s'agir d'un serveur Rocky Linux 8 avec :

Pour les besoins de ce didacticiel, les deux serveurs doivent pouvoir communiquer à l'aide d'adresses IP privées. Vous pouvez utiliser un VPN comme WireGuard pour connecter vos serveurs, ou utiliser un fournisseur de cloud qui dispose d'un réseau privé entre les hôtes. Vous pouvez également choisir d'exécuter Elasticsearch, Kibana, Filebeat et Suricata sur le même serveur pour expérimenter.

Étape 1 - Installation d'Elasticsearch et de Kibana

La première étape de ce didacticiel consiste à installer Elasticsearch et Kibana sur votre serveur Elasticsearch. Pour commencer, ajoutez la clé Elastic GPG à votre serveur avec la commande suivante :

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Ensuite, créez un fichier elasticsearch.repo dans votre répertoire /etc/yum/yum.repos.d avec le contenu suivant, en utilisant vi ou votre éditeur préféré. Cela garantit que les référentiels Elasticsearch en amont seront utilisés lors de l'installation de nouveaux packages via yum :

sudo vi /etc/yum.repos.d/elasticsearch.repo

/etc/yum.repos.d/elasticsearch.repo

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Si vous utilisez vi, lorsque vous avez terminé d'apporter des modifications, appuyez sur ESC puis sur :x pour écrire les modifications dans le fichier et quitter.

Installez maintenant Elasticsearch et Kibana à l'aide de la commande dnf. Appuyez sur Y pour accepter toutes les invites concernant les empreintes digitales de la clé GPG :

sudo dnf install --enablerepo=elasticsearch elasticsearch kibana

L'option --enablerepo est utilisée pour remplacer le paramètre désactivé par défaut dans le fichier /etc/yum.repos.d/elasticsearch.repo. Cette approche garantit que les packages Elasticsearch et Kibana ne sont pas mis à niveau accidentellement lorsque vous installez d'autres mises à jour de packages sur votre serveur.

Une fois l'installation des packages terminée, recherchez et enregistrez l'adresse IP privée de votre serveur à l'aide de la commande ip address show :

ip -brief address show

Vous recevrez une sortie comme celle-ci :

Outputlo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             159.89.122.115/20 10.20.0.8/16 2604:a880:cad:d0::e56:8001/64 fe80::b832:69ff:fe46:7e5d/64
eth1             UP             10.137.0.5/16 fe80::b883:5bff:fe19:43f3/64

L'interface de réseau privé dans cette sortie est le périphérique eth1 en surbrillance, avec l'adresse IPv4 10.137.0.5. Le nom de votre appareil et les adresses IP seront différents. Quels que soient le nom de votre appareil et votre adresse IP privée, l'adresse proviendra des blocs réservés suivants :

  • 10.0.0.0 à 10.255.255.255 (préfixe 10/8)
  • 172.16.0.0 à 172.31.255.255 (préfixe 172.16/12)
  • 192.168.0.0 à 192.168.255.255 (préfixe 192.168/16)

Si vous souhaitez en savoir plus sur la façon dont ces blocs sont alloués, consultez la spécification RFC 1918)


Enregistrez l'adresse IP privée de votre serveur Elasticsearch (dans ce cas 10.137.0.5). Cette adresse sera appelée your_private_ip dans la suite de ce didacticiel. Notez également le nom de l'interface réseau, dans ce cas eth1. Dans la prochaine partie de ce tutoriel, vous configurerez Elasticsearch et Kibana pour écouter les connexions sur l'adresse IP privée provenant de votre serveur Suricata.

Étape 2 - Configuration d'Elasticsearch

Elasticsearch est configuré pour n'accepter que les connexions locales par défaut. De plus, aucune authentification n'est activée, de sorte que des outils tels que Filebeat ne pourront pas lui envoyer de journaux. Dans cette section du didacticiel, vous allez configurer les paramètres réseau pour Elasticsearch, puis activer le module de sécurité xpack intégré d'Elasticsearch.

Configuration de la mise en réseau Elasticsearch

Étant donné que vos serveurs Elasticsearch et Suricata sont distincts, vous devrez configurer Elasticsearch pour écouter les connexions sur son interface réseau privée.

Ouvrez le fichier /etc/elasticsearch/elasticsearch.yml à l'aide de vi ou de votre éditeur préféré :

sudo vi /etc/elasticsearch/elasticsearch.yml

Recherchez la ligne #network.host: 192.168.0.1 commentée entre les lignes 50 à 60 et ajoutez une nouvelle ligne après celle-ci qui configure le paramètre network.bind_host, comme indiqué ci-dessous :

# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
#network.host: 192.168.0.1
network.bind_host: ["127.0.0.1", "your_private_ip"]
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:

Remplacez votre IP privée à la place de l'adresse your_private_ip. Cette ligne garantira qu'Elasticsearch est toujours disponible sur son adresse locale afin que Kibana puisse l'atteindre, ainsi que sur l'adresse IP privée de votre serveur.

Ensuite, allez à la fin du fichier en utilisant le raccourci vi SHIFT+G.

Ajoutez les lignes en surbrillance suivantes à la fin du fichier :

. . .
discovery.type: single-node
xpack.security.enabled: true

Le paramètre discovery.type permet à Elasticsearch de s'exécuter en tant que nœud unique, par opposition à un cluster d'autres serveurs Elasticsearch. Le paramètre xpack.security.enabled active certaines des fonctionnalités de sécurité incluses dans Elasticsearch.

Enregistrez et fermez le fichier lorsque vous avez terminé de le modifier.

Enfin, ajoutez des règles de pare-feu pour vous assurer que votre serveur Elasticsearch est accessible sur son interface réseau privée. Si vous avez suivi les tutoriels prérequis et utilisez firewalld, exécutez les commandes suivantes :

sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
sudo firewall-cmd --permanent --zone=internal --add-service=elasticsearch
sudo firewall-cmd --permanent --zone=internal --add-service=kibana
sudo systemctl reload firewalld.service

Remplacez le nom de votre interface réseau privée par eth1 dans la première commande si le vôtre est différent. Cette commande modifie les règles d'interface pour utiliser la zone internal Firewalld, qui est plus permissive que la zone par défaut public.

Les commandes suivantes ajoutent des règles pour autoriser le trafic Elasticsearch sur les ports 9200 et 9300, ainsi que le trafic Kibana sur le port 5601.

La commande finale recharge le service Firewalld avec les nouvelles règles permanentes en place.

Ensuite, vous allez démarrer le démon Elasticsearch, puis configurer les mots de passe à utiliser avec le module de sécurité xpack.

Démarrage d'Elasticsearch

Maintenant que vous avez configuré la mise en réseau et les paramètres de sécurité xpack pour Elasticsearch, vous devez le démarrer pour que les modifications prennent effet.

Exécutez la commande systemctl suivante pour démarrer Elasticsearch :

sudo systemctl start elasticsearch.service

Une fois qu'Elasticsearch a fini de démarrer, vous pouvez passer à la section suivante de ce didacticiel où vous générerez des mots de passe pour les utilisateurs par défaut intégrés à Elasticsearch.

Configuration des mots de passe Elasticsearch

Maintenant que vous avez activé le paramètre xpack.security.enabled, vous devez générer des mots de passe pour les utilisateurs Elasticsearch par défaut. Elasticsearch inclut un utilitaire dans le répertoire /usr/share/elasticsearch/bin qui peut générer automatiquement des mots de passe aléatoires pour ces utilisateurs.

Exécutez la commande suivante pour cd dans le répertoire, puis générez des mots de passe aléatoires pour tous les utilisateurs par défaut :

cd /usr/share/elasticsearch/bin
sudo ./elasticsearch-setup-passwords auto

Vous recevrez une sortie comme celle-ci. Lorsque vous êtes invité à continuer, appuyez sur y puis sur RETURN ou ENTER :

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = eWqzd0asAmxZ0gcJpOvn

Changed password for user kibana_system
PASSWORD kibana_system = 1HLVxfqZMd7aFQS6Uabl

Changed password for user kibana
PASSWORD kibana = 1HLVxfqZMd7aFQS6Uabl

Changed password for user logstash_system
PASSWORD logstash_system = wUjY59H91WGvGaN8uFLc

Changed password for user beats_system
PASSWORD beats_system = 2p81hIdAzWKknhzA992m

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = 85HF85Fl6cPslJlA8wPG

Changed password for user elastic
PASSWORD elastic = 6kNbsxQGYZ2EQJiqJpgl

Vous ne pourrez plus exécuter l'utilitaire, alors assurez-vous d'enregistrer ces mots de passe dans un endroit sûr. Vous devrez utiliser le mot de passe de l'utilisateur kibana_system dans la section suivante de ce didacticiel, et le mot de passe de l'utilisateur elastic à l'étape Configuration de Filebeat de ce didacticiel.

À ce stade du didacticiel, vous avez terminé de configurer Elasticsearch. La section suivante explique comment configurer les paramètres réseau de Kibana et son module de sécurité xpack.

Étape 3 - Configuration de Kibana

Dans la section précédente de ce didacticiel, vous avez configuré Elasticsearch pour écouter les connexions sur l'adresse IP privée de votre serveur Elasticsearch. Vous devrez faire de même pour Kibana afin que Filebeats sur votre serveur Suricata puisse l'atteindre.

Vous allez d'abord activer la fonctionnalité de sécurité xpack de Kibana en générant des secrets que Kibana utilisera pour stocker des données dans Elasticsearch. Ensuite, vous configurerez les paramètres réseau et les détails d'authentification de Kibana pour vous connecter à Elasticsearch.

Activation de xpack.security dans Kibana

Pour commencer avec les paramètres de sécurité xpack dans Kibana, vous devez générer des clés de chiffrement. Kibana utilise ces clés pour stocker les données de session (comme les cookies), ainsi que divers tableaux de bord et vues de données enregistrés dans Elasticsearch.

Vous pouvez générer les clés de chiffrement requises à l'aide de l'utilitaire kibana-encryption-keys inclus dans le répertoire /usr/share/kibana/bin. Exécutez ce qui suit sur cd dans le répertoire, puis générez les clés :

cd /usr/share/kibana/bin/
sudo ./kibana-encryption-keys generate -q --force

L'indicateur -q supprime les instructions de l'outil, et l'indicateur --force garantira que vous créez de nouvelles clés. Vous devriez recevoir une sortie comme celle-ci :

Outputxpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585
xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef
xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

Copiez ces trois clés dans un endroit sûr. Vous allez maintenant les ajouter au fichier de configuration /etc/kibana/kibana.yml de Kibana.

Ouvrez le fichier en utilisant vi ou votre éditeur préféré :

sudo vi /etc/kibana/kibana.yml

Allez à la fin du fichier en utilisant le raccourci vi SHIFT+G. Collez les trois lignes xpack que vous avez copiées à la fin du fichier :

/etc/kibana/kibana.yml

. . .

# Specifies locale to be used for all localizable strings, dates and number formats.
# Supported languages are the following: English - en , by default , Chinese - zh-CN .
#i18n.locale: "en"

xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585
xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef
xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

Gardez le fichier ouvert et passez à la section suivante où vous allez configurer les paramètres réseau de Kibana.

Configuration de la mise en réseau Kibana

Pour configurer la mise en réseau de Kibana afin qu'elle soit disponible sur l'adresse IP privée de votre serveur Elasticsearch, recherchez la ligne commentée #server.host: "localhost" dans /etc/kibana/kibana.yml. La ligne est près du début du fichier. Ajoutez une nouvelle ligne après celle-ci avec l'adresse IP privée de votre serveur, comme indiqué ci-dessous :

/etc/kibana/kibana.yml

# Kibana is served by a back end server. This setting specifies the port to use.
#server.port: 5601

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
#server.host: "localhost"
server.host: "your_private_ip"

Remplacez votre IP privée à la place de l'adresse your_private_ip.

Enregistrez et fermez le fichier lorsque vous avez terminé de le modifier. Ensuite, vous devrez configurer le nom d'utilisateur et le mot de passe que Kibana utilise pour se connecter à Elasticsearch.

Configuration des identifiants Kibana

Il existe deux façons de définir le nom d'utilisateur et le mot de passe que Kibana utilise pour s'authentifier auprès d'Elasticsearch. La première consiste à modifier le fichier de configuration /etc/kibana/kibana.yml et à y ajouter les valeurs. La deuxième méthode consiste à stocker les valeurs dans le keystore de Kibana, qui est un fichier masqué que Kibana peut utiliser pour stocker des secrets.

Nous utiliserons la méthode keystore dans ce tutoriel car elle évite de modifier directement le fichier de configuration de Kibana.

Si vous préférez éditer le fichier à la place, les paramètres à configurer dans celui-ci sont elasticsearch.username et elasticsearch.password.

Si vous choisissez de modifier le fichier de configuration, ignorez le reste des étapes de cette section.


Pour ajouter un secret au magasin de clés à l'aide de l'utilitaire kibana-keystore, commencez par cd dans le répertoire /usr/share/kibana/bin. Ensuite, exécutez la commande suivante pour définir le nom d'utilisateur de Kibana :

cd /usr/share/kibana/bin
sudo ./kibana-keystore add elasticsearch.username

Vous recevrez une invite semblable à celle-ci :

Entrée du nom d'utilisateur

Enter value for elasticsearch.username: *************

Entrez kibana_system lorsque vous y êtes invité, soit en copiant et collant, soit en tapant soigneusement le nom d'utilisateur. Chaque caractère saisi sera masqué par un astérisque *. Appuyez sur ENTER ou RETURN lorsque vous avez terminé d'entrer le nom d'utilisateur.

Répétez maintenant le processus, cette fois pour enregistrer le mot de passe. Assurez-vous de copier le mot de passe de l'utilisateur kibana_system que vous avez généré dans la section précédente de ce didacticiel. Pour référence, dans ce didacticiel, l'exemple de mot de passe est 1HLVxfqZMd7aFQS6Uabl.

Exécutez la commande suivante pour définir le mot de passe :

sudo ./kibana-keystore add elasticsearch.password

Lorsque vous y êtes invité, collez le mot de passe pour éviter toute erreur de transcription :

Saisie du mot de passe

Enter value for elasticsearch.password: ********************

Démarrage de Kibana

Maintenant que vous avez configuré la mise en réseau et les paramètres de sécurité xpack pour Kibana, ainsi que les informations d'identification ajoutées au magasin de clés, vous devez le démarrer pour que les modifications prennent effet.

Exécutez la commande systemctl suivante pour redémarrer Kibana :

sudo systemctl start kibana.service

Une fois Kibana démarré, vous pouvez passer à la section suivante de ce didacticiel où vous configurerez Filebeat sur votre serveur Suricata pour envoyer ses journaux à Elasticsearch.

Étape 4 - Installation de Filebeat

Maintenant que vos processus Elasticsearch et Kibana sont configurés avec les paramètres de réseau et d'authentification corrects, l'étape suivante consiste à installer et à configurer Filebeat sur votre serveur Suricata.

Pour commencer à installer Filebeat, ajoutez la clé Elastic GPG à votre serveur Suricata avec la commande suivante :

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Ensuite, créez un fichier elasticsearch.repo dans votre répertoire /etc/yum/yum.repos.d avec le contenu suivant, en utilisant vi ou votre éditeur préféré :

sudo vi /etc/yum.repos.d/elasticsearch.repo

/etc/yum.repos.d/elasticsearch.repo

[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md

Lorsque vous avez terminé d'apporter des modifications, enregistrez et quittez le fichier. Installez maintenant le package Filebeat à l'aide de la commande dnf :

sudo dnf install --enablerepo=elasticsearch filebeat

Ensuite, vous devrez configurer Filebeat pour vous connecter à la fois à Elasticsearch et à Kibana. Ouvrez le fichier de configuration /etc/filebeat/filebeat.yml à l'aide de vi ou de votre éditeur préféré :

sudo vi /etc/filebeat/filebeat.yml

Trouvez la section Kibana du fichier autour de la ligne 100. Ajoutez une ligne après la ligne commentée #host: "localhost:5601" qui pointe vers l'adresse IP privée et le port de votre instance Kibana :

/etc/filebeat/filebeat.yml

. . .
# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  #host: "localhost:5601"
  host: "your_private_ip:5601"

. . .

Ce changement garantira que Filebeat peut se connecter à Kibana afin de créer les différents index SIEM, tableaux de bord et pipelines de traitement dans Elasticsearch pour gérer vos journaux Suricata.

Ensuite, recherchez la section Elasticsearch Output du fichier autour de la ligne 130 et modifiez les paramètres hosts, username et password pour qu'ils correspondent aux valeurs de votre serveur Elasticsearch. :

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["your_private_ip:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  username: "elastic"
  password: "6kNbsxQGYZ2EQJiqJpgl"

. . .

Remplacez l'adresse IP privée de votre serveur Elasticsearch sur la ligne hosts. Décommentez le champ username et laissez-le défini sur l'utilisateur elastic. Remplacez le champ password par changeme par le mot de passe de l'utilisateur elastic que vous avez généré dans la section Configuration des mots de passe Elasticsearch de ce didacticiel.

Enregistrez et fermez le fichier lorsque vous avez terminé de le modifier. Ensuite, activez le module Suricata intégré de Filebeats avec la commande suivante :

sudo filebeat modules enable suricata

Maintenant que Filebeat est configuré pour se connecter à Elasticsearch et Kibana, avec le module Suricata activé, l'étape suivante consiste à charger les tableaux de bord et les pipelines SIEM dans Elasticsearch.

Exécutez la commande filebeat setup. Cela peut prendre quelques minutes pour tout charger :

sudo filebeat setup

Une fois la commande terminée, vous devriez recevoir une sortie comme celle-ci :

OutputOverwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.

Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead.
See more: https://www.elastic.co/guide/en/machine-learning/current/index.html
It is not possble to load ML jobs into an Elasticsearch 8.0.0 or newer using the Beat.
Loaded machine learning job configurations
Loaded Ingest pipelines

S'il n'y a pas d'erreurs, utilisez la commande systemctl pour démarrer Filebeat. Il commencera à envoyer des événements du journal eve.json de Suricata à Elasticsearch une fois qu'il sera en cours d'exécution.

sudo systemctl start filebeat.service

Maintenant que Filebeat, Kibana et Elasticsearch sont configurés pour traiter vos journaux Suricata, la dernière étape de ce didacticiel consiste à vous connecter à Kibana et à explorer les tableaux de bord SIEM.

Étape 5 - Navigation dans les tableaux de bord SIEM de Kibana

Kibana est le composant graphique de la pile Elastic. Vous utiliserez Kibana avec votre navigateur pour explorer les données d'événements et d'alertes de Suricata. Étant donné que vous avez configuré Kibana pour qu'il ne soit disponible que via l'adresse IP privée de votre serveur Elasticsearch, vous devrez utiliser un tunnel SSH pour vous connecter à Kibana.

Se connecter à Kibana avec SSH

SSH a une option -L qui vous permet de transférer le trafic réseau sur un port local via sa connexion vers une adresse IP distante et un port sur un serveur. Vous utiliserez cette option pour transférer le trafic de votre navigateur vers votre instance Kibana.

Sous Linux, macOS et les versions mises à jour de Windows 10 et versions ultérieures, vous pouvez utiliser le client SSH intégré pour créer le tunnel. Vous utiliserez cette commande chaque fois que vous voudrez vous connecter à Kibana. Vous pouvez fermer cette connexion à tout moment, puis exécuter à nouveau la commande SSH pour rétablir le tunnel.

Exécutez la commande suivante dans un terminal sur votre ordinateur de bureau ou portable local pour créer le tunnel SSH vers Kibana :

ssh -L 5601:your_private_ip:5601 [email protected] -N

Les différents arguments de SSH sont :

  • L'indicateur -L transfère le trafic vers votre système local sur le port 5601 vers le serveur distant.
  • La partie your_private_ip:5601 de la commande spécifie le service sur votre serveur Elasticsearch vers lequel votre trafic sera transféré. Dans ce cas, ce service est Kibana. Assurez-vous de remplacer l'adresse IP privée de votre serveur Elasticsearch par your_private_ip.
  • L'adresse 203.0.113.5 est l'adresse IP publique que vous utilisez pour vous connecter et administrer votre serveur. Remplacez l'adresse IP publique de votre serveur Elasticsearch à sa place.
  • Le drapeau -N indique à SSH de pas exécuter une commande comme un shell interactif /bin/bash, et à la place de simplement maintenir la connexion ouverte. Il est généralement utilisé lors de la redirection de ports comme dans cet exemple.

Si vous souhaitez fermer le tunnel à tout moment, appuyez sur CTRL+C.

Sous Windows, votre terminal devrait ressembler à la capture d'écran suivante :

Remarque : Vous pouvez être invité à saisir un mot de passe si vous n'utilisez pas de clé SSH. Tapez-le ou collez-le dans l'invite et appuyez sur ENTER ou RETURN.


Sur macOS et Linux, votre terminal ressemblera à la capture d'écran suivante :

Une fois que vous vous êtes connecté à votre serveur Elasticsearch via SSH avec la redirection de port en place, ouvrez votre navigateur et visitez http://127.0.0.1:5601. Vous serez redirigé vers la page de connexion de Kibana :

Si votre navigateur ne peut pas se connecter à Kibana, vous recevrez un message comme celui-ci dans votre terminal :

Outputchannel 3: open failed: connect failed: No route to host

Cette erreur indique que votre tunnel SSH ne parvient pas à atteindre le service Kibana sur votre serveur. Assurez-vous d'avoir spécifié la bonne adresse IP privée pour votre serveur Elasticsearch et rechargez la page dans votre navigateur.

Connectez-vous à votre serveur Kibana en utilisant elastic pour le nom d'utilisateur et le mot de passe que vous avez copié précédemment dans ce didacticiel pour l'utilisateur.

Parcourir les tableaux de bord Kibana SIEM

Une fois connecté à Kibana, vous pouvez explorer les tableaux de bord Suricata que Filebeat a configurés pour vous.

Dans le champ de recherche en haut de la page d'accueil de Kibana, saisissez les termes de recherche type:dashboard suricata. Cette recherche renverra deux résultats : les tableaux de bord Événements Suricata et Alertes Suricata selon la capture d'écran suivante :

Cliquez sur le résultat [Filebeat Suricata] Events Overview pour accéder au tableau de bord Kibana qui affiche un aperçu de tous les événements Suricata enregistrés :

Pour visiter le tableau de bord des alertes Suricata, répétez la recherche ou cliquez sur le lien Alerts qui est inclus dans le tableau de bord des événements. Votre page devrait ressembler à la capture d'écran suivante :

Si vous souhaitez inspecter les événements et les alertes affichés par chaque tableau de bord, faites défiler jusqu'au bas de la page où vous trouverez un tableau répertoriant chaque événement et alerte. Vous pouvez développer chaque entrée pour afficher l'entrée de journal d'origine de Suricata et examiner en détail les différents champs tels que les adresses IP source et de destination pour une alerte, le type d'attaque, l'ID de signature Suricata, etc.

Kibana dispose également d'un ensemble intégré de tableaux de bord de sécurité auxquels vous pouvez accéder en utilisant le menu sur le côté gauche de la fenêtre du navigateur. Accédez au Tableau de bord du réseau pour obtenir un aperçu des événements affichés sur une carte, ainsi que des données agrégées sur les événements sur votre réseau. Votre tableau de bord doit ressembler à la capture d'écran suivante :

Vous pouvez faire défiler vers le bas du tableau de bord du réseau pour un tableau qui répertorie tous les événements qui correspondent à votre période de recherche spécifiée. Vous pouvez également examiner chaque événement en détail ou sélectionner un événement pour générer une chronologie Kibana, que vous pouvez ensuite utiliser pour enquêter sur des flux de trafic, des alertes ou des identifiants de communauté spécifiques.

Conclusion

Dans ce tutoriel, vous avez installé et configuré Elasticsearch et Kibana sur un serveur autonome. Vous avez configuré les deux outils pour qu'ils soient disponibles sur une adresse IP privée. Vous avez également configuré les paramètres d'authentification d'Elasticsearch et de Kibana à l'aide du module de sécurité xpack inclus avec chaque outil.

Après avoir terminé les étapes de configuration d'Elasticsearch et de Kibana, vous avez également installé et configuré Filebeat sur votre serveur Suricata. Vous avez utilisé Filebeat pour remplir les tableaux de bord de Kibana et commencer à envoyer des journaux Suricata à Elasticsearch.

Enfin, vous avez créé un tunnel SSH vers votre serveur Elasticsearch et vous êtes connecté à Kibana. Vous avez localisé les nouveaux tableaux de bord Événements et Alertes Suricata, ainsi que le tableau de bord Réseau.

Le dernier didacticiel de cette série vous guidera dans l'utilisation de la fonctionnalité SIEM de Kibana pour traiter vos alertes Suricata. Vous y découvrirez comment créer des cas pour suivre des alertes spécifiques, des délais pour corréler les flux réseau et des règles pour faire correspondre des événements Suricata spécifiques que vous souhaitez suivre ou analyser plus en détail.