ليڪ کان بچڻ لاءِ ايلسٽسٽڪ سرچ کي ڪيئن ترتيب ڏيو

گذريل سال دوران، ڊيٽابيس مان ڪيترائي ليڪ ٿي چڪا آهن ElasticsSearch (ڏس, ڏس и ڏس). ڪيترن ئي ڪيسن ۾، ذاتي ڊيٽا ڊيٽابيس ۾ محفوظ ڪئي وئي هئي. اهي ليڪس کان بچي سگهجن ها جيڪڏهن، ڊيٽابيس کي ترتيب ڏيڻ کان پوء، منتظمين ڪجهه سادي سيٽنگون چيڪ ڪرڻ جي زحمت ڪن ها. اڄ اسان انهن بابت ڳالهائينداسين.

اچو ته فوري طور تي هڪ رزرويشن ڪريون ته اسان جي مشق ۾ اسان لاگز کي محفوظ ڪرڻ لاءِ Elasticsearch استعمال ڪريون ٿا ۽ اسان جي IaaS پليٽ فارم ۾ معلوماتي سيڪيورٽي ٽولز، OS ۽ سافٽ ويئر جي لاگز جو تجزيو ڪيو، جيڪو 152-FZ، Cloud-152 جي گهرجن سان مطابقت رکي ٿو. 

ليڪ کان بچڻ لاءِ ايلسٽسٽڪ سرچ کي ڪيئن ترتيب ڏيو

اسان چيڪ ڪريون ٿا ته ڇا ڊيٽابيس انٽرنيٽ تي ”اسٽيڪ آئوٽ“ آهي

ليڪ جي اڪثر ڄاتل ڪيسن ۾ (ڏس, ڏس) حملي ڪندڙ ڊيٽا تائين رسائي حاصل ڪئي سادو ۽ غير معمولي طور تي: ڊيٽابيس انٽرنيٽ تي شايع ڪيو ويو، ۽ اهو ممڪن هو ته ان سان ڳنڍڻ بغير تصديق جي.  

پهرين، اچو ته انٽرنيٽ تي شايع ڪرڻ سان معاملو ڪريو. ائين ڇو ٿو ٿئي؟ حقيقت اها آهي ته Elasticsearch جي وڌيڪ لچڪدار آپريشن لاء صلاح ڏني ٽن سرورن جو ڪلستر ٺاھيو. ڊيٽابيس کي هڪ ٻئي سان رابطو ڪرڻ لاء، توهان کي بندرگاهن کي کولڻ جي ضرورت آهي. نتيجي طور، منتظمين ڪنهن به طريقي سان ڊيٽابيس تائين رسائي کي محدود نه ڪندا آهن، ۽ توهان ڊيٽابيس سان ڪٿي به ڳنڍي سگهو ٿا. اهو چيڪ ڪرڻ آسان آهي ته ڇا ڊيٽابيس ٻاهران رسائي لائق آهي. بس برائوزر ۾ داخل ڪريو http://[IP/Имя Elasticsearch]:9200/_cat/nodes?v

جيڪڏهن توهان اندر حاصل ڪري سگهو ٿا، پوء ان کي بند ڪرڻ لاء ڊوڙيو.

ڊيٽابيس کي ڪنيڪشن جي حفاظت

هاڻي اسان ان کي ٺاهينداسين ته جيئن بغير تصديق جي ڊيٽابيس سان ڳنڍڻ ناممڪن آهي.

Elasticsearch وٽ هڪ تصديقي ماڊل آهي جيڪو ڊيٽابيس تائين رسائي کي محدود ڪري ٿو، پر اهو صرف ادا ڪيل X-Pack پلگ ان سيٽ ۾ موجود آهي (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


ڊي بي جي بنياد تي:

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 node لاءِ سرٽيفڪيٽ ٺاھيو:

    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 جي حفاظت ڪن ٿيون.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو