Kumaha ngonpigurasikeun Elasticsearch pikeun nyegah bocor

Sapanjang taun katukang, aya seueur bocor tina pangkalan data Elasticsearch (di dieu, di dieu и di dieu). Dina seueur kasus, data pribadi disimpen dina pangkalan data. Bocor ieu tiasa dihindari upami, saatos nyebarkeun pangkalan data, pangurus parantos ganggu pariksa sababaraha setélan saderhana. Dinten ieu kami bakal ngobrol ngeunaan aranjeunna.

Hayu urang geura-giru nyieun reservasi yén dina prakna urang ngagunakeun Elasticsearch pikeun nyimpen log jeung nganalisis log pakakas kaamanan informasi, OS jeung software dina platform IaaS urang, nu sasuai jeung sarat 152-FZ, Cloud-152. 

Kumaha ngonpigurasikeun Elasticsearch pikeun nyegah bocor

Urang pariksa naha database "nempel kaluar" ka Internet

Dina kalolobaan kasus bocor (di dieu, di dieu) panyerang nampi aksés kana data sacara sederhana sareng teu biasa: pangkalan data diterbitkeun dina Internét, sareng éta tiasa nyambung ka éta tanpa auténtikasi.  

Kahiji, hayu urang nungkulan penerbitan dina Internet. Naha ieu kajadian? Kanyataanna nyaéta pikeun operasi anu langkung fleksibel tina Elasticsearch disarankeun nyieun klaster tilu server. Supados database tiasa saling komunikasi, anjeun kedah muka palabuhan. Hasilna, pangurus henteu ngawatesan aksés ka pangkalan data dina cara naon waé, sareng anjeun tiasa nyambung ka pangkalan data ti mana waé. Gampang mariksa naha pangkalan data tiasa diaksés ti luar. Ngan lebetkeun dina browser http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v

Upami anjeun tiasa lebet, teras lumpat pikeun nutup.

Ngajagi sambungan kana pangkalan data

Ayeuna kami bakal ngajantenkeun éta mustahil pikeun nyambung ka pangkalan data tanpa auténtikasi.

Elasticsearch gaduh modul auténtikasi anu ngabatesan aksés kana databés, tapi ngan ukur aya dina set plugin X-Pack anu dibayar (1 bulan panggunaan gratis).

Warta anu saé nyaéta dina usum gugur 2019, Amazon muka pamekaranna, anu tumpang tindih sareng X-Pack. Fungsi auténtikasi nalika nyambungkeun kana pangkalan data parantos sayogi dina lisénsi gratis pikeun versi Elasticsearch 7.3.2, sareng sékrési énggal pikeun Elasticsearch 7.4.0 parantos didamel.

Plugin ieu gampang dipasang. Pindah ka konsol server sareng sambungkeun gudang:

RPM dumasar:

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

yum update

yum install opendistro-security


Dumasar DEB:

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

Nyetel interaksi antara server via SSL

Nalika masang plugin, konfigurasi port nyambungkeun kana database robah. Éta ngamungkinkeun énkripsi SSL. Supados server kluster tiasa teras-terasan damel saling, anjeun kedah ngonpigurasikeun interaksi antara aranjeunna nganggo SSL.

Kapercayaan antara host tiasa ditetepkeun nganggo atanapi henteu nganggo otoritas sertipikat sorangan. Kalayan metodeu anu munggaran, sadayana jelas: anjeun ngan ukur kedah ngahubungi spesialis CA. Hayu urang ngalih langsung ka kadua.

  1. Jieun variabel kalayan ngaran domain lengkep:

    export DOMAIN_CN="example.com"

  2. Jieun konci pribadi:

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

  3. Asupkeun sertipikat akar. Tetep aman: lamun leungit atawa kompromi, kapercayaan antara sakabeh host bakal perlu reconfigured.

    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. Jieun konci administrator:

    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. Jieun pamundut pikeun nandatanganan sertipikat:

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

  6. Jieun sertipikat administrator:

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

  7. Jieun sertipikat pikeun titik Elasticsearch:

    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. Jieun pamundut tanda tangan:

    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. Penandatanganan sertipikat:

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

  10. Teundeun sertipikat antara titik Elasticsearch dina folder ieu:

    /etc/elasticsearch/


    urang peryogi file:

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

  11. Ngonpigurasikeun /etc/elasticsearch/elasticsearch.yml - robih nami file sareng sertipikat anu didamel ku kami:

    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

Ngarobah kecap akses pikeun pamaké internal

  1. Ngagunakeun paréntah di handap, urang kaluaran sandi hash kana konsol nu:

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

  2. Robah hash dina file kana anu ditampi:

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

Nyetel firewall dina OS

  1. Ngidinan firewall pikeun ngamimitian:

    systemctl enable firewalld

  2. Hayu urang ngajalankeun éta:

    systemctl start firewalld

  3. Ngidinan sambungan ka Elasticsearch:

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

  4. Reload aturan firewall:

    firewall-cmd --reload

  5. Ieu aturan gawé:

    firewall-cmd --list-all

Nerapkeun sadaya parobihan kami ka Elasticsearch

  1. Jieun variabel kalayan jalur pinuh ka folder nganggo plugin:

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

  2. Hayu urang ngajalankeun skrip anu bakal ngamutahirkeun kecap akses sareng pariksa setélan:

    ${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. Pariksa lamun parobahan geus dilarapkeun:

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

Éta sadayana, ieu mangrupikeun setélan minimum anu ngajagi Elasticsearch tina sambungan anu henteu sah.

sumber: www.habr.com

Tambahkeun komentar