Viimase aasta jooksul on toimunud palju andmelekkeid (, ja ). Paljuski olid andmebaasis isikuandmed. Neid lekeid oleks saanud vältida, kui administratorid oleksid andmebaasi käivitamise järel kontrollinud mõningaid lihtsaid seadeid. Täna räägime neist.
Koheselt märgime ära, et oma praktikas kasutame logide ja teabe kaitse vahendite, operatsioonisüsteemide ja tarkvara analüüsimiseks Elasticsearchi meie IaaS platvormil, mis vastab 152-ФZ ning Cloud-152 nõuetele.

Kontrollime, kas andmebaas ei ole internetis avatud
Tuntud lekete enamikul juhtudel (, ) sai kurjategija andmetele lihtsalt ja keerukalt ligi: andmebaas oli internetis avalikustatud ning sellele pääses ligi ilma autentimiseta.
Alustame internetis avalikustamisega. Miks see juhtub? Asi on selles, et Elasticsearchi tõhusamaks tööks on vaja luua kolmese serveri klaster. Et andmebaasid omavahel suhtleksid, tuleb avada pordid. Tulemusena ei piira administratorid juurdepääsu andmebaasile, ja sellele pääseb ligi igalt poolt. Kontrollida, kas andmebaasile on juurdepääs väljastpoolt, on lihtne. Lihtsalt kirjutame brauserisse http://[IP/Nimi Elasticsearch]:9200/_cat/nodes?v
Kui pääseb ligi, siis tuleb kiiresti sulgeda.
Kaitseme andmebaasiga ühendust
Nüüd teeme nii, et andmebaasi ei saa ühendada ilma autentimiseta.
Elasticsearchil on autentimise moodul, mis piirab juurdepääsu andmebaasile, kuid see on saadaval ainult tasulises X-Pack pistikprogrammide komplektis (1 kuu tasuta kasutamist).
Hea uudis on see, et 2019. aasta sügisel avas Amazon oma arendused, mis kattuvad X-Packiga. Andmebaasi ühendamise autentimise funktsioon sai vabaks litsentsiks versioonile Elasticsearch 7.3.2, ning uus väljaanne Elasticsearch 7.4.0 on juba töös.
Seda pistikprogrammi installitakse lihtsalt. Siseneme serveri konsooli ja ühendame hoidla:
RPM-põhine:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
DEB-põhine:
wget -qO - https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -Seame serverite vahel SSL-i kaudu suhtlemise
Plugin'i installimisel muutub andmebaasi ühenduse porti konfiguratsioon. SSL-krüptimine aktiveeritakse. Et klastriserverid saaksid omavahel jätkuvalt töötada, tuleb nende vaheliste suhete seadistamiseks kasutada SSL-i.
Usaldust hostide vahel saab luua kas oma tunnistusasutuse abil või ilma. Esimese variandi puhul on kõik selge: peate lihtsalt pöörduma CA spetsialistide poole. Liikume kohe teise juurde.
- Loome muutuja domeeni täisnime jaoks:
export DOMAIN_CN="example.com" - Loome privaatvõtme:
openssl genrsa -out root-ca-key.pem 4096 - Allkirjastame juurtunnistuse. Hoidke seda nagu silmapaistvat silma: selle kadumise või kompromiteerimise korral tuleb kõikide hostide vahelne usaldus uuesti seadistada.
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 - Loome administraatori võtme:
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 - Loome sertifikaadi allkirjastamise päringu:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr - Loome administraatori sertifikaadi:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem - Loome Elasticsearchi sõlme sertifikaate:
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 - Loome allkirjastamisettepaneku:
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 - Allkirjastame sertifikaadi:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem - Paigutame sertifikaadi Elasticsearchi sõlmede vahel kausta:
/etc/elasticsearch/
me vajame faile:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem - Seadistame /etc/elasticsearch/elasticsearch.yml – muudame sertifikaatide failide nimed meie genereeritud nimedeks:
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
Vahetame sisekasutajate paroole
- Aluselt käivitatakse järgmine käsk, mis väljastab parooli hash'i konsoolis:
sh ${OD_SEC}/tools/hash.sh -p [пароль] - Vahetame hash'i failis saadud vastu:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Seadistame tulemüürisüsteemi
- Lubame tulemüüri käivitamise:
systemctl enable firewalld - Käivitame selle:
systemctl start firewalld - Lubame ühenduse Elasticsearchiga:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent - Taaskäivitame tulemüüri reeglid:
firewall-cmd --reload - Kuvame töötavad reeglid:
firewall-cmd --list-all
Rakendame kõik meie muudatused Elasticsearchile
- Loome muutuja täispöördena kausta pluginiga:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/" - Käivitame skripti, mis uuendab paroole ja kontrollib seadeid:
${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 - Kontrollime, kas muudatused on rakendunud:
curl -XGET https://[IP/Elasticsearchi nimi]:9200/_cat/nodes?v -u admin:[пароль] --insecure
Kõik, need on minimaalsete seadistuste, mis kaitsevad Elasticsearchi autoriseerimata ühenduste eest.
Allikas: habr.com
