O'tgan yil davomida ma'lumotlar bazalaridan ko'plab oqishlar bo'lgan
Darhol ta'kidlaymizki, biz o'z amaliyotimizda 152-FZ, Cloud-152 talablariga javob beradigan IaaS platformamizdagi axborot xavfsizligi vositalari, OS va dasturiy ta'minot jurnallarini saqlash va tahlil qilish uchun Elasticsearch-dan foydalanamiz.
Biz ma'lumotlar bazasi Internetga "yopishib qolgan" yoki yo'qligini tekshiramiz
Oqishning ko'p hollarda (
Birinchidan, Internetda nashr qilish bilan shug'ullanamiz. Nima uchun bu sodir bo'ladi? Gap shundaki, Elasticsearch-ning yanada moslashuvchan ishlashi uchun
Agar kirishingiz mumkin bo'lsa, uni yopish uchun yuguring.
Ma'lumotlar bazasiga ulanishni himoya qilish
Endi biz buni shunday qilamizki, autentifikatsiyasiz ma'lumotlar bazasiga ulanish imkonsiz bo'ladi.
Elasticsearch ma'lumotlar bazasiga kirishni cheklovchi autentifikatsiya moduliga ega, lekin u faqat pullik X-Pack plaginlari to'plamida mavjud (1 oylik bepul foydalanish).
Yaxshi xabar shundaki, 2019 yil kuzida Amazon X-Pack bilan bir-biriga mos keladigan ishlanmalarini ochdi. Ma'lumotlar bazasiga ulanishda autentifikatsiya funksiyasi Elasticsearch 7.3.2 versiyasi uchun bepul litsenziya ostida mavjud bo'ldi va Elasticsearch 7.4.0 uchun yangi reliz allaqachon ishlamoqda.
Ushbu plaginni o'rnatish oson. Server konsoliga o'ting va omborni ulang:
RPM asosida:
curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo
yum update
yum install opendistro-security
DEB asosida:
wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -
SSL orqali serverlar o'rtasida o'zaro aloqani o'rnatish
Plaginni o'rnatishda ma'lumotlar bazasiga ulanadigan portning konfiguratsiyasi o'zgaradi. Bu SSL shifrlash imkonini beradi. Klaster serverlari bir-biri bilan ishlashda davom etishi uchun siz SSL yordamida ular o'rtasidagi o'zaro aloqani sozlashingiz kerak.
Xostlar o'rtasidagi ishonch o'z sertifikat vakolatiga ega yoki bo'lmasdan o'rnatilishi mumkin. Birinchi usul bilan hamma narsa aniq: faqat CA mutaxassislariga murojaat qilishingiz kerak. Keling, to'g'ridan-to'g'ri ikkinchisiga o'tamiz.
- To'liq domen nomi bilan o'zgaruvchi yarating:
export DOMAIN_CN="example.com"
- Shaxsiy kalit yarating:
openssl genrsa -out root-ca-key.pem 4096
- Ildiz sertifikatiga imzo cheking. Uni xavfsiz saqlang: agar u yo'qolsa yoki buzilgan bo'lsa, barcha xostlar o'rtasidagi ishonchni qayta sozlash kerak bo'ladi.
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
- Administrator kalitini yarating:
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
- Sertifikatni imzolash uchun so'rov yarating:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr
- Administrator sertifikatini yarating:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- Elasticsearch tuguniga sertifikatlar yarating:
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
- Imzo so'rovini yarating:
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
- Sertifikatni imzolash:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- Sertifikatni Elasticsearch tugunlari orasiga quyidagi papkaga joylashtiring:
/etc/elasticsearch/
bizga fayllar kerak:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- Konfiguratsiya /etc/elasticsearch/elasticsearch.yml - sertifikatlari bo'lgan fayllar nomini biz yaratganlarga o'zgartiring:
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
Ichki foydalanuvchilar uchun parollarni o'zgartirish
- Quyidagi buyruqdan foydalanib, konsolga parol xeshini chiqaramiz:
sh ${OD_SEC}/tools/hash.sh -p [пароль]
- Fayldagi xeshni qabul qilinganga o'zgartiring:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
OTda xavfsizlik devorini o'rnatish
- Xavfsizlik devorini ishga tushirishga ruxsat bering:
systemctl enable firewalld
- Keling, uni ishga tushiramiz:
systemctl start firewalld
- Elasticsearch-ga ulanishga ruxsat bering:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- Xavfsizlik devori qoidalarini qayta yuklang:
firewall-cmd --reload
- Mana ish qoidalari:
firewall-cmd --list-all
Barcha o'zgarishlarimizni Elasticsearch-ga qo'llash
- Plagin bilan jildga to'liq yo'l bilan o'zgaruvchi yarating:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- Keling, parollarni yangilaydigan va sozlamalarni tekshiradigan skriptni ishga tushiramiz:
${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
- O'zgarishlar qo'llanganligini tekshiring:
curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure
Hammasi shu, bular Elasticsearch-ni ruxsatsiz ulanishlardan himoya qiluvchi minimal sozlamalar.
Manba: www.habr.com