Gjatë vitit të fundit, ka pasur shumë rrjedhje nga bazat e të dhënave (, dhe ). Në shumë raste, në bazë ka qenë informacion personal. Këto rrjedhje do të kishin mundur të evitohej nëse, pas konfigurimit të bazës, administratorët do të ishin angazhuar të kontrollonin disa cilësime të thjeshta. Sot do të flasim për to.
SĂ« pari, le tĂ« themi se nĂ« praktikĂ«n tonĂ« pĂ«rdorim Elasticsearch pĂ«r ruajtjen e log-eve dhe analizĂ«n e regjistrave tĂ« mjeteve tĂ« mbrojtjes, Sistemit Operativ dhe Software-it nĂ« platformĂ«n tonĂ« IaaS, qĂ« i pĂ«rgjigjet kĂ«rkesave tĂ« ligjit 152-FZ, Cloud-152.Â

Kontrollojmë, "a del" baza në internet
NĂ« shumicĂ«n e rasteve tĂ« njohura tĂ« rrjedhjeve (, ) sulmuesi fitoi qasje nĂ« tĂ« dhĂ«na nĂ« mĂ«nyrĂ« tĂ« thjeshtĂ« dhe tĂ« lehtĂ«: baza ishte publikuar nĂ« internet dhe mund tĂ« lidhej pa autentifikim. Â
Së pari, le të kuptojmë pse ndodh publikimi në internet. Arsyeja është se për një punë më fleksibile me Elasticsearch krijojmë një kluster nga tre servera. Në mënyrë që bazat të komunikojnë me njëra-tjetrën, duhet të hapen porta. Si rezultat, administratorët nuk e kufizojnë aksesin në bazë, dhe mund të lidhen me BDb nga çdo vend. Të kontrollosh nëse ka qasje nga jashtë është e lehtë. Thjesht shënoni në shfletuesin http://[IP/Emri Elasticsearch]:9200/_cat/nodes?v
Nëse arrini të qaseni, atëherë nxitojini ta mbyllni.
Mbrojmë lidhjen me BDb
Tani do ta bëjmë që lidhja në bazë të mos jetë e mundur pa autentifikim.
Elasticsearch ka një modul autentifikimi që kufizon qasje në bazë, por ai është vetëm në paketën e paguar të plugins X-Pack (1 muaj përdorim falas).
Lajmet e mira janë se në vjeshtën e vitit 2019, Amazon publikoi zhvillimet e saj, të cilat përputhen me X-Pack. Funksioni i autentifikimit për lidhjen në bazë u bë i disponueshëm me licencë të lirë për versionin Elasticsearch 7.3.2, dhe tashmë është në punë një version i ri për Elasticsearch 7.4.0.
Ky plugin instalohet lehtësisht. Hyjmë në konsolën e serverit dhe lidhim depo:
Për Bazën RPM:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
Për Bazën DEB:
wget -qO â https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -KonfigurojmĂ« ndĂ«rveprimin mes serverĂ«ve pĂ«rmes SSL
Kur gjatë instalimit të pluginit, ndryshohet konfigurimi i portit të lidhjes me bazën. Ky port aktivizon enkriptimin SSL. Për të siguruar vazhdimësinë e komunikimit ndërmjet serverëve të grupit, është e nevojshme të konfigurohet interaksioni i tyre përmes SSL.
Mund të vendosim besimin midis hosteve me një qendër të vetme certifikimi ose pa të. Me mënyrën e parë është e thjeshtë: thjesht duhet të kontaktojmë specialistët e CA. Tani le të kalojmë te e dyta.
- Krijojmë një variabël me emrin e plotë të domain-it:
export DOMAIN_CN="example.com" - Krijojmë çelësin privat:
openssl genrsa -out root-ca-key.pem 4096 - Nënshkruajmë certifikatën rrënjë. Ruajeni si sytë e përhumbur: nëse humbet ose kompromentohet, do të duhet të rivendosni besimin midis të gjitha hosteve.
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ë kërkesën 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ë certifikatat 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ën 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ë certifikatën:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem - Shpërndajmë certifikatën midis nodave Elasticsearch në dosje:
/etc/elasticsearch/
Na nevojiten 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 certifikatat qĂ« kemi gjeneruar:
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
Ndërrimi i fjalëkalimeve të përdoruesve të brendshëm
- Me komandën më poshtë shfaqim hash-in e fjalëkalimit në konsolë:
sh ${OD_SEC}\/tools\/hash.sh -p [fjalëkalimi] - Ndërroni hash-in në skedarin në rezultat:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Konfigurimi i firewall-it në OS
- Lejoni aktivizimin e firewall-it:
systemctl enable firewalld - Aktivizoni atë:
systemctl start firewalld - Lejoni lidhjen me Elasticsearch:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200\/TCP --permanent - Rikthejni rregullat e firewall-it:
firewall-cmd --reload - Dukemi rregullat që funksionojnë:
firewall-cmd --list-all
Aplikojmë të gjitha prej ndryshimeve 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/" - Nisni skriptin që do të përditësojë fjalëkalimet dhe do të verifikojë cilësimet:
${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 janë aplikuar ndryshimet:
curl -XGET https://[IP/Emri Elasticsearch]:9200/_cat/nodes?v -u admin:[fjalëkalimi] --insecure
Këto janë cilësimet minimale që mbyllin Elasticsearch nga lidhjet e paautorizuara.
Burimi: habr.com
