Gjatë vitit të kaluar ka pasur shumë rrjedhje nga bazat e të dhënave (, dhe ). Në shumë raste, në bazë ishin ruajtur të dhëna personale. Këto rrjedhje mund të ishin shmangur nëse pas vendosjes së bazës, administratorët do të kishin bërë një kontroll të disa cilësimeve të thjeshta. Sot do të flasim për to.
Fillimisht, le tĂ« sqarojmĂ« se nĂ« praktikĂ«n tonĂ« pĂ«rdorim Elasticsearch pĂ«r ruajtjen e log-ve dhe pĂ«r analizimin e regjistrimeve tĂ« mjeteve tĂ« mbrojtjes sĂ« informacionit, OS dhe software nĂ« platformĂ«n tonĂ« IaaS, e cila i pĂ«rmbush kĂ«rkesat e ligjit 152-FZ, Cloud-152.Â

KontrollojmĂ« nĂ«se baza nuk âkanoâ nĂ« internet
NĂ« shumicĂ«n e rasteve tĂ« njohura tĂ« rrjedhjeve (, ) sulmuesi mori akses nĂ« tĂ« dhĂ«nat thjesht dhe pa ndonjĂ« vĂ«shtirĂ«si: baza u publikua nĂ« internet dhe mund tĂ« lidhej pa autentifikim. Â
SĂ« pari, le tĂ« merremi me publikimin nĂ« internet. Pse ndodh kjo? ĂĂ«shtja Ă«shtĂ« se pĂ«r njĂ« punĂ« mĂ« fleksibĂ«l me Elasticsearch duhet tĂ« krijoni njĂ« kluster me tre servera. PĂ«r t'u komunikua shkallĂ« me njĂ«ri-tjetrin, duhet tĂ« hapen portet. Si rezultat, administratorĂ«t nuk e kufizojnĂ« aksesin nĂ« bazĂ« dhe mund tĂ« lidhen me DB nga kudo. TĂ« kontrollosh nĂ«se ka akses nĂ« bazĂ« nga jashtĂ« Ă«shtĂ« e lehtĂ«. Thjesht shkruajmĂ« nĂ« shfletues http://[IP/Nomination Elasticsearch]:9200/_cat/nodes?v
Nëse mund të hyni, atëherë urgjent mbyllni.
Mbrojtja e lidhjes me DB
Tani do të bëjmë që të mos mund të lidhet me bazën pa autentifikim.
Elasticsearch ka një modul autentifikimi që kufizon aksesin në bazë, por ai është vetëm në paketën e paguar të plginave X-Pack (1 muaj përdorimi falas).
Lajmi i mirë është se në vjeshtën e vitit 2019 Amazon hapi përvojat e tij, të cilat përputhen me X-Pack. Funksioni i autentifikimit gjatë lidhjes me bazën u bë i disponueshëm nën një licencë të lirë për versionin Elasticsearch 7.3.2, dhe tashmë është në punë një botim i ri për Elasticsearch 7.4.0.
Ky plugin instalohet lehtësisht. Hyni në konsolën e serverit dhe lidheni me repo:
Me bazë RPM:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
Me bazë DEB:
wget -qO â https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -KonfigurojmĂ« bashkĂ«punimin midis serverĂ«ve pĂ«rmes SSL
Kur instaloni pluginin, konfigurimi i portit të lidhjes me bazën e të dhënave ndryshon. Atij i aktivizohet kriptimi SSL. Për t'u siguruar që serverat e klasterit të vazhdojnë të punojnë me njëri-tjetrin, është e nevojshme të konfigurohet ndërveprimi midis tyre përmes SSL.
Besimi midis hosts mund të vendoset duke përdorur një autoritet të besueshëm (CA) privat ose pa të. Me metoden e parë është e qartë: thjesht duhet të kontaktoni specialistë për CA. Tani do të kalojmë menjëherë në të dytën.
- Krijojmë një variabël me emrin e plote të domenit:
export DOMAIN_CN="example.com" - Krijojmë çelësin privat:
openssl genrsa -out root-ca-key.pem 4096 - Nënshkruajmë certifikatë bazë. Ruajeni si syin e kokës: në rast se humbet ose kompromentohet, besimi midis të gjitha hosteve do të duhet të ri-konfigurohet.
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 - Krijojmë çelësin e administratorit:
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 - Krijojmë një kërkesë për nënshkrimin e certifikatës:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr - Krijojmë certifikatën e administratorit:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem - Krijojmë sertifikata për nodën 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 - Krijojmë kërkesë për nënshkrim:
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 - Nënshkruajmë sertifikatin:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem - Shpërndajmë sertifikatin mes nodave Elasticsearch në folder:
/etc/elasticsearch/
na duhen skedarĂ«t:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem - KonfigurojmĂ« /etc/elasticsearch/elasticsearch.yml â ndryshojmĂ« emrat e skedarĂ«ve me sertifikatat, nĂ« ato tĂ« krijuara nga ne:
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=Kompania Moskva,ST=Moskva,C=RU opendistro_security.nodes_dn: Â Â â CN=node-01.example.com,O=Kompania Moskva,ST=Moskva,C=RU
Ndryshojmë fjalëkalimet e përdoruesve të brendshëm
- Me komandën më poshtë, ne tregojmë hash-in e fjalëkalimit në konsolë:
sh ${OD_SEC}/tools/hash.sh -p [fjalëkalimi] - Ndryshojmë hash-in në skedarin e marrë:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Konfigurojmë firewullin në sistemin operacional
- Lejojmë aktivizimin e firewullit:
systemctl enable firewalld - E nisim atë:
systemctl start firewalld - Lejojmë lidhjen me Elasticsearch:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent - Rikthejmë rregullat e firewullit:
firewall-cmd --reload - Listojmë rregullat në fuqi:
firewall-cmd --list-all
Zbatoni të gjitha ndryshimet tona në Elasticsearch
- Krijojmë një variabël me rrugën e plotë deri në dosjen me shtesa:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/" - Nisim skriptin që do të përditësojë fjalëkalimet dhe do të kontrollojë konfigurimet:
${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 - Kontrollojmë nëse ndryshimet u aplikuan:
curl -XGET https://[IP/Emri Elasticsearch]:9200/_cat/nodes?v -u admin:[fjalëkalimi] --insecure
Këto janë konfigurimet minimale që mbrojnë Elasticsearch nga lidhjet e paautorizuara.
Burimi: habr.com
