Elasto sub ŝlosilo: ebligante sekurecajn opciojn de Elasticsearch-grupo por aliro de interne kaj ekstere

Elasto sub ŝlosilo: ebligante sekurecajn opciojn de Elasticsearch-grupo por aliro de interne kaj ekstere

Elastic Stack estas konata ilo en la SIEM-sistema merkato (fakte, ne nur ili). Ĝi povas kolekti multajn diversgrandajn datumojn, ambaŭ sentemajn kaj ne tre sentemajn. Ĝi ne estas tute ĝusta se aliro al la Elastic Stack-elementoj mem ne estas protektita. Defaŭlte, ĉiuj Elastic-eksterelaj elementoj (Elasticsearch, Logstash, Kibana, kaj Beats-kolektantoj) funkcias per malfermitaj protokoloj. Kaj en Kibana mem, aŭtentigo estas malŝaltita. Ĉiuj ĉi tiuj interagoj povas esti sekurigitaj kaj en ĉi tiu artikolo ni diros al vi kiel fari tion. Por oportuno, ni dividis la rakonton en 3 semantikajn blokojn:

  • Rol-bazita datuma alirmodelo
  • Sekureco de datumoj ene de Elasticsearch-areto
  • Sekurigi datumojn ekstere de Elasticsearch-areto

Detaloj sub la tranĉo.

Rol-bazita datuma alirmodelo

Se vi instalas Elasticsearch kaj neniel agordas ĝin, aliro al ĉiuj indeksoj estos malfermita al ĉiuj. Nu, aŭ tiuj, kiuj povas uzi buklon. Por eviti ĉi tion, Elasticsearch havas rolmodelon, kiu disponeblas ekde Baza abono (kiu estas senpaga). Skeme ĝi aspektas kiel ĉi tio:

Elasto sub ŝlosilo: ebligante sekurecajn opciojn de Elasticsearch-grupo por aliro de interne kaj ekstere

Kio estas en la bildo

  • Uzantoj estas ĉiuj, kiuj povas ensaluti uzante siajn akreditaĵojn.
  • Rolo estas aro de rajtoj.
  • Rajtoj estas aro de privilegioj.
  • Privilegioj estas permesoj por skribi, legi, forigi ktp. (Plena listo de privilegioj)
  • Rimedoj estas indeksoj, dokumentoj, kampoj, uzantoj kaj aliaj stokaj estaĵoj (la rolmodelo por iuj rimedoj disponeblas nur per pagitaj abonoj).

Defaŭlte Elasticsearch havas skatoluzantoj, al kiu ili estas alkroĉitaj kestoroloj. Post kiam vi ebligas sekurecajn agordojn, vi povas tuj uzi ilin.

Por ebligi sekurecon en Elasticsearch-agordoj, vi devas aldoni ĝin al la agorda dosiero (defaŭlte tio estas elasticsearch/config/elasticsearch.yml) nova linio:

xpack.security.enabled: true

Post ŝanĝi la agordan dosieron, lanĉu aŭ rekomencu Elasticsearch por ke la ŝanĝoj efektiviĝu. La sekva paŝo estas atribui pasvortojn al skatoluzantoj. Ni faru tion interage uzante la komandon sube:

[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]

Ni kontrolas:

[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

Vi povas frapeti vin sur la dorso - la agordoj ĉe la flanko de Elasticsearch estas finitaj. Nun estas tempo agordi Kibana. Se vi rulas ĝin nun, eraroj aperos, do gravas krei ŝlosilan vendejon. Ĉi tio estas farita en du komandoj (uzanto kibana kaj la pasvorto enigita ĉe la pasvorta krea paŝo en Elasticsearch):

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

Se ĉio estas ĝusta, Kibana komencos peti ensaluton kaj pasvorton. La Baza abono inkluzivas modelon bazitan sur internaj uzantoj. Komencante per Gold, vi povas konekti eksterajn aŭtentikajn sistemojn - LDAP, PKI, Active Directory kaj Ununuran ensalutsistemojn.

Elasto sub ŝlosilo: ebligante sekurecajn opciojn de Elasticsearch-grupo por aliro de interne kaj ekstere

Alirrajtoj al objektoj ene de Elasticsearch ankaŭ povas esti limigitaj. Tamen, por fari la samon por dokumentoj aŭ kampoj, vi bezonos pagitan abonon (ĉi tiu lukso komenciĝas per la Platena nivelo). Ĉi tiuj agordoj haveblas en la interfaco de Kibana aŭ per Sekureca API. Vi povas kontroli per la jam konata menuo de Dev Tools:

Kreante rolon

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

Kreante uzanton

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

Sekureco de datumoj ene de Elasticsearch-areto

Kiam Elasticsearch funkcias en areto (kio estas ofta), sekurecaj agordoj ene de la areto fariĝas gravaj. Por sekura komunikado inter nodoj, Elasticsearch uzas la TLS-protokolon. Por agordi sekuran interagadon inter ili, vi bezonas atestilon. Ni generas atestilon kaj privatan ŝlosilon en PEM-formato:

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

Post ekzekuti la komandon supre, en la dosierujo /../elasticsearch arkivo aperos elasta-stako-ca.zip. Ene de ĝi vi trovos atestilon kaj privatan ŝlosilon kun etendaĵoj krt и ŝlosilo respektive. Estas konsilinde meti ilin sur komunan rimedon, kiu devus esti alirebla de ĉiuj nodoj en la areto.

Ĉiu nodo nun bezonas siajn proprajn atestilojn kaj privatajn ŝlosilojn bazitajn sur tiuj en la komuna dosierujo. Kiam vi plenumas la komandon, oni petos vin agordi pasvorton. Vi povas aldoni pliajn opciojn -ip kaj -dns por kompleta kontrolo de interrilatantaj nodoj.

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

Kiel rezulto de ekzekuto de la komando, ni ricevos atestilon kaj privatan ŝlosilon en formato PKCS#12, protektitaj per pasvorto. Restas nur movi la generitan dosieron p12 al la agorda dosierujo:

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

Aldonu pasvorton al la atestilo en la formato p12 en ŝlosilvendejo kaj truststore sur ĉiu nodo:

[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

Jam konata elasticsearch.yml Restas nur aldoni liniojn kun atestildatumoj:

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

Ni lanĉas ĉiujn Elasticsearch-nodojn kaj plenumas buklo. Se ĉio estis farita ĝuste, respondo kun pluraj nodoj estos resendita:

[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

Estas alia sekureca opcio - IP-adresfiltrado (disponebla en abonoj de la Ora nivelo). Permesas al vi krei blankajn listojn de IP-adresoj de kiuj vi rajtas aliri nodojn.

Sekurigi datumojn ekstere de Elasticsearch-areto

Ekster la areto signifas konekti eksterajn ilojn: Kibana, Logstash, Beats aŭ aliaj eksteraj klientoj.

Elasto sub ŝlosilo: ebligante sekurecajn opciojn de Elasticsearch-grupo por aliro de interne kaj ekstere

Por agordi subtenon por https (anstataŭ http), aldonu novajn liniojn al 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

Ĉar La atestilo estas pasvorta protektita, aldonu ĝin al la ŝlosilvendejo kaj truststore sur ĉiu nodo:

[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

Post aldoni la ŝlosilojn, Elasticsearch-nodoj estas pretaj konektiĝi per https. Nun ili povas esti lanĉitaj.

La sekva paŝo estas krei ŝlosilon por konekti Kibana kaj aldoni ĝin al la agordo. Surbaze de la atestilo, kiu jam troviĝas en la komuna dosierujo, ni generos atestilon en formato PEM (PKCS#12 Kibana, Logstash kaj Beats ankoraŭ ne subtenas):

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

Restas nur malpaki la kreitajn ŝlosilojn en la dosierujon kun la agordo Kibana:

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

La ŝlosiloj estas tie, do restas nur ŝanĝi la agordon de Kibana por ke ĝi ekuzi ilin. En la agorda dosiero kibana.yml, ŝanĝu http al https kaj aldonu liniojn kun SSL-konekto-agordoj. La lastaj tri linioj agordas sekuran komunikadon inter la retumilo de la uzanto kaj 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

Tiel, la agordoj estas kompletigitaj kaj aliro al datumoj en la Elasticsearch-areto estas ĉifrita.

Se vi havas demandojn pri la kapabloj de Elastic Stack pri senpagaj aŭ pagitaj abonoj, monitorado de taskoj aŭ kreado de SIEM-sistemo, lasu peton al reago formularo en nia retejo.

Pli da niaj artikoloj pri Elastic Stack sur Habré:

Kompreni Maŝinlernadon en la Elasta Stako (alinome Elasticsearch, alinome ELK)

Elasticsearch grandeco

fonto: www.habr.com

Aldoni komenton