Za posledný rok došlo k mnohým únikom databáz. (, и ). V mnohých prípadoch databáza obsahovala osobné údaje. Týmto únikom sa dalo vyhnúť, keby si administrátori po nasadení databázy našli čas na kontrolu niekoľkých jednoduchých nastavení. Dnes si ich preberieme.
Hneď si ujasnime, že v našej praxi používame Elasticsearch na ukladanie a analýzu protokolov pre nástroje informačnej bezpečnosti, operačné systémy a softvér v našej platforme IaaS Cloud-152, ktorá spĺňa požiadavky federálneho zákona č. 152.

Skontrolujeme, či databáza „vyčnieva“ z internetu
Vo väčšine známych prípadov úniku (, ) Útočník získal prístup k údajom jednoducho a ľahko: databáza bola zverejnená na internete a bolo k nej možné pristupovať bez overovania.
Najprv sa pozrime na publikovanie na webe. Prečo sa to deje? Elasticsearch je navrhnutý pre flexibilnejšiu prevádzku. Vytvorte klaster troch serverov. Aby databázy mohli navzájom komunikovať, je potrebné otvoriť porty. Vďaka tomu administrátori nijako neobmedzujú prístup k databáze a vy sa k nej môžete pripojiť odkiaľkoľvek. Kontrola externého prístupu k databáze je jednoduchá. Stačí zadať [nejasné] do prehliadača. http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v
Ak sa vám podarí dostať dnu, musíte bežať a zavrieť ho.
Zabezpečenie pripojenia k databáze
Teraz to nastavme tak, aby nebolo možné pripojiť sa k databáze bez autentifikácie.
Elasticsearch má autentifikačný modul, ktorý obmedzuje prístup k databáze, ale je dostupný iba v platenej sade pluginov X-Pack (1 mesiac zadarmo).
Dobrou správou je, že na jeseň 2019 spoločnosť Amazon sprístupnila svoju prácu, ktorá sa prekrýva s X-Packom, ako otvorený zdrojový kód. Funkcia autentifikácie databázy sa stala dostupnou pod otvorenou licenciou pre Elasticsearch 7.3.2 a nová verzia pre Elasticsearch 7.4.0 sa už pripravuje.
Inštalácia tohto pluginu je jednoduchá. Stačí prejsť do konzoly servera a pripojiť sa k repozitáru:
Na základe RPM:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
Na základe DEB:
wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -Nastavenie komunikácie medzi servermi cez SSL
Pri inštalácii doplnku sa zmení konfigurácia portu pre pripojenie k databáze. Je na ňom povolené šifrovanie SSL. Aby ste zabezpečili, že klastrové servery môžu medzi sebou naďalej komunikovať, musíte nakonfigurovať komunikáciu medzi nimi pomocou SSL.
Dôveru medzi hostiteľmi je možné nadviazať s vlastnou certifikačnou autoritou alebo bez nej. Prvá metóda je jednoduchá: stačí kontaktovať špecialistu na certifikačnú autoritu. Prejdime k druhej.
- Vytvorme premennú s celým názvom domény:
export DOMAIN_CN="example.com" - Vytvorte si súkromný kľúč:
openssl genrsa -out root-ca-key.pem 4096 - Podpíšeme koreňový certifikát. Uchovávame ho v bezpečí: ak sa stratí alebo je zneužitý, bude potrebné prekonfigurovať dôveru medzi všetkými hostiteľmi.
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 - Vytvorte si administrátorský kľúč:
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 - Vytvorme si požiadavku na podpis certifikátu:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr - Vytvorte certifikát správcu:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem - Vytvorte certifikáty pre uzol 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 - Vytvorme žiadosť o podpis:
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 - Podpisujeme certifikát:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem - Certifikát umiestnime medzi uzly Elasticsearch v priečinku:
/etc/elasticsearch/
Budeme potrebovať nasledujúce súbory:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem - Konfigurácia /etc/elasticsearch/elasticsearch.yml – zmeníme názvy súborov s certifikátmi na tie, ktoré sme vygenerovali:
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
Zmena hesiel pre interných používateľov
- Pomocou nasledujúceho príkazu vypíšeme hash hesla do konzoly:
sh ${OD_SEC}/tools/hash.sh -p [пароль] - Zmeníme hash v súbore na prijatý:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Konfigurácia firewallu v operačnom systéme
- Povoliť spustenie firewallu:
systemctl enable firewalld - Spustime to:
systemctl start firewalld - Povoliť pripojenie k Elasticsearch:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent - Znovu načítajte pravidlá brány firewall:
firewall-cmd --reload - Vyvodzujeme pracovné pravidlá:
firewall-cmd --list-all
Aplikovanie všetkých našich zmien do Elasticsearch
- Vytvorte premennú s úplnou cestou k priečinku s pluginom:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/" - Spustime skript, ktorý aktualizuje heslá a skontroluje nastavenia:
${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 - Skontrolujme, či sa zmeny uplatnili:
curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure
To je všetko, toto sú minimálne nastavenia, ktoré zabraňujú neoprávnenému pripojeniu k Elasticsearch.
Zdroj: hab.com
