Sut i ffurfweddu Elasticsearch i osgoi gollyngiadau

Dros y flwyddyn ddiwethaf, bu llawer o ollyngiadau o gronfeydd data Elastig (yma, yma и yma). Mewn llawer o achosion, roedd data personol yn cael ei storio yn y gronfa ddata. Gellid bod wedi osgoi'r gollyngiadau hyn pe bai'r gweinyddwyr, ar ôl defnyddio'r gronfa ddata, wedi trafferthu gwirio rhai gosodiadau syml. Heddiw byddwn yn siarad amdanynt.

Gadewch i ni wneud archeb ar unwaith ein bod yn ein harfer yn defnyddio Elasticsearch i storio logiau a dadansoddi logiau o offer diogelwch gwybodaeth, OS a meddalwedd yn ein platfform IaaS, sy'n cydymffurfio â gofynion 152-FZ, Cloud-152. 

Sut i ffurfweddu Elasticsearch i osgoi gollyngiadau

Rydym yn gwirio a yw'r gronfa ddata yn “glynu allan” i'r Rhyngrwyd

Yn yr achosion mwyaf hysbys o ollyngiadau (yma, yma) cafodd yr ymosodwr fynediad i'r data yn syml ac yn ddiymhongar: cyhoeddwyd y gronfa ddata ar y Rhyngrwyd, ac roedd yn bosibl cysylltu ag ef heb ddilysu.  

Yn gyntaf, gadewch i ni ddelio â chyhoeddi ar y Rhyngrwyd. Pam mae hyn yn digwydd? Y ffaith yw bod Elasticsearch yn gweithredu'n fwy hyblyg argymhellir creu clwstwr o dri gweinydd. Er mwyn i'r cronfeydd data gyfathrebu â'i gilydd, mae angen ichi agor porthladdoedd. O ganlyniad, nid yw gweinyddwyr yn cyfyngu mynediad i'r gronfa ddata mewn unrhyw ffordd, a gallwch gysylltu â'r gronfa ddata o unrhyw le. Mae'n hawdd gwirio a yw'r gronfa ddata yn hygyrch o'r tu allan. Rhowch yn y porwr http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v

Os gallwch chi fynd i mewn, yna rhedwch i'w gau.

Diogelu'r cysylltiad â'r gronfa ddata

Nawr byddwn yn ei wneud fel ei bod yn amhosibl cysylltu â'r gronfa ddata heb ddilysu.

Mae gan Elasticsearch fodiwl dilysu sy'n cyfyngu ar fynediad i'r gronfa ddata, ond dim ond yn y set ategyn X-Pack taledig y mae ar gael (defnydd am ddim am 1 mis).

Y newyddion da yw bod Amazon wedi agor ei ddatblygiadau yng nghwymp 2019, sy'n gorgyffwrdd ag X-Pack. Mae'r swyddogaeth ddilysu wrth gysylltu â chronfa ddata wedi dod ar gael o dan drwydded am ddim ar gyfer fersiwn Elasticsearch 7.3.2, ac mae datganiad newydd ar gyfer Elasticsearch 7.4.0 eisoes yn y gwaith.

Mae'r ategyn hwn yn hawdd i'w osod. Ewch i'r consol gweinydd a chysylltwch yr ystorfa:

Seiliedig ar RPM:

curl https://d3g5vo6xdbdb9a.cloudfront.net/yum/opendistroforelasticsearch-artifacts.repo -o /etc/yum.repos.d/opendistroforelasticsearch-artifacts.repo

yum update

yum install opendistro-security


Seiliedig ar DEB:

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

Sefydlu rhyngweithio rhwng gweinyddwyr trwy SSL

Wrth osod yr ategyn, mae cyfluniad y porthladd sy'n cysylltu â'r gronfa ddata yn newid. Mae'n galluogi amgryptio SSL. Er mwyn i'r gweinyddwyr clwstwr barhau i weithio gyda'i gilydd, mae angen i chi ffurfweddu'r rhyngweithio rhyngddynt gan ddefnyddio SSL.

Gellir sefydlu ymddiriedaeth rhwng gwesteiwyr gyda'i awdurdod tystysgrif ei hun neu hebddo. Gyda'r dull cyntaf, mae popeth yn glir: does ond angen i chi gysylltu ag arbenigwyr CA. Gadewch i ni symud yn syth i'r ail.

  1. Creu newidyn gyda'r enw parth llawn:

    export DOMAIN_CN="example.com"

  2. Creu allwedd breifat:

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

  3. Llofnodwch y dystysgrif gwraidd. Cadwch ef yn ddiogel: os caiff ei golli neu ei beryglu, bydd angen ad-drefnu'r ymddiriedaeth rhwng yr holl westeion.

    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. Creu allwedd gweinyddwr:

    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. Creu cais i lofnodi'r dystysgrif:

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

  6. Creu tystysgrif gweinyddwr:

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

  7. Creu tystysgrifau ar gyfer y 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

  8. Creu cais llofnod:

    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. Arwyddo'r dystysgrif:

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

  10. Rhowch y dystysgrif rhwng nodau Elasticsearch yn y ffolder canlynol:

    /etc/elasticsearch/


    mae angen y ffeiliau arnom:

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

  11. Addasu /etc/elasticsearch/elasticsearch.yml - newid enw'r ffeiliau gyda thystysgrifau i'r rhai a gynhyrchir gennym 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

Newid cyfrineiriau ar gyfer defnyddwyr mewnol

  1. Gan ddefnyddio'r gorchymyn isod, rydym yn allbynnu'r hash cyfrinair i'r consol:

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

  2. Newidiwch yr hash yn y ffeil i'r un a dderbyniwyd:

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

Sefydlu wal dân yn yr OS

  1. Gadewch i'r wal dân gychwyn:

    systemctl enable firewalld

  2. Gadewch i ni ei lansio:

    systemctl start firewalld

  3. Caniatáu cysylltiad ag Elasticsearch:

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

  4. Ail-lwythwch y rheolau wal dân:

    firewall-cmd --reload

  5. Dyma'r rheolau gweithio:

    firewall-cmd --list-all

Cymhwyso ein holl newidiadau i Elasticsearch

  1. Creu newidyn gyda'r llwybr llawn i'r ffolder gyda'r ategyn:

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

  2. Gadewch i ni redeg sgript a fydd yn diweddaru cyfrineiriau a gwirio gosodiadau:

    ${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. Gwiriwch a yw'r newidiadau wedi'u cymhwyso:

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

Dyna i gyd, dyma'r gosodiadau lleiaf sy'n amddiffyn Elasticsearch rhag cysylltiadau anawdurdodedig.

Ffynhonnell: hab.com

Ychwanegu sylw