Sécuriser les communications

Sécuriser les communications en dehors d’un groupe de recherche élastique

Introduction

Une fois que vous aurez généré les clés et les certificats pour tous vos nœuds, vous aurez une communication sécurisée entre tous vos nœuds Elasticsearch. Ensuite, vous devrez vous assurer que chaque élément du déploiement de la pile élastique est également sécurisé. Par exemple, sécuriser les communications Kibana avec Elasticsearch et le navigateur web.

Vous avez la possibilité de générer des clés et des certificats signés afin que tous ces différents composants puissent communiquer de manière sûre et authentique. Le diagramme ci-dessous vous montre l’état actuel de la pile élastique dans votre environnement de laboratoire. Notez que seule la communication au sein du cluster Elasticsearch est sécurisée jusqu’à présent :

test

HTTPS

To setup this secured communication, you need to add a couple of settings in the elasticsearch.yml file. You have to update these settings for every node in your cluster:

Enable SSL for HTTP communication

Once this setting is enabled, you cannot communicate with your cluster without SSL, you may need to update the configuration of your client applications such as Kibana

You also need to define the path to your node certificate

If you used a PKCS#12 keystore it will contain both truststore and keystore

The following example configures HTTPS using certificates in a PKCS#12 keystore:

xpack.security.http.ssl.enabled: true
xpack.security.http.ssl.keystore.path: certs/elastic-certificates.p12 
xpack.security.http.ssl.truststore.path: certs/elastic-certificates.p12

Après le redémarrage des nœuds, les clients devront utiliser le HTTPS pour accéder au cluster.

Kibana

Après avoir crypté la communication du client d’Elasticsearch, chaque demande adressée à Elasticsearch doit utiliser le HTTPS. Cela signifie que vous devez mettre à jour Kibana afin de communiquer via HTTPS avec Elasticsearch, et aussi avec le navigateur web des utilisateurs.

Cryptage de la communication Kibana-Elasticsearch

Vous devez mettre à jour le fichier de configuration kibana.yml pour configurer les communications cryptées. Vous devrez configurer deux paramètres :

Changer les hôtes Elasticsearch pour utiliser le protocole HTTPS

Fournir le chemin d’accès au certificat de l’AC afin d’authentifier Kibana

Par exemple :

elasticsearch.hosts: ["https://<your_elasticsearch_host>:9200"] 
elasticsearch.ssl.certificateAuthorities: /path/to/your/ca.crt

Cryptage de la communication navigateur-Kibana

Maintenant que la communication entre Kibana et Elasticsearch est sécurisée, vous devez également crypter la communication entre Kibana et le navigateur web.

https

Comme vous commencez peut-être à le comprendre maintenant, la communication doit être cryptée à tous les niveaux. C’est la raison pour laquelle vous devez également crypter les communications entre le navigateur et le serveur Kibana.

Il s’agit d’un processus en deux étapes :

La première étape consiste à générer un certificat de serveur pour Kibana de la même manière que vous avez créé un certificat de nœud pour chaque nœud de votre grappe Elasticsearch. Sauf que cette fois, il faut des certificats et des clés au format PEM au lieu de PKCS#12. Une fois de plus, vous utiliserez l’outil certutil d’Elasticsearch pour générer les certificats de nœuds :

bin/elasticsearch-certutil cert --ca /path/to/your/ca --pem

La sortie PEM générera deux fichiers, un pour la clé privée et un autre pour le certificat.

Vous devez mettre à jour le fichier de configuration de votre Kibana pour activer le SSL entre Kibana et le navigateur, et ajouter le chemin d’accès aux différents fichiers que vous avez générés :

server.ssl.enabled: true
server.ssl.key: /path/to/your/key 
server.ssl.certificate: /path/to/your/crt

Après le redémarrage de Kibana, toutes les communications entre le navigateur web, Kibana et Elasticsearch seront cryptées et sécurisées.

Logstash et Beats

Beats et Logstash sont couramment utilisés pour ingérer des données dans Elasticsearch. Comme ils communiquent avec Elasticsearch par le biais de requêtes HTTP, vous devez également crypter ces communications. Pour cela, vous devez mettre à jour les sorties d’Elasticsearch en ajoutant le protocole HTTPS à toutes les URL d’hôtes et fournir un certificat CA.

Pour Logstash, vous devez mettre à jour la sortie Elasticsearch. Comme pour Kibana, Logstash ne prend pas encore en charge le keystore PKCS#12, vous devez donc ajouter le chemin d’accès à un fichier PEM qui contient le certificat de votre AC :

output {
  elasticsearch {
    ...
    ssl => true
    cacert => '/path/to/cert.pem' 
  }
}

Beats est la plateforme pour les expéditeurs de données à but unique. Ils envoient à Elasticsearch des données provenant de centaines ou de milliers de machines et de systèmes. Pour chaque Beat, la configuration pour utiliser les requêtes HTTPS avec Elasticsearch est la même. Vous devez mettre à jour la section “output” du fichier de configuration. Comme pour Logstash, vous devez utiliser HTTPS pour chaque hôte, et fournir le chemin d’accès à votre certificat d’autorité de certification :

output.elasticsearch:
  hosts: ["https://<your_elasticsearch_host>:9200"] 
  ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

Questionnaire

  1. Après avoir établi des communications HTTPS, vous pouvez toujours utiliser HTTP pour communiquer avec Elasticsearch.
  • Vrai
  • Faux
  1. Sélectionnez les différents éléments qui doivent être fixés dans l’environnement Elastic Stack.
  • Logstash
  • Beats
  • Client Application
  • Kibana
  • Tout ce qui précède
  1. Kibana, Logstash et Beats peuvent utiliser le keystore PKCS#12 pour sécuriser les communications.
  • Vrai
  • Faux