Portfolio
Mayoussier Lucas

Comment configurer la suite ELK avec un certificat signé SSL/TLS

Voici comment passer la suite ELK en https :

Je commence par générer le certificat en précisant que je veux le résultat dans un .zip :
/usr/share/elasticsearch/bin ./elasticsearch-certutil ca --pem --out /etc/elasticsearch/certs/ca.zip
Puis, je me rends dans le dossier dans lequel est le .Zip et je l’unzip :
cd /etc/elasticsearch/certs/
unzip ca.zip
Ensuite, je vais dans le dossier bin d’elasticsearch pour lancer une commande qui permet encore de générer des certificats :
cd /usr/share/elasticsearch/bin
./elasticsearch-certutil cert \
--out /etc/elasticsearch/certs/elastic.zip \
--name elastic \
--ca-cert /etc/elasticsearch/certs/ca/ca.crt \
--ca-key /etc/elasticsearch/certs/ca/ca.key \
--ip 192.168.110.56 \--pem

Et je me rends là où est installé le fichier elastic.zip pour l’unzip et mettre les bons privilèges sur les dossiers :
cd /etc/elasticsearch/certs
unzip elastic.zip
chown -R elasticsearch:elasticsearch
Puis, je vais dans le fichier de configuration d’elastic pour tout paramétrer :
sudo nano /etc/elastic/elastic.yml
Et je change les options avec ça :
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
certificate: certs/elastic/elastic.crt
key: certs/elastic/elastic.key
certificate_authorities: certs/ca/ca.crt
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/transport.p12
truststore.path: certs/transport.p12
Puis, je redémarre les services et je me rends sur l’ip de ma machine avec le port d’elastic qui est 9200 pour m’assurer que cela marche :
systemctl enable elasticsearch
systemctl start elasticsearch
Une fois fonctionnelle pour Elastic, je vais refaire la même pour Kibana. Je commence par créer un dossier kibana dans root :
mkdir /root/kibana
Ensuite, je me rends dans le dossier bin d’elasticsearch pour pouvoir générer les certificats de kibana :
cd /usr/share/elasticsearch/bin
./elasticsearch-certutil cert \
--out /root/kibana/kibana.zip \
--name kibana \
--ca-cert /etc/elasticsearch/certs/ca/ca.crt \
--ca-key /etc/elasticsearch/certs/ca/ca.key \
--ip 192.168.110.56 \
--pem
Une fois les certificats générés, je crée le dossier certs dans kibana :
mkdir /etc/kibana/certs
Puis, je vais dans le dossier Kibana créé à la racine Root et j’unzip le dossier kibana.zip. Je me rends dans le dossier extrait pour copier les certificats dans le dossier certs de Kibana :
cd /root/kibana
unzip kibana
scp kibana.crt kibana.key /etc/kibana/certs
cp /etc/elasticsearch/certs/ca/ca.crt /etc/kibana/certs
Et je mets les bons privilèges pour les certificats kibana :
cd /etc/elastic/certs
chown kibana:kibana ca.crt kibana.crt kibana.key
Ensuite, j’ajoute les certificats dans le fichier de configuration de kibana :
sudo nano /etc/kibana/kibana.yml
server.ssl.enabled: true
elasticsearch.ssl.certificateAuthorities: [ "/etc/kibana/certs/ca.crt" ]
server.ssl.certificate: /etc/kibana/certs/kibana.crt
server.ssl.key: /etc/kibana/certs/kibana.key
elasticsearch.hosts: [ "https://192.168.110.56:9200" ]
elasticsearch.ssl.verificationMode: full
Et je commente la case username / password et rajouter la ligne elasticsearch.serviceAccountToken: “token” pour mettre en place l’authentification via token :
#elasticsearch.username:
#elasticsearch.password:
elasticsearch.serviceAccountToken: "token"
Ensuite, je crée le token :
cd /usr/share/elasticsearch/bin
./elasticsearch-service-tokens create elastic/kibana kibana-token
Et dans le même dossier je crée un fichier texte nommé token et je copie le token dedans :
sudo nano token
Je me rends après dans le dossier d’elasticsearch :
cd /etc/elasticsearch
Et je donne les bonnes permissions au fichier service_tokens
chown elasticsearch:elasticsearch service_tokens
Maintenant, il faut importer le token :
cd /usr/share/kibana/bin
./kibana-keystore add elasticsearch.serviceAccountToken
Puis, entrer le token quand ça le demande.
Pour finir on donne les droits à kibana :
cd /etc/kibana
chown -R kibana:kibana ./
Je peux maintenant redémarrer les deux services de kibana et elastic :
systemctl restart kibana
systemctl restart elasticsearch
Kibana est désormais accessible en https :

.

.

.