Pēdējā gada laikā no datubāzēm ir bijušas daudzas informācijas noplūdes
Nekavējoties atrunāsim, ka savā praksē mēs izmantojam Elasticsearch, lai uzglabātu žurnālus un analizētu informācijas drošības rīku, OS un programmatūras žurnālus mūsu IaaS platformā, kas atbilst 152-FZ, Cloud-152 prasībām.
Mēs pārbaudām, vai datubāze “pielīp” pie interneta
Vairumā zināmo noplūdes gadījumu (
Pirmkārt, nodarbosimies ar publicēšanu internetā. Kāpēc tas notiek? Fakts ir tāds, ka elastīgākai Elasticsearch darbībai
Ja vari iekāpt, tad skrien to aizvērt.
Savienojuma ar datubāzi aizsardzība
Tagad mēs to padarīsim tā, lai nebūtu iespējams izveidot savienojumu ar datu bāzi bez autentifikācijas.
Elasticsearch ir autentifikācijas modulis, kas ierobežo piekļuvi datu bāzei, taču tas ir pieejams tikai maksas X-Pack spraudņu komplektā (1 mēneša bezmaksas izmantošana).
Labā ziņa ir tā, ka 2019. gada rudenī Amazon atklāja savas izstrādes, kas pārklājas ar X-Pack. Autentifikācijas funkcija, pieslēdzoties datu bāzei, ir kļuvusi pieejama ar bezmaksas licenci versijai Elasticsearch 7.3.2, un jau tiek izstrādāts jauns Elasticsearch 7.4.0 laidiens.
Šo spraudni ir viegli instalēt. Dodieties uz servera konsoli un pievienojiet repozitoriju:
Pamatojoties uz RPM:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
Pamatojoties uz DEB:
wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
Mijiedarbības iestatīšana starp serveriem, izmantojot SSL
Instalējot spraudni, mainās porta konfigurācija, kas savieno ar datu bāzi. Tas nodrošina SSL šifrēšanu. Lai klasteru serveri turpinātu strādāt viens ar otru, jums ir jākonfigurē mijiedarbība starp tiem, izmantojot SSL.
Uzticību starp resursdatoriem var izveidot ar savu sertifikātu iestādi vai bez tās. Ar pirmo metodi viss ir skaidrs: jums vienkārši jāsazinās ar CA speciālistiem. Pāriesim tieši uz otro.
- Izveidojiet mainīgo ar pilnu domēna nosaukumu:
export DOMAIN_CN="example.com"
- Izveidojiet privāto atslēgu:
openssl genrsa -out root-ca-key.pem 4096
- Parakstiet saknes sertifikātu. Saglabājiet to drošībā: ja tas tiek pazaudēts vai apdraudēts, uzticēšanās starp visiem saimniekdatoriem būs jākonfigurē no jauna.
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
- Izveidojiet administratora atslēgu:
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
- Izveidojiet sertifikāta parakstīšanas pieprasījumu:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr
- Izveidojiet administratora sertifikātu:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- Izveidojiet sertifikātus Elasticsearch mezglam:
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
- Izveidojiet paraksta pieprasījumu:
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
- Sertifikāta parakstīšana:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- Novietojiet sertifikātu starp Elasticsearch mezgliem šādā mapē:
/etc/elasticsearch/
mums nepieciešami faili:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- Pielāgot /etc/elasticsearch/elasticsearch.yml – mainiet failu nosaukumus ar sertifikātiem uz mūsu ģenerētajiem:
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
Paroļu maiņa iekšējiem lietotājiem
- Izmantojot tālāk norādīto komandu, mēs konsolei izvadām paroles jaucējkodu:
sh ${OD_SEC}/tools/hash.sh -p [пароль]
- Mainiet faila jaucējkodu uz saņemto:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Ugunsmūra iestatīšana operētājsistēmā
- Ļaujiet ugunsmūrim startēt:
systemctl enable firewalld
- Palaidīsim to:
systemctl start firewalld
- Atļaut savienojumu ar Elasticsearch:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- Atkārtoti ielādējiet ugunsmūra noteikumus:
firewall-cmd --reload
- Šeit ir darba noteikumi:
firewall-cmd --list-all
Visas mūsu izmaiņas tiek piemērotas Elasticsearch
- Izveidojiet mainīgo ar pilnu ceļu uz mapi ar spraudni:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- Palaidīsim skriptu, kas atjauninās paroles un pārbaudīs iestatījumus:
${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
- Pārbaudiet, vai izmaiņas ir piemērotas:
curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure
Tas arī viss, šie ir minimālie iestatījumi, kas aizsargā Elasticsearch no nesankcionētiem savienojumiem.
Avots: www.habr.com