Introduction
Les tutoriels prĂ©cĂ©dents de cette sĂ©rie vous ont guidĂ© Ă travers 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 sur les rĂšgles de Suricata et comment crĂ©er les vĂŽtres.
Dans ce tutoriel, vous explorerez comment intĂ©grer Suricata avec Elasticsearch, Kibana et Filebeat pour commencer Ă crĂ©er votre propre outil de gestion des informations et des Ă©vĂ©nements de sĂ©curitĂ© (SIEM) en utilisant l’empilement Elastic et 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 des menaces de sĂ©curitĂ© et des 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 naviguer dans les journaux d’Ă©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 scanner le trafic de votre rĂ©seau Ă la recherche d’Ă©vĂ©nements suspects et soit enregistrer soit abandonner les paquets invalides.
Tout d’abord, vous installerez et configurerez Elasticsearch et Kibana avec certains 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 en utilisant SSH et votre navigateur web, puis à charger et interagir avec les tableaux de bord de Kibana qui montrent les événements et les alertes de Suricata.
Prérequis
Si vous avez suivi cette sĂ©rie de tutoriels, vous devriez dĂ©jĂ avoir Suricata en cours d’exĂ©cution sur un serveur Rocky Linux. Ce serveur sera dĂ©signĂ© comme votre serveur Suricata.
- Si vous devez encore installer Suricata, vous pouvez suivre ce tutoriel qui explique Comment installer Suricata sur Rocky Linux 8.
Vous aurez Ă©galement besoin d’un deuxiĂšme serveur pour hĂ©berger Elasticsearch et Kibana. Ce serveur sera dĂ©signĂ© comme votre serveur Elasticsearch. Il devrait s’agir d’un serveur Rocky Linux 8 avec :
- 4 Go de RAM et 2 CPU configurés avec un utilisateur sudo non root. Vous pouvez réaliser cela en suivant la Configuration initiale du serveur avec Rocky Linux 8.
Ă des fins de ce tutoriel, les deux serveurs doivent pouvoir communiquer en utilisant des adresses IP privĂ©es. Vous pouvez utiliser un VPN comme WireGuard pour connecter vos serveurs, ou utiliser un fournisseur de cloud qui propose 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 tutoriel consiste Ă installer Elasticsearch et Kibana sur votre serveur Elasticsearch. Pour commencer, ajoutez la clĂ© GPG d’Elastic Ă votre serveur avec la commande suivante :
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 amont seront utilisĂ©s lors de l’installation de nouveaux packages via yum
:
[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 fini de faire des modifications, appuyez sur ESC
puis sur :x
pour écrire les modifications dans le fichier et quitter.
Installez maintenant Elasticsearch et Kibana en utilisant la commande dnf
. Appuyez sur Y
pour accepter toutes les invites concernant les empreintes digitales de la clé GPG :
L’option --enablerepo
est utilisée pour remplacer le paramÚtre par défaut désactivé dans le fichier /etc/yum.repos.d/elasticsearch.repo
. Cette approche garantit que les packages Elasticsearch et Kibana ne seront pas mis Ă niveau par erreur lorsque vous installez d’autres mises Ă jour de packages sur votre serveur.
Une fois que vous avez terminĂ© d’installer les packages, trouvez et enregistrez l’adresse IP privĂ©e de votre serveur en utilisant la commande ip 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 rĂ©seau privĂ©e dans cette sortie est le pĂ©riphĂ©rique eth1
en surbrillance, avec l’adresse IPv4 10.137.0.5
. Le nom de votre pĂ©riphĂ©rique et les adresses IP seront diffĂ©rents. IndĂ©pendamment du nom de votre pĂ©riphĂ©rique et de l’adresse IP privĂ©e, l’adresse sera issue 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 maniÚre dont ces blocs sont attribué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 désignée comme votre_adresse_ip_privée
dans le reste de ce tutoriel. 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, donc des outils comme Filebeat ne pourront pas lui envoyer de journaux. Dans cette section du tutoriel, vous configurerez les paramĂštres rĂ©seau pour Elasticsearch, puis activerez le module de sĂ©curitĂ© intĂ©grĂ© xpack
d’Elasticsearch.
Configuration du réseau Elasticsearch
Comme vos serveurs Elasticsearch et Suricata sont sĂ©parĂ©s, vous devrez configurer Elasticsearch pour qu’il Ă©coute 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é :
Trouvez la ligne commentée #network.host: 192.168.0.1
entre les lignes 50 et 60 et ajoutez une nouvelle ligne aprĂšs celle-ci qui configure le paramĂštre network.bind_host
, comme indiqué ci-dessous:
# Par défaut, Elasticsearch n'est accessible que sur localhost. Définissez une adresse différente
# ici pour exposer ce nĆud sur le rĂ©seau:
#
#network.host: 192.168.0.1
network.bind_host: ["127.0.0.1", "your_private_ip"]
#
# Par défaut, Elasticsearch écoute le trafic HTTP sur le premier port libre qu'il
# trouve à partir de 9200. Définissez un port HTTP spécifique ici:
Remplacez votre adresse IP privĂ©e par l’adresse your_private_ip
. Cette ligne garantira qu’Elasticsearch est toujours disponible Ă son adresse locale afin que Kibana puisse y accĂ©der, ainsi qu’Ă 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 avec Elasticsearch.
Enregistrez et fermez le fichier lorsque vous avez fini 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éalables et utilisez firewalld
, exécutez les commandes suivantes:
Remplacez le nom de votre interface réseau privée à la place de eth1
dans la premiĂšre commande si le vĂŽtre est diffĂ©rent. Cette commande modifie les rĂšgles de l’interface pour utiliser la zone Firewalld internal
, qui est plus permissive que la zone public
par défaut.
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 derniĂšre commande recharge le service Firewalld avec les nouvelles rĂšgles permanentes en place.
Ensuite, vous démarrerez le démon Elasticsearch et configurerez les mots de passe à utiliser avec le module de sécurité xpack
.
DĂ©marrage d’Elasticsearch
Maintenant que vous avez configuré le 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:
Une fois qu’Elasticsearch a fini de dĂ©marrer, vous pouvez passer Ă la section suivante de ce tutoriel 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 vous cd
dans le répertoire, puis générez des mots de passe aléatoires pour tous les utilisateurs par défaut:
Vous recevrez une sortie comme celle-ci. Lorsqu’on vous demande de 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 pas exĂ©cuter Ă nouveau l’utilitaire, alors assurez-vous de noter ces mots de passe quelque part de sĂ©curisĂ©. Vous devrez utiliser le mot de passe de l’utilisateur kibana_system
dans la prochaine section de ce tutoriel, et le mot de passe de l’utilisateur elastic
dans l’Ă©tape de Configuration de Filebeat de ce tutoriel.
Ă ce stade du tutoriel, vous avez terminĂ© la configuration d’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 tutoriel, 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 y accĂ©der.
Tout d’abord, vous activerez la fonctionnalitĂ© de sĂ©curitĂ© de xpack
de Kibana en gĂ©nĂ©rant quelques secrets que Kibana utilisera pour stocker des donnĂ©es dans Elasticsearch. Ensuite, vous configurerez les paramĂštres rĂ©seau de Kibana et les dĂ©tails d’authentification pour se 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 quelques 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 enregistrés et vues des données dans Elasticsearch.
Vous pouvez gĂ©nĂ©rer les clĂ©s de chiffrement requises en utilisant l’utilitaire kibana-encryption-keys
qui est inclus dans le répertoire /usr/share/kibana/bin
. Exécutez ce qui suit pour cd
vers le répertoire, puis générer les clés :
Le drapeau -q
supprime les instructions de l’outil, et le drapeau --force
garantira que vous créez de nouvelles clés. Vous devriez recevoir une sortie comme suit:
Outputxpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585
xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef
xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b
Copiez ces trois clés quelque part en sécurité. Vous les ajouterez maintenant au fichier de configuration /etc/kibana/kibana.yml
de Kibana.
Ouvrez le fichier en utilisant vi
ou votre éditeur préféré:
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:
. . .
# Spécifie la langue à utiliser pour toutes les chaßnes localisables, les dates et les formats numériques.
# Les langues prises en charge sont les suivantes : Anglais - en, par défaut, Chinois - 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 configurerez les paramĂštres rĂ©seau de Kibana.
Configuration du Réseau de Kibana
Pour configurer le rĂ©seau de Kibana afin qu’il soit disponible sur l’adresse IP privĂ©e de votre serveur Elasticsearch, trouvez la ligne commentĂ©e #server.host: "localhost"
dans /etc/kibana/kibana.yml
. La ligne se trouve prĂšs du dĂ©but du fichier. Ajoutez une nouvelle ligne aprĂšs avec l’adresse IP privĂ©e de votre serveur, comme indiquĂ© ci-dessous:
# Kibana est servi par un serveur back-end. Ce paramÚtre spécifie le port à utiliser.
#server.port: 5601
# Spécifie l'adresse à laquelle le serveur Kibana se liera. Les adresses IP et les noms d'hÎte sont tous deux des valeurs valides.
# La valeur par défaut est 'localhost', ce qui signifie généralement que les machines distantes ne pourront pas se connecter.
# Pour autoriser les connexions des utilisateurs distants, définissez ce paramÚtre sur une adresse non bouclable.
#server.host: "localhost"
server.host: "your_private_ip"
Remplacez votre adresse 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 de 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 à ajouter les valeurs là -bas. La deuxiÚme méthode consiste à stocker les valeurs dans le keystore de Kibana, qui est un fichier obfusqué que Kibana peut utiliser pour stocker des secrets.
Nous utiliserons la méthode du keystore dans ce tutoriel car elle évite de modifier directement le fichier de configuration de Kibana.
Si vous préférez modifier le fichier à la place, les paramÚtres à configurer 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 keystore en utilisant l’utilitaire kibana-keystore
, tout d’abord cd
vers le répertoire /usr/share/kibana/bin
. Ensuite, exĂ©cutez la commande suivante pour dĂ©finir le nom d’utilisateur pour Kibana:
Vous recevrez une invite comme suit :
Enter value for elasticsearch.username: *************
Entrez kibana_system
lorsque vous y ĂȘtes invitĂ©, soit en le copiant et en le collant, soit en saisissant le nom d’utilisateur avec soin. Chaque caractĂšre que vous tapez sera masquĂ© avec un caractĂšre *
astĂ©risque. Appuyez sur ENTRĂE
ou RETOUR
lorsque vous avez terminĂ© d’entrer le nom d’utilisateur.
Ă prĂ©sent, rĂ©pĂ©tez le processus, cette fois-ci pour enregistrer le mot de passe. Assurez-vous de copier le mot de passe pour l’utilisateur kibana_system
que vous avez généré dans la section précédente de ce tutoriel. Pour référence, dans ce tutoriel, le mot de passe exemple est 1HLVxfqZMd7aFQS6Uabl
.
Exécutez la commande suivante pour définir le mot de passe:
Lorsque vous y ĂȘtes invitĂ©, collez le mot de passe pour Ă©viter toute erreur de transcription:
Enter value for elasticsearch.password: ********************
Démarrage de Kibana
Maintenant que vous avez configuré le réseau et les paramÚtres de sécurité xpack
pour Kibana, ainsi que ajoutĂ© des informations d’identification au keystore, vous devez le dĂ©marrer pour que les modifications prennent effet.
Exécutez la commande systemctl
suivante pour redémarrer Kibana:
Une fois que Kibana dĂ©marre, vous pouvez passer Ă la section suivante de ce tutoriel 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 rĂ©seau et d’authentification corrects, la prochaine Ă©tape consiste Ă installer et configurer Filebeat sur votre serveur Suricata.
Pour commencer l’installation de Filebeat, ajoutez la clĂ© GPG Elastic Ă votre serveur Suricata avec la commande suivante :
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é :
[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
Une fois que vous avez terminĂ© d’apporter des modifications, enregistrez et quittez le fichier. Maintenant, installez le package Filebeat en utilisant la commande dnf
:
Ensuite, vous devrez configurer Filebeat pour qu’il se connecte Ă Elasticsearch et Kibana. Ouvrez le fichier de configuration /etc/filebeat/filebeat.yml
Ă l’aide de vi
ou de votre éditeur préféré :
Recherchez la section Kibana
du fichier vers 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 :
. . .
# à partir de la version 6.0.0 de Beats, les tableaux de bord sont chargés via l'API Kibana.
# Cela nécessite une configuration de point de terminaison Kibana.
setup.kibana:
# HĂŽte Kibana
# Le schĂ©ma et le port peuvent ĂȘtre omis et seront dĂ©finis sur les valeurs par dĂ©faut (http et 5601)
# Au cas oĂč vous spĂ©cifieriez un chemin supplĂ©mentaire, le schĂ©ma est requis : http://localhost:5601/path
# Les adresses IPv6 doivent toujours ĂȘtre dĂ©finies comme : https://[2001:db8::1]:5601
#host: "localhost:5601"
host: "your_private_ip:5601"
. . .
Ce changement permettra à Filebeat de 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, trouvez la section Sortie Elasticsearch
du fichier vers la ligne 130 et modifiez les paramĂštres hosts
, username
et password
pour correspondre aux valeurs de votre serveur Elasticsearch :
output.elasticsearch:
# Tableau des hĂŽtes Ă connecter.
hosts: ["your_private_ip:9200"]
# Protocole - soit `http` (par défaut) soit `https`.
#protocol: "https"
# Informations d'authentification - soit clé API, soit nom d'utilisateur/mot de passe.
#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
. Modifiez le champ password
de changeme
au mot de passe de l’utilisateur elastic
que vous avez généré dans la section Configuration des mots de passe Elasticsearch de ce tutoriel.
Enregistrez et fermez le fichier lorsque vous avez terminé de le modifier. Ensuite, activez le module Suricata intégré de Filebeat avec la commande suivante :
Maintenant que Filebeat est configuré pour se connecter à Elasticsearch et Kibana, avec le module Suricata activé, la prochaine étape consiste à charger les tableaux de bord SIEM et les pipelines dans Elasticsearch.
Exécutez la commande filebeat setup
. Cela peut prendre quelques minutes pour charger tout :
Une fois que la commande est terminée, vous devriez recevoir une sortie comme suit :
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 depuis le journal eve.json
de Suricata vers Elasticsearch une fois qu’il sera en cours d’exĂ©cution.
Maintenant que vous avez configurĂ© Filebeat, Kibana et Elasticsearch pour traiter vos journaux Suricata, la derniĂšre Ă©tape de ce tutoriel est de se connecter Ă Kibana et d’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 soit disponible uniquement via l’adresse IP privĂ©e de votre serveur Elasticsearch, vous devrez utiliser un tunnel SSH pour vous connecter Ă Kibana.
Connexion Ă Kibana avec SSH
SSH dispose d’une option -L
qui vous permet de faire transiter le trafic réseau sur un port local via sa connexion vers une adresse IP et un port distants sur un serveur. Vous utiliserez cette option pour faire transiter le trafic de votre navigateur vers votre instance Kibana.
Sur Linux, macOS et les versions mises à jour de Windows 10 et supé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 :
Les différents arguments de SSH sont :
- Le drapeau
-L
redirige le trafic vers votre systĂšme local sur le port5601
vers le serveur distant. - La partie
votre_ip_privée:5601
de la commande spĂ©cifie le service sur votre serveur Elasticsearch vers lequel votre trafic sera redirigĂ©. Dans ce cas, ce service est Kibana. Assurez-vous de substituer l’adresse IP privĂ©e de votre serveur Elasticsearch Ă la place devotre_ip_privĂ©e
. - L’adresse
203.0.113.5
est l’adresse IP publique que vous utilisez pour vous connecter et administrer votre serveur. Substituez l’adresse IP publique de votre serveur Elasticsearch Ă sa place. - Le drapeau
-N
indique à SSH de ne pas exécuter une commande comme un shell interactif/bin/bash
, et 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 :
Note : Vous pouvez ĂȘtre invitĂ© Ă entrer un mot de passe si vous n’utilisez pas de clĂ© SSH. Tapez ou collez-le dans l’invite, puis appuyez sur ENTRĂE
ou RETOUR
.
Sur macOS et Linux, votre terminal ressemblera Ă la capture d’Ă©cran suivante :
Une fois que vous ĂȘtes connectĂ© Ă votre serveur Elasticsearch via SSH avec le transfert 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 peut 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 tutoriel pour l’utilisateur.
Navigation dans les tableaux de bord SIEM de Kibana
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 Suricata Events et Suricata Alerts comme indiquĂ© sur la capture d’Ă©cran suivante :
Cliquez sur le résultat [Filebeat Suricata] Vue d'ensemble des événements
pour visiter le tableau de bord Kibana qui affiche une vue d’ensemble 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 Alertes
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 destination pour une alerte, le type d’attaque, l’ID de signature Suricata, et autres.
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. Naviguez jusqu’au tableau de bord RĂ©seau pour obtenir une vue d’ensemble des Ă©vĂ©nements affichĂ©s sur une carte, ainsi que des donnĂ©es agrĂ©gĂ©es sur les Ă©vĂ©nements de votre rĂ©seau. Votre tableau de bord devrait ressembler Ă la capture d’Ă©cran suivante :
Vous pouvez faire dĂ©filer jusqu’au bas du tableau de bord RĂ©seau pour trouver un tableau rĂ©pertoriant tous les Ă©vĂ©nements correspondant Ă votre plage 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 spĂ©cifiques, des alertes ou des identifiants de communautĂ©.
Conclusion
Dans ce tutoriel, vous avez installĂ© et configurĂ© Elasticsearch et Kibana sur un serveur autonome. Vous avez configurĂ© les deux outils pour ĂȘtre disponibles sur une adresse IP privĂ©e. Vous avez Ă©galement configurĂ© les paramĂštres d’authentification d’Elasticsearch et de Kibana en utilisant le 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 alimenter les tableaux de bord de Kibana et commencer Ă envoyer les journaux Suricata vers 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 Suricata Events and Alerts, ainsi que le tableau de bord Network.
Le dernier tutoriel de cette sĂ©rie vous guidera Ă travers l’utilisation de la fonctionnalitĂ© SIEM de Kibana pour traiter vos alertes Suricata. Vous explorerez comment crĂ©er des cas pour suivre des alertes spĂ©cifiques, des chronologies pour corrĂ©ler les flux rĂ©seau, et des rĂšgles pour correspondre Ă des Ă©vĂ©nements Suricata spĂ©cifiques que vous souhaitez suivre ou analyser plus en dĂ©tail.