Za poslední rok došlo k mnoha únikům z databází
Okamžitě si udělejme rezervaci, že v naší praxi používáme Elasticsearch k ukládání protokolů a analýze protokolů nástrojů pro bezpečnost informací, OS a softwaru v naší platformě IaaS, která splňuje požadavky 152-FZ, Cloud-152.
Zkontrolujeme, zda databáze „vyčnívá“ z internetu
Ve většině známých případů úniků (
Nejprve se budeme zabývat publikováním na internetu. Proč se to děje? Faktem je, že pro flexibilnější provoz Elasticsearch
Pokud se můžete dostat dovnitř, běžte to zavřít.
Ochrana připojení k databázi
Nyní to uděláme tak, že se nebude možné připojit k databázi bez ověření.
Elasticsearch má autentizační modul, který omezuje přístup k databázi, ale je k dispozici pouze v placené sadě pluginů X-Pack (1 měsíc používání zdarma).
Dobrou zprávou je, že na podzim roku 2019 Amazon otevřel svůj vývoj, který se překrývá s X-Pack. Funkce ověřování při připojování k databázi je dostupná pod bezplatnou licencí pro verzi Elasticsearch 7.3.2 a nové vydání pro Elasticsearch 7.4.0 se již připravuje.
Tento plugin se snadno instaluje. Přejděte do konzoly serveru a připojte úložiště:
Na základě 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ákladě DEB:
wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
Nastavení interakce mezi servery přes SSL
Při instalaci pluginu se změní konfigurace portu připojujícího se k databázi. Umožňuje šifrování SSL. Aby klastrové servery mohly nadále vzájemně spolupracovat, musíte mezi nimi nakonfigurovat interakci pomocí SSL.
Důvěru mezi hostiteli lze vytvořit s vlastní certifikační autoritou nebo bez ní. U první metody je vše jasné: stačí kontaktovat specialisty CA. Přejděme rovnou k druhému.
- Vytvořte proměnnou s celým názvem domény:
export DOMAIN_CN="example.com"
- Vytvořte soukromý klíč:
openssl genrsa -out root-ca-key.pem 4096
- Podepište kořenový certifikát. Udržujte to v bezpečí: pokud dojde ke ztrátě nebo kompromitaci, bude nutné znovu nakonfigurovat důvěru mezi všemi hostiteli.
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
- Vytvořte klíč správce:
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
- Vytvořte žádost o 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
- Vytvořte certifikát správce:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- Vytvořte certifikáty pro uzel 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
- Vytvořte žádost 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
- Podepsání certifikátu:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- Umístěte certifikát mezi uzly Elasticsearch v následující složce:
/etc/elasticsearch/
potřebujeme soubory:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- Konfigurace /etc/elasticsearch/elasticsearch.yml – změnit názvy souborů s certifikáty na ty, které jsme 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
Změna hesel pro interní uživatele
- Pomocí níže uvedeného příkazu vydáme hash hesla do konzole:
sh ${OD_SEC}/tools/hash.sh -p [пароль]
- Změňte hash v souboru na přijatý:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Nastavení firewallu v OS
- Povolte spuštění brány firewall:
systemctl enable firewalld
- Pojďme to spustit:
systemctl start firewalld
- Povolit připojení k Elasticsearch:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- Znovu načtěte pravidla brány firewall:
firewall-cmd --reload
- Zde jsou pracovní pravidla:
firewall-cmd --list-all
Aplikujeme všechny naše změny na Elasticsearch
- Vytvořte proměnnou s úplnou cestou ke složce s pluginem:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- Spusťte skript, který aktualizuje hesla a zkontroluje nastavení:
${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
- Zkontrolujte, zda byly změny použity:
curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure
To je vše, toto jsou minimální nastavení, která chrání Elasticsearch před neoprávněným připojením.
Zdroj: www.habr.com