Wéi konfiguréiert Elasticsearch fir Leckage ze vermeiden

Am leschte Joer goufen et vill Fuite aus Datenbanken Elastikerzuch (kuck, kuck и kuck). A ville Fäll goufen perséinlech Donnéeën an der Datebank gespäichert. Dës Leckage kéinte evitéiert ginn, wann d'Administrateuren sech nom Ofbau vun der Datebank beméit hunn e puer einfach Astellungen ze kontrolléieren. Haut wäerte mir iwwer hinnen schwätzen.

Loosst eis direkt reservéieren datt mir an eiser Praxis Elasticsearch benotze fir Logbicher ze späicheren an Logbicher vun Informatiounssécherheetsinstrumenter, OS a Software an eiser IaaS Plattform ze analyséieren, déi den Ufuerderunge vum 152-FZ, Cloud-152 entsprécht. 

Wéi konfiguréiert Elasticsearch fir Leckage ze vermeiden

Mir iwwerpréiwen ob d'Datebank op den Internet "stéckt".

Am meeschte bekannte Fäll vu Leckage (kuck, kuck) den Ugräifer krut Zougang zu den Donnéeën einfach an unpretentiously: d'Datebank gouf um Internet publizéiert, an et war méiglech ouni Authentifikatioun ze verbannen.  

Als éischt, loosst eis mat der Verëffentlechung um Internet beschäftegen. Firwat geschitt dat? D'Tatsaach ass, datt fir méi flexibel Operatioun vun Elasticsearch recommandéiert e Stärekoup vun dräi Serveren erstellen. Fir datt d'Datenbanken matenee kommunizéieren, musst Dir Ports opmaachen. Als Resultat beschränken d'Administrateuren den Zougang zu der Datebank op kee Fall, an Dir kënnt iwwerall mat der Datebank verbannen. Et ass einfach ze kontrolléieren ob d'Datebank vu baussen zougänglech ass. Gitt einfach an de Browser http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v

Wann Dir kënnt erakommen, da lafe fir se zou ze maachen.

Schutz vun der Verbindung mat der Datebank

Elo maache mir et sou datt et onméiglech ass mat der Datebank ze verbannen ouni Authentifikatioun.

Elasticsearch huet en Authentifikatiounsmodul deen den Zougang zu der Datebank limitéiert, awer et ass nëmme verfügbar am bezuelte X-Pack Plugin Set (1 Mount gratis Benotzung).

Déi gutt Noriicht ass datt am Hierscht 2019 Amazon seng Entwécklungen opgemaach huet, déi mam X-Pack iwwerlappt. D'Authentifikatiounsfunktioun wann Dir mat enger Datebank verbënnt ass verfügbar ënner enger gratis Lizenz fir d'Versioun Elasticsearch 7.3.2, an eng nei Verëffentlechung fir Elasticsearch 7.4.0 ass schonn an de Wierker.

Dëse Plugin ass einfach ze installéieren. Gitt op d'Serverkonsole a verbënnt de Repository:

RPM baséiert:

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

yum update

yum install opendistro-security


DEB baséiert:

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

Interaktioun tëscht Serveren iwwer SSL opsetzen

Wann Dir de Plugin installéiert, ännert d'Konfiguratioun vum Hafen, deen mat der Datebank verbënnt. Et erméiglecht SSL Verschlësselung. Fir datt d'Clusterserver weider matenee schaffen, musst Dir Interaktioun tëscht hinnen mat SSL konfiguréieren.

Vertrauen tëscht Hosten ka mat oder ouni seng eege Zertifika Autoritéit etabléiert ginn. Mat der éischter Method ass alles kloer: Dir musst just CA Spezialisten kontaktéieren. Loosst eis direkt op déi zweet goen.

  1. Erstellt eng Variabel mam ganzen Domain Numm:

    export DOMAIN_CN="example.com"

  2. Erstellt e private Schlëssel:

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

  3. Ënnerschreift de Root Zertifikat. Halt et sécher: wann et verluer ass oder kompromittéiert ass, muss d'Vertrauen tëscht all Hosten nei konfiguréiert ginn.

    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. Erstellt en Administratorschlëssel:

    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. Erstellt eng Ufro fir den Zertifika z'ënnerschreiwen:

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

  6. Erstellt en Administrator Zertifikat:

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

  7. Erstellt Certificaten fir den Elasticsearch Node:

    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. Erstellt eng Ënnerschrëft Ufro:

    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. Zertifikat ënnerschreiwen:

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

  10. Plaz den Zertifika tëscht Elasticsearch Noden am folgenden Dossier:

    /etc/elasticsearch/


    mir brauchen d'Dateien:

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

  11. Konfiguréieren /etc/elasticsearch/elasticsearch.yml - Änneren den Numm vun den Dateien mat Certificaten op déi vun eis generéiert:

    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

Änneren Passwierder fir intern Benotzer

  1. Mat dem Kommando hei drënner gi mir de Passwuert Hash op d'Konsole eraus:

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

  2. Ännert den Hash an der Datei op dee kritt:

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

Konfiguratioun vun enger Firewall am OS

  1. Loosst d'Firewall ufänken:

    systemctl enable firewalld

  2. Loosst eis et starten:

    systemctl start firewalld

  3. Erlaabt Verbindung mat Elasticsearch:

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

  4. Reload d'Firewall Regelen:

    firewall-cmd --reload

  5. Hei sinn d'Aarbechtsregelen:

    firewall-cmd --list-all

All eis Ännerungen op Elasticsearch uwenden

  1. Erstellt eng Variabel mam ganze Wee an den Dossier mam Plugin:

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

  2. Loosst eis e Skript lafen deen d'Passwierder aktualiséieren an d'Astellunge kontrolléieren:

    ${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. Kontrolléiert ob d'Ännerunge applizéiert goufen:

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

Dat ass alles, dëst sinn d'Mindestastellungen déi Elasticsearch vun onerlaabten Verbindungen schützen.

Source: will.com

Setzt e Commentaire