Elastic Locked Up: activació de les opcions de seguretat del clúster d'Elasticsearch per a l'accés interior i exterior

Elastic Locked Up: activació de les opcions de seguretat del clúster d'Elasticsearch per a l'accés interior i exterior

Elastic Stack és una eina coneguda al mercat de sistemes SIEM (en realitat, no només ells). Pot recollir moltes dades de diferents mides, tant sensibles com poc sensibles. No és del tot correcte si l'accés als elements de la pila elàstica no està protegit. De manera predeterminada, tots els elements d'Elastic fora de la caixa (col·leccionistes d'Elasticsearch, Logstash, Kibana i Beats) s'executen amb protocols oberts. I al mateix Kibana, l'autenticació està desactivada. Totes aquestes interaccions es poden assegurar i en aquest article us explicarem com fer-ho. Per comoditat, hem dividit la narració en 3 blocs semàntics:

  • Model d'accés a dades basat en rols
  • Seguretat de les dades dins d'un clúster Elasticsearch
  • Protecció de dades fora d'un clúster Elasticsearch

Detalls sota el tall.

Model d'accés a dades basat en rols

Si instal·leu Elasticsearch i no l'ajusteu de cap manera, l'accés a tots els índexs estarà obert a tothom. Bé, o els que poden utilitzar curl. Per evitar-ho, Elasticsearch té un model que està disponible a partir d'una subscripció bàsica (que és gratuïta). Esquemàticament sembla una cosa així:

Elastic Locked Up: activació de les opcions de seguretat del clúster d'Elasticsearch per a l'accés interior i exterior

Què hi ha a la imatge

  • Els usuaris són tots aquells que poden iniciar sessió amb les seves credencials.
  • Un rol és un conjunt de drets.
  • Els drets són un conjunt de privilegis.
  • Els privilegis són permisos per escriure, llegir, esborrar, etc. (Llista completa de privilegis)
  • Els recursos són índexs, documents, camps, usuaris i altres entitats d'emmagatzematge (el model a seguir per a alguns recursos només està disponible amb subscripcions de pagament).

Per defecte, Elasticsearch té usuaris de la caixa, a la qual s'adjunten rols de caixa. Un cop hàgiu activat la configuració de seguretat, podeu començar a utilitzar-los immediatament.

Per habilitar la seguretat a la configuració d'Elasticsearch, l'heu d'afegir al fitxer de configuració (per defecte això és elasticsearch/config/elasticsearch.yml) nova línia:

xpack.security.enabled: true

Després de canviar el fitxer de configuració, inicieu o reinicieu Elasticsearch perquè els canvis tinguin efecte. El següent pas és assignar contrasenyes als usuaris de box. Fem-ho de manera interactiva amb l'ordre següent:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]

Comprovem:

[elastic@node1 ~]$ curl -u elastic 'node1:9200/_cat/nodes?pretty'
Enter host password for user 'elastic':
192.168.0.2 23 46 14 0.28 0.32 0.18 dim * node1

Podeu donar-vos unes copes a l'esquena: la configuració del costat d'Elasticsearch s'ha completat. Ara és el moment de configurar Kibana. Si l'executeu ara, apareixeran errors, per la qual cosa és important crear un magatzem de claus. Això es fa en dues ordres (user kibana i la contrasenya introduïda al pas de creació de la contrasenya a Elasticsearch):

[elastic@node1 ~]$ ./kibana/bin/kibana-keystore add elasticsearch.username
[elastic@node1 ~]$ ./kibana/bin/kibana-keystore add elasticsearch.password

Si tot és correcte, Kibana començarà a demanar un inici de sessió i una contrasenya. La subscripció bàsica inclou un model basat en usuaris interns. Començant amb Gold, podeu connectar sistemes d'autenticació externs: sistemes LDAP, PKI, Active Directory i Single Sign-On.

Elastic Locked Up: activació de les opcions de seguretat del clúster d'Elasticsearch per a l'accés interior i exterior

Els drets d'accés als objectes dins d'Elasticsearch també es poden limitar. Tanmateix, per fer el mateix amb documents o camps, necessitareu una subscripció de pagament (aquest luxe comença amb el nivell Platí). Aquests paràmetres estan disponibles a la interfície de Kibana o mitjançant API de seguretat. Podeu consultar el menú Eines de desenvolupament ja conegut:

Creació d'un rol

PUT /_security/role/ruslan_i_ludmila_role
{
  "cluster": [],
  "indices": [
    {
      "names": [ "ruslan_i_ludmila" ],
      "privileges": ["read", "view_index_metadata"]
    }
  ]
}

Creació d'usuaris

POST /_security/user/pushkin
{
  "password" : "nataliaonelove",
  "roles" : [ "ruslan_i_ludmila_role", "kibana_user" ],
  "full_name" : "Alexander Pushkin",
  "email" : "[email protected]",
  "metadata" : {
    "hometown" : "Saint-Petersburg"
  }
}

Seguretat de les dades dins d'un clúster Elasticsearch

Quan Elasticsearch s'executa en un clúster (cosa comú), la configuració de seguretat dins del clúster adquireix importància. Per a una comunicació segura entre nodes, Elasticsearch utilitza el protocol TLS. Per establir una interacció segura entre ells, necessiteu un certificat. Generem un certificat i clau privada en format PEM:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil ca --pem

Després d'executar l'ordre anterior, al directori /../elasticsearch apareixerà l'arxiu elastic-stack-ca.zip. Al seu interior hi trobareu un certificat i una clau privada amb extensions crt и clau respectivament. És recomanable posar-los en un recurs compartit, que hauria de ser accessible des de tots els nodes del clúster.

Ara cada node necessita els seus propis certificats i claus privades basades en les del directori compartit. Quan executeu l'ordre, se us demanarà que establiu una contrasenya. Podeu afegir opcions addicionals -ip i -dns per a una verificació completa dels nodes que interactuen.

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil cert --ca-cert /shared_folder/ca/ca.crt --ca-key /shared_folder/ca/ca.key

Com a resultat d'executar l'ordre, rebrem un certificat i una clau privada en format PKCS#12, protegits per una contrasenya. Només queda moure el fitxer generat p12 al directori de configuració:

[elastic@node1 ~]$ mv elasticsearch/elastic-certificates.p12 elasticsearch/config

Afegiu una contrasenya al certificat en el format p12 al magatzem de claus i al magatzem de confiança a cada node:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

Ja conegut elasticsearch.yml Només queda afegir línies amb les dades del certificat:

xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

Llencem tots els nodes d'Elasticsearch i executem ris. Si tot s'ha fet correctament, es retornarà una resposta amb diversos nodes:

[elastic@node1 ~]$ curl node1:9200/_cat/nodes -u elastic:password                                                                                    
172.18.0.3 43 75 4 0.00 0.05 0.05 dim * node2                                                                                                                     
172.18.0.4 21 75 3 0.00 0.05 0.05 dim - node3                                                                                                                     
172.18.0.2 39 75 4 0.00 0.05 0.05 dim - node1

Hi ha una altra opció de seguretat: el filtratge d'adreces IP (disponible en subscripcions a partir del nivell Gold). Us permet crear llistes blanques d'adreces IP des de les quals podeu accedir als nodes.

Protecció de dades fora d'un clúster Elasticsearch

Fora del clúster significa connectar eines externes: Kibana, Logstash, Beats o altres clients externs.

Elastic Locked Up: activació de les opcions de seguretat del clúster d'Elasticsearch per a l'accés interior i exterior

Per configurar el suport per a https (en lloc de http), afegiu línies noves a elasticsearch.yml:

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

Perquè El certificat està protegit amb contrasenya, afegiu-lo al magatzem de claus i al magatzem de confiança de cada node:

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password
[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-keystore add xpack.security.http.ssl.truststore.secure_password

Després d'afegir les claus, els nodes d'Elasticsearch estan preparats per connectar-se mitjançant https. Ara es poden posar en marxa.

El següent pas és crear una clau per connectar Kibana i afegir-la a la configuració. A partir del certificat que ja es troba al directori compartit, generarem un certificat en format PEM (PKCS#12 Kibana, Logstash i Beats encara no són compatibles):

[elastic@node1 ~]$ ./elasticsearch/bin/elasticsearch-certutil cert --ca-cert /shared_folder/ca/ca.crt --ca-key /shared_folder/ca/ca.key --pem

Només queda desempaquetar les claus creades a la carpeta amb la configuració de Kibana:

[elastic@node1 ~]$ unzip elasticsearch/certificate-bundle.zip -d kibana/config

Les claus hi són, així que només queda canviar la configuració de Kibana perquè comenci a utilitzar-les. Al fitxer de configuració kibana.yml, canvieu http a https i afegiu línies amb la configuració de connexió SSL. Les tres últimes línies configuren la comunicació segura entre el navegador de l'usuari i Kibana.

elasticsearch.hosts: ["https://${HOSTNAME}:9200"]
elasticsearch.ssl.certificateAuthorities: /shared_folder/ca/ca.crt
elasticsearch.ssl.verificationMode: certificate
server.ssl.enabled: true
server.ssl.key: /../kibana/config/instance/instance.key
server.ssl.certificate: /../kibana/config/instance/instance.crt

Així, la configuració s'ha completat i l'accés a les dades del clúster Elasticsearch està xifrat.

Si teniu preguntes sobre les capacitats d'Elastic Stack en subscripcions gratuïtes o de pagament, tasques de supervisió o creació d'un sistema SIEM, deixeu una sol·licitud a formulari de comentaris al nostre lloc web.

Més dels nostres articles sobre Elastic Stack a Habré:

Comprendre l'aprenentatge automàtic a la pila elàstica (també conegut com Elasticsearch, també conegut com ELK)

Mides d'Elasticsearch

Font: www.habr.com

Afegeix comentari