Dum la pasinta jaro, estis multaj likoj de datumbazoj
Ni tuj faru rezervon, ke en nia praktiko ni uzas Elasticsearch por stoki protokolojn kaj analizi protokolojn de informaj sekurecaj iloj, OS kaj programaro en nia IaaS-platformo, kiu konformas al la postuloj de 152-FZ, Cloud-152.
Ni kontrolas ĉu la datumbazo "altenas" al la Interreto
En la plej multaj konataj kazoj de likoj (
Unue, ni traktu eldonadon en Interreto. Kial ĉi tio okazas? La fakto estas, ke por pli fleksebla operacio de Elasticsearch
Se vi povas eniri, tiam kuru por fermi ĝin.
Protektante la konekton al la datumbazo
Nun ni faros ĝin tiel ke estas neeble konekti al la datumbazo sen aŭtentigo.
Elasticsearch havas aŭtentikigmodulon, kiu limigas aliron al la datumbazo, sed ĝi nur haveblas en la pagita aldonaĵaro X-Pack (1 monato senpaga uzo).
La bona novaĵo estas, ke en la aŭtuno de 2019, Amazon malfermis siajn evoluojn, kiuj interkovras kun X-Pack. La aŭtentikiga funkcio dum konekto al datumbazo fariĝis havebla sub senpaga permesilo por versio Elasticsearch 7.3.2, kaj nova eldono por Elasticsearch 7.4.0 jam estas en la laboroj.
Ĉi tiu kromaĵo estas facile instalebla. Iru al la servila konzolo kaj konektu la deponejon:
Bazita RPM:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
DEB Bazita:
wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
Agordi interago inter serviloj per SSL
Instalante la kromprogramon, la agordo de la haveno konektanta al la datumbazo ŝanĝiĝas. Ĝi ebligas SSL-ĉifradon. Por ke la grapolserviloj daŭre funkciu unu kun la alia, vi devas agordi interagadon inter ili uzante SSL.
Fido inter gastigantoj povas esti establita kun aŭ sen sia propra atestila aŭtoritato. Kun la unua metodo, ĉio estas klara: vi nur bezonas kontakti CA-specialistojn. Ni movu rekte al la dua.
- Kreu variablon kun la plena domajna nomo:
export DOMAIN_CN="example.com"
- Kreu privatan ŝlosilon:
openssl genrsa -out root-ca-key.pem 4096
- Subskribu la radikan atestilon. Konservu ĝin sekura: se ĝi estas perdita aŭ kompromitita, la konfido inter ĉiuj gastigantoj devos esti reagordita.
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
- Kreu administran ŝlosilon:
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
- Kreu peton por subskribi la atestilon:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr
- Kreu atestilon pri administranto:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- Kreu atestilojn por la nodo 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
- Kreu subskriban peton:
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
- Subskribante la atestilon:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- Metu la atestilon inter Elasticsearch-nodoj en la sekvan dosierujon:
/etc/elasticsearch/
ni bezonas la dosierojn:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- Agordi /etc/elasticsearch/elasticsearch.yml – ŝanĝu la nomon de la dosieroj kun atestiloj al tiuj kreitaj de ni:
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
Ŝanĝante pasvortojn por internaj uzantoj
- Uzante la suban komandon, ni eligas la pasvorton hash al la konzolo:
sh ${OD_SEC}/tools/hash.sh -p [пароль]
- Ŝanĝu la haŝon en la dosiero al la ricevita:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Establi fajroŝirmilon en la OS
- Permesu al la fajroŝirmilo komenci:
systemctl enable firewalld
- Ni lanĉu ĝin:
systemctl start firewalld
- Permesu konekton al Elasticsearch:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- Reŝargi la regulojn pri fajroŝirmilo:
firewall-cmd --reload
- Jen la laborreguloj:
firewall-cmd --list-all
Aplikante ĉiujn niajn ŝanĝojn al Elasticsearch
- Kreu variablon kun la plena vojo al la dosierujo per la kromaĵo:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- Ni rulu skripton, kiu ĝisdatigos pasvortojn kaj kontrolos agordojn:
${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
- Kontrolu ĉu la ŝanĝoj estas aplikitaj:
curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure
Jen ĉio, ĉi tiuj estas la minimumaj agordoj, kiuj protektas Elasticsearch de neaŭtorizitaj konektoj.
fonto: www.habr.com