Aller au contenu
Accueil » Articles » Mise en place d’un SIEM ELK

Mise en place d’un SIEM ELK

  • par

1- Présentation d'ELK

Tout d’abord ELK est une suite de 3 logiciels. Elasticsearch constitue le coeur de la Suite Elastic. C’est un moteur de recherche et d’analyse distribuée, qui stocke les données de manière centralisée. Basé sur la bibliothèque Apache Lucene, et utilisant une base de données orientée documents, Elasticsearch peut effectuer des recherches sur des données structurées ou non-structurées, explorer des tendances, identifier des modèles dans les données, le tout en temps réel (de l’ordre de la seconde). Kibana est l’interface graphique permettant de visualiser les données stockées et analysées par Elasticsearch. L’interface est user-friendly et les divers graphiques sont présentés sous forme de dashboards personnalisables. Logstash prend en charge le formatage et l’enrichissement des données. Il peut être considéré comme un ETL (Extract Transform Load). Il reçoit des données de sources variées envoyées par Beats, y applique diverses transformations, et les transfère à Elasticsearch. Mais de nos jours Logstach est de moins en moins utilisé, voir plus du tout dans la version Cloud car nous pouvons maintenant envoyer les données des agents directement vers Elastic.

ELK nous propose différents agents de la suite Beats :

• Filebeat : ingestion de fichiers de logs.

• Packetbeat : ingestion de fichiers de capture réseau.

• Auditbeat : ingestion de fichiers audit.

• Heartbeat : vérification si un service est disponible ou non.

• Functionbeat : monitoring des environnements cloud.

• Journalbeat : ingestion des logs systemd.

• Metricbeat : collection des métriques de différents systèmes.

• Winlogbeat : collection de logs Windows. 

• Elastic Agent : Agent qui permet de collecter plusieurs métriques à la fois. Dans ce projet nous allons principalement utiliser l’agent Winlogbeat qui va nous servir à récolter les données de machine Windows.

Comme nous le voyons dans la figure 1 ci-dessus les agents présents sur des équipements enverrons leurs données à partir d’un port généré aléatoirement vers le port 9200 d’Elastic. Kibana ensuite chercher ces données stockées sur Elastic pour nous permettre de les visualiser.

2 - Configuration du SIEM ELK

Pour réaliser ce projet, nous avons utilisé une Machine Virtuelle Linux Unbuntu hébergé sur un Vcenter avec les caractéristiques suivantes :

Figure 1

2.1 - Installation du SSH et RDP

Une fois Ubuntu installé, nous devons mettre en place le SSH et le RDP :

apt install openssh-server

systemctl enable ssh

systemctl start ssh

apt install xrdp

systemctl enable xrdp

systemctl start xrdp

Figure 2

2.2 - Installation Elasticsearch

Nous allons maintenant commencer l’installation d’Elasticsearch mais pour cela nous devons mettre en place un ntp (pour que les logs envoyés vers Elastic soient à la bonne heure) :

apt-get update

apt-get upgrade

apt-get install apt-transport-https wget gnupg

timedatectl set-timezone Europe/Paris

timedatectl set-ntp off

apt-get install ntp 

systemctl enable ntp

systemctl start ntp

Nous définissons un hostname afo-siem.local qui va nous servir par la suite :

hostnamectl set-hostname afo-siem.local

reboot

Nous installons ensuite Elasticsearch :

wget -O – https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add –

echo « deb https://artifacts.elastic.co/packages/7.x/apt stable main » > /etc/apt/sources.list.d/elasticsearch.list

apt-get update

apt-get install elasticsearch

Nous ajoutons une première configuration :

nano /etc/elasticsearch/elasticsearch.yml

#Dans le fichier :

network.host: 192.168.7.135

cluster.initial_master_nodes: afo-siem.local

Nous démarrons le service elasticsearch :

systemctl enable elasticsearch

systemctl start elasticsearch

Nous pouvons voir qu’Elasticsearch est bien démarré :

2.3 - Installation de Kibana

apt-get install kibana

Nous ajoutons une première configuration pour Kibana :

nano /etc/kibana/kibana.yml

#Dans le fichier:

server.host: « 192.168.7.135 »

elasticsearch.hosts: [http://192.168.7.135:9200]

Nous démarrons le service Kibana :

systemctl enable kibana

systemctl start kibana

Nous pouvons voir que Kibana est bien démarré :

Mise en place de SSL/TLS

Nous allons maintenant mettre en place SSL TLS pour sécuriser les communications entre Elasticsearch et Kibana :

IP du serveur : 192.168.7.135
Hostname : afo-siem.local

Nous devons installer des paquets qui vont nous servir par la suite :

apt-get update

apt-get install curl unzip mlocate jq

Nous devons tout d’abord créer un CA (Certification Authority) qui va nous servir à signer nos propres certificats :

cd /usr/share/elasticsearch

bin/elasticsearch-certutil ca –pem

unzip
elastic-stack-ca.zip

En décompressant le fichier, on obtient notre dossier « CA » avec à l’intérieur la clé et le certificat du CA :

ls ca/

ca.crt  ca.key

Nous allons donc maintenant déplacer ce dossier dans le dossier elasticsearch et les mettre dans un dossier « certs » pour mieux s’y retrouver :

mkdir /etc/elasticsearch/certs/

cp -r ca /etc/elasticsearch/certs/

Nous créons ensuite notre certificat pour Elastic avec la commande suivante (on spécifie l’adresse IP et le DNS (qui est aussi l’adresse IP).

bin/elasticsearch-certutil cert –ca-cert ca/ca.crt –ca-key ca/ca.key –days 3500 –dns afo-siem.local –ip 192.168.7.135 -pem —out elastic.zip –name elastic

unzip elastic.zip

cp -r elastic /etc/elasticsearch/certs/

Nous modifions ensuite le fichier de configuration d’Elasticsearch pour mettre en place le ssl/tls :

cd /etc/elasticsearch/

nano elasticsearch.yml

network.host: 0.0.0.0

cluster.initial_master_nodes: afo-siem.local

xpack.security.enabled: true

xpack.security.http.ssl.enabled: true

xpack.security.transport.ssl.enabled: true

xpack.security.http.ssl.key: certs/elastic/elastic.key

xpack.security.http.ssl.certificate: certs/elastic/elastic.crt

xpack.security.http.ssl.certificate_authorities: certs/ca/ca.crt

xpack.security.transport.ssl.key: certs/elastic/elastic.key

xpack.security.transport.ssl.certificate: certs/elastic/elastic.crt

xpack.security.transport.ssl.certificate_authorities: certs/ca/ca.crt

Pour activer l’authentification et définir le mot de passe sur Kibana nous devons rentrer ces commandes :

systemctl start elasticsearch

cd /usr/share/elasticsearch

./bin/elasticsearch-setup-passwords interactive

Nous allons maintenant devoir arrêter les 2 services pour faire les prochaines configurations :

systemctl stop elasticsearch

systemctl stop kibana

Nous allons chiffrer la communication entre Elastic et Kibana grâce aux certificats, pour cela nous allons créer un certificat pour kibana :

cd /usr/share/elasticsearch

bin/elasticsearch-certutil cert –ca-cert ca/ca.crt –ca-key ca/ca.key –days 3500 –dns afo-siem.local –ip 192.168.7.135 -pem —out kibana.zip –name kibana

unzip kibana.zip

mkdir /etc/kibana/certs

cp -r kibana /etc/kibana/certs/

cp -r ca /etc/kibana/certs/ 

Nous allons maintenant modifier le fichier de configuration de Kibana pour activer le SSL/TLS avec Elastic et le HTTPS sur la page web :

nano
/etc/kibana/kibana.yml

server.host:
« 0.0.0.0 »

elasticsearch.hosts: [https://192.168.7.135:9200]

server.ssl.enabled: true

server.ssl.certificate:
/etc/kibana/certs/kibana/kibana.crt

server.ssl.key:
/etc/kibana/certs/kibana/kibana.key

elasticsearch.username: « kibana »

elasticsearch.password: « MotDePasse »

elasticsearch.ssl.certificateAuthorities: /etc/kibana/certs/ca/ca.crt

server.publicBaseUrl: https://afo-siem.local:5601

xpack.encryptedSavedObjects.encryptionKey: « sjasoB7o4Ym62SR4re6eR0u4kpZJAKCrGr8 »

Nous pouvons enfin démarrer Kibana et lorsque nous irons sur la page web de configuration, un mot de passe nous sera demandé :

systemctl start kibana

Donnez moi de la moula sur Paypal par pitié :

Étiquettes:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *