Чӣ тавр танзим кардани Elasticsearch барои пешгирӣ кардани ихроҷ

Дар давоми як соли охир, аз базаи маълумотҳо ихроҷи зиёд ба қайд гирифта шудааст Ҷустуҷӯи Elastics (инак, инак и инак). Дар бисёр мавридҳо маълумоти шахсӣ дар базаи маълумот нигоҳ дошта мешуд. Ин ихроҷҳоро метавон пешгирӣ кард, агар пас аз ҷойгиркунии пойгоҳи додаҳо маъмурон барои тафтиши чанд танзимоти оддӣ ташвиш медоданд. Имрӯз мо дар бораи онҳо сӯҳбат хоҳем кард.

Биёед фавран қайд кунем, ки дар таҷрибаи худ мо Elasticsearch-ро барои нигоҳ доштани гузоришҳо ва таҳлили гузоришҳои абзорҳои амнияти иттилоотӣ, ОС ва нармафзор дар платформаи IaaS, ки ба талаботи 152-FZ, Cloud-152 мувофиқ аст, истифода мебарем. 

Чӣ тавр танзим кардани Elasticsearch барои пешгирӣ кардани ихроҷ

Мо тафтиш мекунем, ки оё пойгоҳи додаҳо ба Интернет "часпида" ё не

Дар аксари ҳолатҳои маълуми ихроҷ (инак, инак) ҳамлакунанда ба маълумот дастрасӣ пайдо кард: базаи маълумот дар Интернет нашр шуд ва ба он бе аутентификатсия пайваст шудан мумкин буд.  

Аввалан, биёед бо нашр дар Интернет сарукор кунем. Чаро ин рӯй медиҳад? Гап дар он аст, ки барои кори чандирии Elasticsearch тавсия дода мешавад як кластери се сервер эҷод кунед. Барои он ки пойгоҳи додаҳо бо ҳамдигар муошират кунанд, шумо бояд портҳоро кушоед. Дар натиҷа, маъмурон дастрасӣ ба пойгоҳи додаҳоро ба ҳеҷ ваҷҳ маҳдуд намекунанд ва шумо метавонед аз ҳама ҷо ба базаи маълумот пайваст шавед. Санҷиши он, ки ба пойгоҳи додаҳо аз берун дастрас аст, осон аст. Танҳо ба браузер ворид шавед http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v

Агар шумо метавонед ворид шавед, пас давед, то онро пӯшед.

Муҳофизати пайвастшавӣ ба пойгоҳи додаҳо

Ҳоло мо онро тавре месозем, ки бе аутентификатсия пайваст шудан ба пойгоҳи додаҳо ғайриимкон аст.

Elasticsearch дорои модули аутентификатсия мебошад, ки дастрасӣ ба пойгоҳи додаҳоро маҳдуд мекунад, аммо он танҳо дар маҷмӯи плагинҳои пардохтшудаи X-Pack дастрас аст (истифодаи 1 моҳ ройгон).

Хабари хуш ин аст, ки дар тирамоҳи соли 2019 Amazon таҳаввулоти худро кушод, ки бо X-Pack мувофиқат мекунанд. Функсияи аутентификатсия ҳангоми пайвастшавӣ ба пойгоҳи додаҳо таҳти литсензияи ройгон барои версияи Elasticsearch 7.3.2 дастрас шуд ва версияи нави Elasticsearch 7.4.0 аллакай дар кор аст.

Ин плагинро насб кардан осон аст. Ба консоли сервер равед ва анборро пайваст кунед:

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:

wget -qO ‐ https://d3g5vo6xdbdb9a.cloudfront.net/GPG-KEY-opendistroforelasticsearch | sudo apt-key add -

Танзими ҳамкорӣ байни серверҳо тавассути SSL

Ҳангоми насб кардани плагин, конфигуратсияи порти пайвастшавӣ ба пойгоҳи додаҳо тағир меёбад. Он рамзгузории SSL-ро имкон медиҳад. Барои он ки серверҳои кластер бо ҳамдигар кор кунанд, шумо бояд ҳамкории байни онҳоро бо истифода аз SSL танзим кунед.

Эътимод байни ҳостҳо метавонад бо ё бидуни мақоми сертификати худ муқаррар карда шавад. Бо усули аввал, ҳама чиз равшан аст: шумо бояд танҳо бо мутахассисони CA тамос гиред. Биёед рост ба дуюм гузарем.

  1. Бо номи пурраи домен тағирёбанда эҷод кунед:

    export DOMAIN_CN="example.com"

  2. Калиди хусусӣ эҷод кунед:

    openssl genrsa -out root-ca-key.pem 4096

  3. Шаҳодатномаи решаро имзо кунед. Онро бехатар нигоҳ доред: агар он гум шавад ё осеб дида бошад, эътимод байни ҳама ҳостҳо бояд аз нав танзим карда шавад.

    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

  4. Калиди администратор эҷод кунед:

    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

  5. Барои имзои сертификат дархост эҷод кунед:

    openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " 
    -key admin-key.pem -out admin.csr

  6. Шаҳодатномаи администратор эҷод кунед:

    openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem 
    -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem

  7. Барои гиреҳи 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

  8. Эҷоди дархости имзо:

    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

  9. Имзои сертификат:

    openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial 
    -sha256 -out node.pem

  10. Шаҳодатномаро дар байни гиреҳҳои Elasticsearch дар ҷузвдони зерин ҷойгир кунед:

    /etc/elasticsearch/


    ба мо файлҳо лозим аст:

            node-01-key.pem
    	node-01.pem
    	admin-key.pem
    	admin.pem
    	root-ca.pem

  11. Танзимот /etc/elasticsearch/elasticsearch.yml - номи файлҳоро бо сертификатҳо ба файлҳои аз ҷониби мо тавлидшуда иваз кунед:

    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

Тағир додани паролҳо барои корбарони дохилӣ

  1. Бо истифода аз фармони зер, мо хэши паролро ба консол мебарорем:

    sh ${OD_SEC}/tools/hash.sh -p [пароль]

  2. Хеш-ро дар файл ба файли гирифташуда иваз кунед:

    /usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml

Насб кардани брандмауэр дар ОС

  1. Ба брандмауэр иҷозат диҳед, ки оғоз шавад:

    systemctl enable firewalld

  2. Биёед онро оғоз кунем:

    systemctl start firewalld

  3. Иҷозат диҳед пайвастшавӣ ба Elasticsearch:

    firewall-cmd --set-default-zone work
    firewall-cmd --zone=work --add-port=9200/TCP --permanent

  4. Қоидаҳои брандмауэрро аз нав бор кунед:

    firewall-cmd --reload

  5. Инҳоянд қоидаҳои кор:

    firewall-cmd --list-all

Татбиқи ҳамаи тағиротҳои мо ба Elasticsearch

  1. Бо роҳи пурраи ҷузвдон бо плагин тағирёбанда эҷод кунед:

    export  OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"

  2. Биёед скриптро иҷро кунем, ки паролҳоро навсозӣ кунад ва танзимотро тафтиш кунад:

    ${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

  3. Санҷед, ки оё тағиротҳо татбиқ шудаанд:

    curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure

Ин ҳама, инҳо танзимоти ҳадди ақал мебошанд, ки Elasticsearch-ро аз пайвастҳои беиҷозат муҳофизат мекунанд.

Манбаъ: will.com

Илова Эзоҳ