Sa nakalipas na taon, maraming tumagas mula sa mga database
Agad tayong magpareserba na sa aming pagsasanay ay gumagamit kami ng Elasticsearch upang mag-imbak ng mga log at magsuri ng mga log ng mga tool sa seguridad ng impormasyon, OS at software sa aming platform ng IaaS, na sumusunod sa mga kinakailangan ng 152-FZ, Cloud-152.
Sinusuri namin kung ang database ay "nananatili" sa Internet
Sa karamihan ng mga kilalang kaso ng pagtagas (
Una, harapin natin ang paglalathala sa Internet. Bakit ito nangyayari? Ang katotohanan ay para sa mas nababaluktot na operasyon ng Elasticsearch
Kung maaari kang makapasok, pagkatapos ay tumakbo upang isara ito.
Pagprotekta sa koneksyon sa database
Ngayon ay gagawin namin ito upang imposibleng kumonekta sa database nang walang pagpapatunay.
Ang Elasticsearch ay may isang authentication module na naglilimita sa pag-access sa database, ngunit ito ay magagamit lamang sa bayad na X-Pack plugin set (1 buwang libreng paggamit).
Ang mabuting balita ay sa taglagas ng 2019, binuksan ng Amazon ang mga pag-unlad nito, na nag-overlap sa X-Pack. Ang pagpapatunay na function kapag kumokonekta sa isang database ay naging available sa ilalim ng isang libreng lisensya para sa bersyon Elasticsearch 7.3.2, at isang bagong release para sa Elasticsearch 7.4.0 ay nasa gawa na.
Ang plugin na ito ay madaling i-install. Pumunta sa server console at ikonekta ang repositoryo:
Batay sa RPM:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
Batay sa DEB:
wget -qO β https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
Pagse-set up ng pakikipag-ugnayan sa pagitan ng mga server sa pamamagitan ng SSL
Kapag nag-i-install ng plugin, nagbabago ang configuration ng port na kumukonekta sa database. Pinapagana nito ang pag-encrypt ng SSL. Upang patuloy na gumana ang mga cluster server sa isa't isa, kailangan mong i-configure ang pakikipag-ugnayan sa pagitan ng mga ito gamit ang SSL.
Ang tiwala sa pagitan ng mga host ay maaaring maitatag nang mayroon o walang sariling awtoridad sa sertipiko. Sa unang paraan, malinaw ang lahat: kailangan mo lang makipag-ugnayan sa mga espesyalista sa CA. Dumiretso tayo sa pangalawa.
- Gumawa ng variable na may buong domain name:
export DOMAIN_CN="example.com"
- Gumawa ng pribadong key:
openssl genrsa -out root-ca-key.pem 4096
- Lagdaan ang root certificate. Panatilihin itong ligtas: kung ito ay nawala o nakompromiso, ang tiwala sa pagitan ng lahat ng mga host ay kailangang muling i-configure.
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
- Lumikha ng administrator key:
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
- Gumawa ng kahilingan para lagdaan ang sertipiko:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr
- Lumikha ng sertipiko ng administrator:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- Lumikha ng mga sertipiko para sa Elasticsearch node:
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
- Lumikha ng kahilingan sa lagda:
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
- Pagpirma ng sertipiko:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- Ilagay ang certificate sa pagitan ng mga Elasticsearch node sa sumusunod na folder:
/etc/elasticsearch/
kailangan namin ang mga file:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- Kino-configure /etc/elasticsearch/elasticsearch.yml β baguhin ang pangalan ng mga file na may mga sertipiko sa mga nabuo sa amin:
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
Pagbabago ng mga password para sa mga panloob na user
- Gamit ang command sa ibaba, inilalabas namin ang hash ng password sa console:
sh ${OD_SEC}/tools/hash.sh -p [ΠΏΠ°ΡΠΎΠ»Ρ]
- Baguhin ang hash sa file sa natanggap:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Pagse-set up ng firewall sa OS
- Payagan ang firewall na magsimula:
systemctl enable firewalld
- Ilunsad natin ito:
systemctl start firewalld
- Payagan ang koneksyon sa Elasticsearch:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- I-reload ang mga panuntunan sa firewall:
firewall-cmd --reload
- Narito ang mga patakaran sa pagtatrabaho:
firewall-cmd --list-all
Inilapat ang lahat ng aming mga pagbabago sa Elasticsearch
- Lumikha ng isang variable na may buong path sa folder na may plugin:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- Magpatakbo tayo ng script na mag-a-update ng mga password at suriin ang mga setting:
${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
- Suriin kung nailapat ang mga pagbabago:
curl -XGET https://[IP/ΠΠΌΡ Elasticsearch]:9200/_cat/nodes?v -u admin:[ΠΏΠ°ΡΠΎΠ»Ρ] --insecure
Iyon lang, ito ang mga minimum na setting na nagpoprotekta sa Elasticsearch mula sa mga hindi awtorisadong koneksyon.
Pinagmulan: www.habr.com