Нэвчилтээс зайлсхийхийн тулд Elasticsearch-ийг хэрхэн тохируулах вэ

Өнгөрсөн нэг жилийн хугацаанд мэдээллийн сан алдагдсан олон тохиолдол гарсан. Elasticsearch (болгоогтун, болгоогтун и болгоогтун). Ихэнх тохиолдолд мэдээллийн сан нь хувийн мэдээллийг агуулж байсан. Хэрэв администраторууд мэдээллийн баазыг байршуулсны дараа цөөн хэдэн энгийн тохиргоог шалгах цаг гаргасан бол эдгээр алдагдлаас зайлсхийх боломжтой байсан. Бид өнөөдөр тэдгээрийг хэлэлцэх болно.

Бид практик дээрээ Elasticsearch-ийг Холбооны хуулийн 152 дугаарт заасан шаардлагад нийцсэн IaaS платформ болох Cloud-152 платформ дээр мэдээллийн аюулгүй байдлын хэрэгсэл, үйлдлийн систем, программ хангамжийн бүртгэлийг хадгалах, дүн шинжилгээ хийхэд ашигладаг гэдгийг нэн даруй тодруулъя. 

Нэвчилтээс зайлсхийхийн тулд Elasticsearch-ийг хэрхэн тохируулах вэ

Бид мэдээллийн сан интернетэд "наалдсан" эсэхийг шалгадаг

Ихэнх мэдэгдэж байгаа гоожсон тохиолдлуудад (болгоогтун, болгоогтун) Халдагчид өгөгдөлд хялбар бөгөөд хялбархан нэвтэрч чадсан: мэдээллийн сан нь интернетэд нийтлэгдсэн бөгөөд түүнийг баталгаажуулахгүйгээр хандах боломжтой.  

Эхлээд вэб дээр нийтлэхийг харцгаая. Яагаад ийм зүйл болдог вэ? Elasticsearch нь илүү уян хатан ажиллах зориулалттай. санал болгож байна Гурван серверийн кластер үүсгэ. Өгөгдлийн сангууд хоорондоо холбогдохын тулд портуудыг нээх шаардлагатай. Үүний үр дүнд администраторууд мэдээллийн санд хандах хандалтыг ямар ч байдлаар хязгаарладаггүй бөгөөд та хаанаас ч холбогдох боломжтой. Өгөгдлийн санд гадны хандалтыг шалгах нь хялбар байдаг. Зүгээр л хөтөч дээрээ [тодорхойгүй] гэж оруулна уу. http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v

Ороод амжвал гүйгээд хаах хэрэгтэй.

Өгөгдлийн сангийн холболтыг хамгаалах

Одоо үүнийг баталгаажуулалтгүйгээр мэдээллийн санд холбогдох боломжгүй болгоё.

Elasticsearch нь мэдээллийн санд хандах хандалтыг хязгаарласан баталгаажуулалтын модультай боловч энэ нь зөвхөн төлбөртэй X-Pack залгаасын багцад байдаг (1 сар үнэгүй).

Сайн мэдээ гэвэл 2019 оны намар Амазон өөрийн ажлыг нээлттэй эх сурвалжаар хийсэн нь 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. Plugin хавтасны бүрэн зам бүхий хувьсагч үүсгэнэ үү:

    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-тай зөвшөөрөлгүй холболт хийхээс сэргийлдэг хамгийн бага тохиргоо юм.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх