Hur man konfigurerar Elasticsearch för att undvika lÀckor

Under det senaste Äret har det uppstÄtt mÄnga lÀckor frÄn databaser. Elasticsearch (hÀr, hÀr och hÀr). I mÄnga fall lagrades personuppgifter i databasen. Dessa lÀckor kunde ha undvikits om administratörerna efter distributionen av databasen hade kontrollerat nÄgra enkla instÀllningar. Idag kommer vi att diskutera dem.

För att vara tydlig, i vÄr praktik anvÀnder vi Elasticsearch för lagring av loggar och analys av informationsskydd, operativsystem och programvara pÄ vÄr IaaS-plattform som uppfyller kraven i 152-FZ, Cloud-152. 

Hur man konfigurerar Elasticsearch för att undvika lÀckor

Vi kontrollerar om databasen 'tycker' ut pÄ internet.

I de flesta kÀnda fallen av lÀckor (hÀr, hÀr) fick angriparen enkelt och okomplicerat tillgÄng till data: databasen publicerades pÄ internet och kunde anslutas utan autentisering.  

LÄt oss först ta itu med publicering pÄ internet. Varför hÀnder det? Det handlar om att för att fÄ en mer flexibel anvÀndning av Elasticsearch rekommenderas skapar man en kluster med tre servrar. För att databaserna ska kunna kommunicera behöver man öppna portar. Till slut begrÀnsar administratörerna inte Ätkomsten till databasen, och databasen kan anslutas frÄn var som helst. Att kontrollera om det finns extern Ätkomst till databasen Àr enkelt. Skriv helt enkelt in http://[IP/ElasticsearchNamn]:9200/_cat/nodes?v

Om du kan komma in, betyder det att du snabbt ska stÀnga av Ätkomsten.

Vi skyddar anslutningen till databasen.

Nu gör vi sÄ att databasen inte kan anslutas utan autentisering.

Elasticsearch har en autentiseringsmodul som begrÀnsar Ätkomsten till databasen, men den ingÄr bara i den betalda plugin-samlingen X-Pack (1 mÄnads gratis anvÀndning).

De goda nyheterna Àr att Amazon under hösten 2019 öppnade sina arbeten som överlappar med X-Pack. Autentiseringsfunktionen vid anslutning till databasen blev tillgÀnglig under en öppen licens för version Elasticsearch 7.3.2., och redan i arbete finns en ny version för Elasticsearch 7.4.0.

Denna plugin installeras enkelt. GĂ„ in i serverkonsolen och anslut till repot:

RPM-baserad:

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

yum update

yum install opendistro-security


DEB-baserad:

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

Konfigurerar interaktionen mellan servrarna via SSL

Vid installation av pluginen Àndras konfigurationen för anslutningsporten till databasen. SSL-kryptering aktiveras pÄ den. För att klusterservrarna ska kunna fortsÀtta samarbeta mÄste interaktionen mellan dem konfigureras med hjÀlp av SSL.

Förtroendet mellan vÀrdar kan etableras med hjÀlp av en egen certifikatutfÀrdare eller utan. Med den första metoden Àr allt tydligt: man mÄste bara vÀnda sig till CA-specialister. LÄt oss gÄ direkt till den andra.

  1. Vi skapar en variabel med det fullstÀndiga domÀnnamnet:

    export DOMAIN_CN="example.com"

  2. Vi skapar en privat nyckel:

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

  3. Vi signerar rotcertifikatet. Förvara det som en ögonsten: om det gÄr förlorat eller komprometteras, mÄste förtroendet mellan alla vÀrdar konfigureras om.

    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. Vi skapar en administratörsnyckel:

    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. Vi skapar en begÀran för certifikatssignering:

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

  6. Vi skapar administratörscertifikatet:

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

  7. Vi skapar certifikat för Elasticsearch-noden:

    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. Vi skapar en signeringsbegÀran:

    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. Vi signerar certifikatet:

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

  10. Vi distribuerar certifikatet mellan Elasticsearch-noderna i mappen:

    /etc/elasticsearch/


    Vi kommer att behöva filerna:

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

  11. Vi konfigurerar /etc/elasticsearch/elasticsearch.yml – vi Ă€ndrar namnen pĂ„ certifikatfilerna till de vi har genererat:

    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=Moskva Inc.,ST=Moskva,C=RU
    	opendistro_security.nodes_dn:
    	  − CN=node-01.example.com,O=Moskva Inc.,ST=Moskva,C=RU

Ändrar lösenord för interna anvĂ€ndare

  1. AnvÀnd kommandot nedan för att skriva ut hash-lösenordet till konsolen:

    sh ${OD_SEC}/tools/hash.sh -p [lösenord]

  2. Ändrar hashen i filen till den mottagna:

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

Konfigurerar brandvÀggen i OS

  1. TillÄter start av brandvÀggen:

    systemctl enable firewalld

  2. Startar den:

    systemctl start firewalld

  3. TillÄter anslutning till Elasticsearch:

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

  4. Laddar om brandvÀggsreglerna:

    firewall-cmd --reload

  5. Visar aktiva regler:

    firewall-cmd --list-all

TillÀmpa alla vÄra Àndringar till Elasticsearch

  1. Skapa en variabel med den fullstÀndiga sökvÀgen till mappen med plugin:

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

  2. Kör skriptet som uppdaterar lösenord och kontrollerar instÀllningarna:

    ${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. Kontrollera om Àndringarna har tillÀmpats:

    curl -XGET https://[IP/Namn Elasticsearch]:9200/_cat/nodes?v -u admin:[lösenord] --insecure

Detta Àr alla grundlÀggande instÀllningar som skyddar Elasticsearch frÄn obehörig Ätkomst.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster