Sepanjang tahun lalu, terdapat banyak kebocoran daripada pangkalan data
Mari segera membuat tempahan bahawa dalam amalan kami, kami menggunakan Elasticsearch untuk menyimpan log dan menganalisis log alat keselamatan maklumat, OS dan perisian dalam platform IaaS kami, yang mematuhi keperluan 152-FZ, Cloud-152.
Kami menyemak sama ada pangkalan data "melekat" ke Internet
Dalam kebanyakan kes kebocoran yang diketahui (
Pertama, mari kita berurusan dengan penerbitan di Internet. Mengapa ini berlaku? Hakikatnya ialah untuk operasi Elasticsearch yang lebih fleksibel
Jika anda boleh masuk, kemudian lari untuk menutupnya.
Melindungi sambungan ke pangkalan data
Sekarang kami akan membuatnya supaya mustahil untuk menyambung ke pangkalan data tanpa pengesahan.
Elasticsearch mempunyai modul pengesahan yang mengehadkan akses kepada pangkalan data, tetapi ia hanya tersedia dalam set pemalam X-Pack berbayar (penggunaan percuma 1 bulan).
Berita baiknya ialah pada musim gugur 2019, Amazon membuka perkembangannya, yang bertindih dengan X-Pack. Fungsi pengesahan apabila menyambung ke pangkalan data telah tersedia di bawah lesen percuma untuk versi Elasticsearch 7.3.2, dan keluaran baharu untuk Elasticsearch 7.4.0 sudah pun dalam usaha.
Pemalam ini mudah dipasang. Pergi ke konsol pelayan dan sambungkan repositori:
Berdasarkan RPM:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
Berdasarkan DEB:
wget -qO β https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
Menyediakan interaksi antara pelayan melalui SSL
Apabila memasang pemalam, konfigurasi port yang menyambung ke pangkalan data berubah. Ia membolehkan penyulitan SSL. Untuk membolehkan pelayan kluster terus berfungsi antara satu sama lain, anda perlu mengkonfigurasi interaksi antara mereka menggunakan SSL.
Kepercayaan antara hos boleh diwujudkan dengan atau tanpa kuasa sijilnya sendiri. Dengan kaedah pertama, semuanya jelas: anda hanya perlu menghubungi pakar CA. Mari kita beralih terus ke yang kedua.
- Buat pembolehubah dengan nama domain penuh:
export DOMAIN_CN="example.com"
- Buat kunci peribadi:
openssl genrsa -out root-ca-key.pem 4096
- Tandatangani sijil akar. Pastikan ia selamat: jika ia hilang atau terjejas, kepercayaan antara semua hos perlu dikonfigurasikan semula.
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
- Buat kunci pentadbir:
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
- Buat permintaan untuk menandatangani sijil:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr
- Buat sijil pentadbir:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- Buat sijil untuk nod 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
- Buat permintaan tandatangan:
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
- Menandatangani sijil:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- Letakkan sijil antara nod Elasticsearch dalam folder berikut:
/etc/elasticsearch/
kami memerlukan fail:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- Mengkonfigurasi /etc/elasticsearch/elasticsearch.yml β tukar nama fail dengan sijil kepada yang dijana oleh kami:
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
Menukar kata laluan untuk pengguna dalaman
- Menggunakan arahan di bawah, kami mengeluarkan cincang kata laluan ke konsol:
sh ${OD_SEC}/tools/hash.sh -p [ΠΏΠ°ΡΠΎΠ»Ρ]
- Tukar cincang dalam fail kepada yang diterima:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
Menyediakan tembok api dalam OS
- Benarkan tembok api bermula:
systemctl enable firewalld
- Mari kita lancarkan:
systemctl start firewalld
- Benarkan sambungan ke Elasticsearch:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- Muat semula peraturan tembok api:
firewall-cmd --reload
- Berikut adalah peraturan kerja:
firewall-cmd --list-all
Menggunakan semua perubahan kami pada Elasticsearch
- Buat pembolehubah dengan laluan penuh ke folder dengan pemalam:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- Mari jalankan skrip yang akan mengemas kini kata laluan dan menyemak tetapan:
${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
- Semak sama ada perubahan telah digunakan:
curl -XGET https://[IP/ΠΠΌΡ Elasticsearch]:9200/_cat/nodes?v -u admin:[ΠΏΠ°ΡΠΎΠ»Ρ] --insecure
Itu sahaja, ini adalah tetapan minimum yang melindungi Elasticsearch daripada sambungan yang tidak dibenarkan.
Sumber: www.habr.com