Hvernig á að stilla Elasticsearch til að forðast leka

Undanfarið ár hefur verið mikill leki úr gagnagrunnum Elasticsearch (hér, hér и hér). Í mörgum tilfellum voru persónuupplýsingar geymdar í gagnagrunninum. Þessum leka hefði verið hægt að forðast ef stjórnendur hefðu nennt að athuga nokkrar einfaldar stillingar eftir að gagnagrunnurinn var settur í notkun. Í dag munum við tala um þá.

Við skulum strax gera fyrirvara um að við notum Elasticsearch til að geyma annála og greina skrár yfir upplýsingaöryggisverkfæri, stýrikerfi og hugbúnað á IaaS vettvangi okkar, sem uppfyllir kröfur 152-FZ, Cloud-152. 

Hvernig á að stilla Elasticsearch til að forðast leka

Við athugum hvort gagnagrunnurinn „standist“ við internetið

Í flestum þekktum tilfellum leka (hér, hér) árásarmaðurinn fékk aðgang að gögnunum á einfaldan og tilgerðarlausan hátt: gagnagrunnurinn var birtur á netinu og hægt var að tengjast honum án auðkenningar.  

Í fyrsta lagi skulum við takast á við útgáfu á Netinu. Hvers vegna gerist þetta? Staðreyndin er sú að fyrir sveigjanlegri notkun Elasticsearch er mælt með búa til þyrping af þremur netþjónum. Til þess að gagnagrunnarnir geti átt samskipti sín á milli þarftu að opna gáttir. Þess vegna takmarka stjórnendur ekki aðgang að gagnagrunninum á nokkurn hátt og þú getur tengst gagnagrunninum hvar sem er. Það er auðvelt að athuga hvort gagnagrunnurinn sé aðgengilegur utan frá. Sláðu bara inn í vafranum http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v

Ef þú kemst inn skaltu hlaupa til að loka því.

Að vernda tenginguna við gagnagrunninn

Nú munum við gera það þannig að það er ómögulegt að tengjast gagnagrunninum án auðkenningar.

Elasticsearch er með auðkenningareiningu sem takmarkar aðgang að gagnagrunninum, en hún er aðeins fáanleg í greidda X-Pack viðbótasettinu (1 mánuður ókeypis notkun).

Góðu fréttirnar eru þær að haustið 2019 opnaði Amazon þróun sína, sem skarast við X-Pack. Auðkenningaraðgerðin við tengingu við gagnagrunn er orðin fáanleg með ókeypis leyfi fyrir útgáfu Elasticsearch 7.3.2 og ný útgáfa fyrir Elasticsearch 7.4.0 er þegar í vinnslu.

Þetta viðbót er auðvelt að setja upp. Farðu á netþjónaborðið og tengdu geymsluna:

RPM byggt:

curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo

yum update

yum install opendistro-security


DEB byggt:

wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -

Að setja upp samskipti milli netþjóna í gegnum SSL

Þegar viðbótin er sett upp breytist uppsetning tengisins sem tengist gagnagrunninum. Það gerir SSL dulkóðun kleift. Til þess að klasaþjónarnir haldi áfram að vinna hver með öðrum þarftu að stilla samskipti á milli þeirra með því að nota SSL.

Hægt er að koma á trausti milli gestgjafa með eða án eigin vottunaryfirvalds. Með fyrstu aðferðinni er allt ljóst: þú þarft bara að hafa samband við CA sérfræðinga. Förum beint yfir í annað.

  1. Búðu til breytu með öllu léninu:

    export DOMAIN_CN="example.com"

  2. Búðu til einkalykil:

    openssl genrsa -out root-ca-key.pem 4096

  3. Skrifaðu undir rótarvottorðið. Hafðu það öruggt: ef það glatast eða er í hættu þarf að endurstilla traustið á milli allra gestgjafa.

    openssl req -new -x509 -sha256 -subj "/C=RU/ST=Moscow/O=Moscow, Inc./CN=${DOMAIN_CN}" 
    -key root-ca-key.pem -out root-ca.pem

  4. Búðu til stjórnandalykil:

    openssl genrsa -out admin-key-temp.pem 4096
    openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt 
    -v1 PBE-SHA1-3DES -out admin-key.pem

  5. Búðu til beiðni um að undirrita vottorðið:

    openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " 
    -key admin-key.pem -out admin.csr

  6. Búðu til stjórnandavottorð:

    openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem 
    -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem

  7. Búðu til vottorð fyrir Elasticsearch hnútinn:

    export NODENAME="node-01"
    openssl genrsa -out ${NODENAME}-key-temp.pem 4096
    openssl pkcs8 -inform PEM -outform PEM -in ${NODENAME}-key-temp.pem -topk8 -nocrypt 
    -v1 PBE-SHA1-3DES -out ${NODENAME}-key.pem

  8. Búðu til undirskriftarbeiðni:

    openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${NODENAME}.${DOMAIN_CN}"  
    -addext"subjectAltName=DNS:${NODENAME}.${DOMAIN_CN},DNS:www.${NODENAME}.${DOMAIN_CN}" 
    -key ${NODENAME}-key.pem -out ${NODENAME}.csr

  9. Undirritun vottorðsins:

    openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial 
    -sha256 -out node.pem

  10. Settu vottorðið á milli Elasticsearch hnúta í eftirfarandi möppu:

    /etc/elasticsearch/


    við þurfum skrárnar:

            node-01-key.pem
    	node-01.pem
    	admin-key.pem
    	admin.pem
    	root-ca.pem

  11. Stillir /etc/elasticsearch/elasticsearch.yml - breyttu nafni skráanna með skírteinum í þau sem eru búin til af okkur:

    opendistro_security.ssl.transport.pemcert_filepath: node-01.pem                                                                                                                                                                                    
    	opendistro_security.ssl.transport.pemkey_filepath: node-01-key.pem                                                                                                                                                                                 
    	opendistro_security.ssl.transport.pemtrustedcas_filepath: root-ca.pem                                                                                                                                                                              
    	opendistro_security.ssl.transport.enforce_hostname_verification: false                                                                                                                                                                             
    	opendistro_security.ssl.http.enabled: true                                                                                                                                                                                                         
    	opendistro_security.ssl.http.pemcert_filepath: node-01.pem                                                                                                                                                                                         
    	opendistro_security.ssl.http.pemkey_filepath: node-01-key.pem                                                                                                                                                                                      
    	opendistro_security.ssl.http.pemtrustedcas_filepath: root-ca.pem                                                                                                                                                                                   
    	opendistro_security.allow_unsafe_democertificates: false                                                                                                                                                                                           
    	opendistro_security.allow_default_init_securityindex: true                                                                                                                                                                                         
    	opendistro_security.authcz.admin_dn:                                                                                                                                                                                                               
    	  − CN=admin,CN=example.com,O=Moscow Inc.,ST=Moscow,C=RU                                                                                                                                                                                                  
    	opendistro_security.nodes_dn:                                                                                                                                                                                                                      
    	  − CN=node-01.example.com,O=Moscow Inc.,ST=Moscow,C=RU

Að breyta lykilorðum fyrir innri notendur

  1. Með því að nota skipunina hér að neðan sendum við lykilorðahashinu út á stjórnborðið:

    sh ${OD_SEC}/tools/hash.sh -p [пароль]

  2. Breyttu kjötkássa í skránni í þann sem fékkst:

    /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml

Að setja upp eldvegg í stýrikerfinu

  1. Leyfa eldveggnum að ræsa:

    systemctl enable firewalld

  2. Við skulum ræsa það:

    systemctl start firewalld

  3. Leyfa tengingu við Elasticsearch:

    firewall-cmd --set-default-zone work
    firewall-cmd --zone=work --add-port=9200/TCP --permanent

  4. Endurhlaða eldveggsreglurnar:

    firewall-cmd --reload

  5. Hér eru vinnureglurnar:

    firewall-cmd --list-all

Notar allar breytingar okkar á Elasticsearch

  1. Búðu til breytu með fullri slóð að möppunni með viðbótinni:

    export  OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"

  2. Við skulum keyra skriftu sem mun uppfæra lykilorð og athuga stillingar:

    ${OD_SEC}/tools/securityadmin.sh -cd ${OD_SEC}/securityconfig/ 
    -icl -nhnv -cacert /etc/elasticsearch/root-ca.pem 
    -cert /etc/elasticsearch/admin.pem  
    -key /etc/elasticsearch/admin-key.pem

  3. Athugaðu hvort breytingarnar hafi verið notaðar:

    curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure

Það er allt, þetta eru lágmarksstillingar sem vernda Elasticsearch fyrir óviðkomandi tengingum.

Heimild: www.habr.com

Bæta við athugasemd