Ceci est une ancienne révision du document !
Mise en place d'un SIEM avec ELK
Introduction
Cette procédure permet de mettre en place un SIEM grâce à la suite ELK : le combo d'ElasticSearch, LogStash, Kibana et les beats.
Topologie du LAB
Pré-requis
Ici nous aurons besoin de :
- 1 machine sous Linux qui servira de serveur ELK
- 1 machine cliente sous Windows qui servira à tester les beats
- 1 machine cliente sous Linux qui servira à tester l'envoi de logs
Instructions
Installation d'ElasticSearch
Pour installer la suite ELK, il faut passer par le dépôt officiel d'Elastic. On va donc commencer par ajouter sa clé de signature.
- Sous Debian/Ubuntu commencer par installer les paquets
apt-transport-httpsetgnupg2:
apt-get install apt-transport-https gnupg2
- Puis ajouter la clé :
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | apt-key add -
- Sous RedHat/CentOS/Fedora, c'est différent :
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Ensuite, on ajoute le dépôt dans la liste du système :
- Pour Debian/Ubuntu, entrer la commande suivante :
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | tee -a /etc/apt/sources.list.d/elastic-7.x.list
- Pour les systèmes RedHat/CentOS/Fedora, créer un fichier nommé
elastic.repodans le répertoire/etc/yum.repos.dcontenant :
[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
Maintenant, on peut mettre à jour la liste de paquets disponibles et installer ElasticSearch à l'aide du gestionnaire de paquets integré (apt ou yum) :
- Pour les distributions Debian :
apt-get update -y && apt-get install elasticsearch
- Pour les distributions RedHat :
sudo yum install --enablerepo=elasticsearch elasticsearch
De mon côté, sous Debian, ça donne :
Afin de vérifier qu'ElasticSearch fonctionne correctement, le démarrer (il peut être long) :
systemctl start elasticsearch
Si celui-ci ne se lance pas, il est possible de regarder plus précisement pourquoi dans ses logs :
journalctl -f -u elasticsearch
Une fois le service ElasticSearch actif, utiliser la commande curl ou un navigateur web pointant à l'adresse localhost:9200 :
Le service devrait alors répondre :
Pour terminer l'installation d'ElasticSearch, l'activer au lancement de la machine :
systemctl enable elasticsearch
Configuration et sécurisation d'Elasticsearch
Dans l'état actuel, Elasticsearch n'est pas sécurisé, n'importe qui sur le réseau peut y accèder. De plus, si on veut créer un cluster il va falloir ajouter des paramètres supplémentaires. Cette étape est facultative si on veut juste installer un ELK de test sans aucune redondance ni sécurité.
Commencer par configurer un mot de passe pour chaque compte de service (le compte elastic est l'administrateur par défaut) :
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
Ensuite on va générer 3 certificats SSL :
- Un pour la CA :
/usr/share/elasticsearch/bin/elasticsearch-certutil ca
- Un pour le noeud :
/usr/share/elasticsearch/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
- Un pour l'accès HTTPS :
/usr/share/elasticsearch/bin/elasticsearch-certutil http
(
Attention celui-ci demande beaucoup d'informations)
Une fois les certificats générés, il faut les copier dans /etc/elasticsearch et s'assurer que l'utilisateur elasticsearch en soit le propriétaire. Le certificat HTTP est par défaut livré dans une archive .zip, il faut donc la décompresser pour pouvoir récupérer le certificat.
Puis, on va enregistrer les mots de passes des certificats dans la keystore (coffre-fort) d'elastic :
- Pour le certificat de la CA :
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
- Pour le certificat du noeud :
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
- Pour le certificat HTTP :
/usr/share/elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
Enfin, ouvrir le fichier /etc/elasticsearch/elasticsearch.yml et ajouter/décommenter les lignes suivantes :
cluster.name: project-one #nom du cluster (facultatif) node.name: master-node-1.lab #nom du noeud (facultatif) cluster.initial_master_nodes: ["master-node-1.lab"] #liste des master nodes du cluster (facultatif) xpack.security.enabled: true #Activer l'authentification xpack.security.transport.ssl.enabled: true #Activer le chiffrement SSL entre les noeuds xpack.security.transport.ssl.verification_mode: certificate #Vérification SSL via certificat xpack.security.transport.ssl.client_authentication: required #Nécessite que le client s'authentifie xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 #certificat du noeud xpack.security.transport.ssl.truststore.path: elastic-certificates.p12 #certificat du noeud xpack.security.http.ssl.enabled: true #Activer le HTTPS pour elasticsearch xpack.security.http.ssl.keystore.path: http.p12 #certificat https
Pour terminer, relancer le service elasticsearch. La connexion à elasticsearch en HTTPS doit être fonctionnelle.
On peut remplacer
interactive par auto pour générer automatiquement des mots de passes aléatoires pour chaque compte.
Installation et configuration de Kibana
Nous allons désormais installer l'interface graphique d'ELK qui nous permettra de configurer des dashboards et d'afficher les logs que l'on va collecter :
- Pour les distributions Debian :
apt-get install kibana
- Pour les distributions RedHat :
sudo yum install --enablerepo=elasticsearch kibana
Puis, dans le fichier de configuration de Kibana /etc/kibana/kibana.yml décommenter l'attribut elasticsearch.hosts: et vérifier qu'il pointe bien vers localhost:9200 :
Décommenter aussi les attributs server.port et server.host, remplacer localhost par l'adresse IP depuis laquelle Kibana devrait être joignable sur le réseau, puis enregistrer le fichier :
Enfin, démarrer Kibana :
systemctl start kibana
L'activer au lancement de la machine également :
systemctl enable kibana
Valider que Kibana fonctionne en ouvrant la page d'accueil de Kibana dans un navigateur web https://ipduserveur:5601 :
Installation de LogStash
LogStash, dernier composant majeur d'ELK, est l'application en arrière-plan qui va recevoir et traiter les logs avant de les stocker dans ElasticSearch.




