లీక్‌లను నివారించడానికి సాగే శోధనను ఎలా కాన్ఫిగర్ చేయాలి

గత సంవత్సరంలో, డేటాబేస్ నుండి చాలా లీక్‌లు జరిగాయి Elasticsearch (ఇక్కడ, ఇక్కడ и ఇక్కడ) అనేక సందర్భాల్లో, వ్యక్తిగత డేటా డేటాబేస్లో నిల్వ చేయబడుతుంది. డేటాబేస్‌ని అమలు చేసిన తర్వాత, నిర్వాహకులు కొన్ని సాధారణ సెట్టింగ్‌లను తనిఖీ చేయడానికి ఇబ్బంది పడినట్లయితే ఈ లీక్‌లను నివారించవచ్చు. ఈ రోజు మనం వాటి గురించి మాట్లాడుతాము.

మా ఆచరణలో 152-FZ, Cloud-152 అవసరాలకు అనుగుణంగా ఉండే మా IaaS ప్లాట్‌ఫారమ్‌లో లాగ్‌లను నిల్వ చేయడానికి మరియు సమాచార భద్రతా సాధనాలు, OS మరియు సాఫ్ట్‌వేర్ లాగ్‌లను విశ్లేషించడానికి మేము ఎలాస్టిక్‌సెర్చ్‌ని ఉపయోగిస్తాము అని వెంటనే రిజర్వేషన్ చేద్దాం. 

లీక్‌లను నివారించడానికి సాగే శోధనను ఎలా కాన్ఫిగర్ చేయాలి

డేటాబేస్ ఇంటర్నెట్‌కు "అవుట్" అని మేము తనిఖీ చేస్తాము

చాలా తెలిసిన సందర్భాల్లో లీక్‌లు (ఇక్కడ, ఇక్కడ) దాడి చేసే వ్యక్తి డేటాకు కేవలం మరియు అనుకవగల ప్రాప్యతను పొందాడు: డేటాబేస్ ఇంటర్నెట్‌లో ప్రచురించబడింది మరియు ప్రామాణీకరణ లేకుండా దానికి కనెక్ట్ చేయడం సాధ్యపడుతుంది.  

మొదట, ఇంటర్నెట్‌లో ప్రచురించడాన్ని పరిశీలిద్దాం. ఇది ఎందుకు జరుగుతుంది? వాస్తవం ఏమిటంటే సాగే శోధన యొక్క మరింత సౌకర్యవంతమైన ఆపరేషన్ కోసం సిఫార్సు మూడు సర్వర్ల క్లస్టర్‌ను సృష్టించండి. డేటాబేస్‌లు ఒకదానితో ఒకటి కమ్యూనికేట్ చేయడానికి, మీరు పోర్ట్‌లను తెరవాలి. ఫలితంగా, నిర్వాహకులు డేటాబేస్‌కు ఏ విధంగానూ యాక్సెస్‌ను పరిమితం చేయరు మరియు మీరు ఎక్కడి నుండైనా డేటాబేస్‌కు కనెక్ట్ చేయవచ్చు. డేటాబేస్ బయటి నుండి అందుబాటులో ఉందో లేదో తనిఖీ చేయడం సులభం. బ్రౌజర్‌లో నమోదు చేయండి http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v

మీరు ప్రవేశించగలిగితే, దాన్ని మూసివేయడానికి పరుగెత్తండి.

డేటాబేస్కు కనెక్షన్ను రక్షించడం

ధృవీకరణ లేకుండా డేటాబేస్కు కనెక్ట్ చేయడం అసాధ్యం కాబట్టి ఇప్పుడు మేము దీన్ని చేస్తాము.

ఎలాస్టిక్‌సెర్చ్ డేటాబేస్‌కు ప్రాప్యతను పరిమితం చేసే ప్రామాణీకరణ మాడ్యూల్‌ను కలిగి ఉంది, అయితే ఇది చెల్లింపు X-ప్యాక్ ప్లగ్ఇన్ సెట్‌లో మాత్రమే అందుబాటులో ఉంటుంది (1 నెల ఉచిత ఉపయోగం).

శుభవార్త ఏమిటంటే, 2019 చివరలో, అమెజాన్ దాని అభివృద్ధిని ప్రారంభించింది, ఇది X-ప్యాక్‌తో అతివ్యాప్తి చెందుతుంది. డేటాబేస్కు కనెక్ట్ చేస్తున్నప్పుడు ప్రామాణీకరణ ఫంక్షన్ వెర్షన్ 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. సాగే శోధన నోడ్ కోసం ప్రమాణపత్రాలను సృష్టించండి:

    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. కింది ఫోల్డర్‌లో సాగే శోధన నోడ్‌ల మధ్య ప్రమాణపత్రాన్ని ఉంచండి:

    /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

OSలో ఫైర్‌వాల్‌ని సెటప్ చేస్తోంది

  1. ఫైర్‌వాల్‌ను ప్రారంభించడానికి అనుమతించండి:

    systemctl enable firewalld

  2. దీన్ని ప్రారంభిద్దాం:

    systemctl start firewalld

  3. సాగే శోధనకు కనెక్షన్‌ని అనుమతించండి:

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

  4. ఫైర్‌వాల్ నియమాలను మళ్లీ లోడ్ చేయండి:

    firewall-cmd --reload

  5. ఇక్కడ పని నియమాలు ఉన్నాయి:

    firewall-cmd --list-all

మా మార్పులన్నీ సాగే శోధనకు వర్తింపజేయడం

  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

అంతే, అనధికార కనెక్షన్‌ల నుండి సాగే శోధనను రక్షించే కనీస సెట్టింగ్‌లు ఇవి.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి