ಸೋರಿಕೆಯನ್ನು ತಪ್ಪಿಸಲು Elasticsearch ಅನ್ನು ಹೇಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು

ಕಳೆದ ವರ್ಷದಲ್ಲಿ, ಡೇಟಾಬೇಸ್‌ಗಳಿಂದ ಹಲವು ಸೋರಿಕೆಗಳು ನಡೆದಿವೆ Elasticsearch (ನೋಡು, ನೋಡು и ನೋಡು) ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, ವೈಯಕ್ತಿಕ ಡೇಟಾವನ್ನು ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ. ಡೇಟಾಬೇಸ್ ಅನ್ನು ನಿಯೋಜಿಸಿದ ನಂತರ, ನಿರ್ವಾಹಕರು ಕೆಲವು ಸರಳ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಚಿಂತಿಸಿದ್ದರೆ ಈ ಸೋರಿಕೆಯನ್ನು ತಪ್ಪಿಸಬಹುದಿತ್ತು. ಇಂದು ನಾವು ಅವರ ಬಗ್ಗೆ ಮಾತನಾಡುತ್ತೇವೆ.

152-FZ, Cloud-152 ನ ಅವಶ್ಯಕತೆಗಳನ್ನು ಅನುಸರಿಸುವ ನಮ್ಮ IaaS ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ನಲ್ಲಿ ಲಾಗ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಮತ್ತು ಮಾಹಿತಿ ಭದ್ರತಾ ಪರಿಕರಗಳು, OS ಮತ್ತು ಸಾಫ್ಟ್‌ವೇರ್‌ಗಳ ಲಾಗ್‌ಗಳನ್ನು ವಿಶ್ಲೇಷಿಸಲು ನಮ್ಮ ಅಭ್ಯಾಸದಲ್ಲಿ ನಾವು Elasticsearch ಅನ್ನು ಬಳಸುತ್ತೇವೆ ಎಂದು ತಕ್ಷಣವೇ ಕಾಯ್ದಿರಿಸೋಣ. 

ಸೋರಿಕೆಯನ್ನು ತಪ್ಪಿಸಲು Elasticsearch ಅನ್ನು ಹೇಗೆ ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು

ಡೇಟಾಬೇಸ್ ಇಂಟರ್ನೆಟ್‌ಗೆ "ಅಂಟಿಕೊಂಡಿದೆ" ಎಂದು ನಾವು ಪರಿಶೀಲಿಸುತ್ತೇವೆ

ಸೋರಿಕೆಯ ಹೆಚ್ಚಿನ ಸಂದರ್ಭಗಳಲ್ಲಿ (ನೋಡು, ನೋಡು) ಆಕ್ರಮಣಕಾರರು ಡೇಟಾಗೆ ಸರಳವಾಗಿ ಮತ್ತು ಆಡಂಬರವಿಲ್ಲದೆ ಪ್ರವೇಶವನ್ನು ಪಡೆದರು: ಡೇಟಾಬೇಸ್ ಅನ್ನು ಇಂಟರ್ನೆಟ್ನಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಗಿದೆ ಮತ್ತು ದೃಢೀಕರಣವಿಲ್ಲದೆಯೇ ಅದನ್ನು ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಯಿತು.  

ಮೊದಲಿಗೆ, ಇಂಟರ್ನೆಟ್ನಲ್ಲಿ ಪ್ರಕಟಿಸುವುದರೊಂದಿಗೆ ವ್ಯವಹರಿಸೋಣ. ಇದು ಏಕೆ ಸಂಭವಿಸುತ್ತದೆ? ವಾಸ್ತವವೆಂದರೆ ಸ್ಥಿತಿಸ್ಥಾಪಕ ಹುಡುಕಾಟದ ಹೆಚ್ಚು ಹೊಂದಿಕೊಳ್ಳುವ ಕಾರ್ಯಾಚರಣೆಗಾಗಿ ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ ಮೂರು ಸರ್ವರ್‌ಗಳ ಕ್ಲಸ್ಟರ್ ಅನ್ನು ರಚಿಸಿ. ಡೇಟಾಬೇಸ್‌ಗಳು ಪರಸ್ಪರ ಸಂವಹನ ನಡೆಸಲು, ನೀವು ಪೋರ್ಟ್‌ಗಳನ್ನು ತೆರೆಯಬೇಕು. ಪರಿಣಾಮವಾಗಿ, ನಿರ್ವಾಹಕರು ಯಾವುದೇ ರೀತಿಯಲ್ಲಿ ಡೇಟಾಬೇಸ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ನಿರ್ಬಂಧಿಸುವುದಿಲ್ಲ ಮತ್ತು ನೀವು ಎಲ್ಲಿಂದಲಾದರೂ ಡೇಟಾಬೇಸ್‌ಗೆ ಸಂಪರ್ಕಿಸಬಹುದು. ಡೇಟಾಬೇಸ್ ಹೊರಗಿನಿಂದ ಪ್ರವೇಶಿಸಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸುವುದು ಸುಲಭ. ಬ್ರೌಸರ್ನಲ್ಲಿ ನಮೂದಿಸಿ http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v

ನೀವು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾದರೆ, ಅದನ್ನು ಮುಚ್ಚಲು ಓಡಿ.

ಡೇಟಾಬೇಸ್‌ಗೆ ಸಂಪರ್ಕವನ್ನು ರಕ್ಷಿಸುವುದು

ಈಗ ನಾವು ಅದನ್ನು ಮಾಡುತ್ತೇವೆ ಆದ್ದರಿಂದ ದೃಢೀಕರಣವಿಲ್ಲದೆ ಡೇಟಾಬೇಸ್ಗೆ ಸಂಪರ್ಕಿಸಲು ಅಸಾಧ್ಯವಾಗಿದೆ.

Elasticsearch ಡೇಟಾಬೇಸ್‌ಗೆ ಪ್ರವೇಶವನ್ನು ಮಿತಿಗೊಳಿಸುವ ದೃಢೀಕರಣ ಮಾಡ್ಯೂಲ್ ಅನ್ನು ಹೊಂದಿದೆ, ಆದರೆ ಇದು ಪಾವತಿಸಿದ X-ಪ್ಯಾಕ್ ಪ್ಲಗಿನ್ ಸೆಟ್‌ನಲ್ಲಿ ಮಾತ್ರ ಲಭ್ಯವಿದೆ (1 ತಿಂಗಳ ಉಚಿತ ಬಳಕೆ).

ಒಳ್ಳೆಯ ಸುದ್ದಿ ಎಂದರೆ 2019 ರ ಶರತ್ಕಾಲದಲ್ಲಿ, ಅಮೆಜಾನ್ ತನ್ನ ಬೆಳವಣಿಗೆಗಳನ್ನು ತೆರೆಯಿತು, ಇದು ಎಕ್ಸ್-ಪ್ಯಾಕ್‌ನೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸುತ್ತದೆ. ಡೇಟಾಬೇಸ್‌ಗೆ ಸಂಪರ್ಕಿಸುವಾಗ ದೃಢೀಕರಣ ಕಾರ್ಯವು ಆವೃತ್ತಿ 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 ಅನ್ನು ಬಳಸಿಕೊಂಡು ಅವುಗಳ ನಡುವೆ ಪರಸ್ಪರ ಕ್ರಿಯೆಯನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ.

ಹೋಸ್ಟ್‌ಗಳ ನಡುವೆ ನಂಬಿಕೆಯನ್ನು ತನ್ನದೇ ಆದ ಪ್ರಮಾಣಪತ್ರ ಅಧಿಕಾರದೊಂದಿಗೆ ಅಥವಾ ಇಲ್ಲದೆ ಸ್ಥಾಪಿಸಬಹುದು. ಮೊದಲ ವಿಧಾನದೊಂದಿಗೆ, ಎಲ್ಲವೂ ಸ್ಪಷ್ಟವಾಗಿದೆ: ನೀವು ಸಿಎ ತಜ್ಞರನ್ನು ಸಂಪರ್ಕಿಸಬೇಕು. ನೇರವಾಗಿ ಎರಡನೆಯದಕ್ಕೆ ಹೋಗೋಣ.

  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. ಕೆಳಗಿನ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ 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

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

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

ಅಷ್ಟೆ, ಅನಧಿಕೃತ ಸಂಪರ್ಕಗಳಿಂದ ಸ್ಥಿತಿಸ್ಥಾಪಕ ಹುಡುಕಾಟವನ್ನು ರಕ್ಷಿಸುವ ಕನಿಷ್ಠ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಇವು.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ