پچھلے ایک سال کے دوران، ڈیٹا بیس سے کئی لیک ہو چکے ہیں۔
آئیے فوری طور پر ایک ریزرویشن کرتے ہیں کہ اپنی مشق میں ہم اپنے IaaS پلیٹ فارم میں لاگز کو اسٹور کرنے اور انفارمیشن سیکیورٹی ٹولز، OS اور سافٹ ویئر کے لاگز کا تجزیہ کرنے کے لیے Elasticsearch کا استعمال کرتے ہیں، جو 152-FZ، Cloud-152 کے تقاضوں کی تعمیل کرتا ہے۔
ہم چیک کرتے ہیں کہ آیا ڈیٹا بیس انٹرنیٹ سے "چپ جاتا ہے"
لیک کے زیادہ تر معلوم معاملات میں (
سب سے پہلے، انٹرنیٹ پر اشاعت کے ساتھ نمٹنے دو. ایسا کیوں ہوتا ہے؟ حقیقت یہ ہے کہ Elasticsearch کے زیادہ لچکدار آپریشن کے لیے
اگر آپ اندر جا سکتے ہیں، تو اسے بند کرنے کے لیے دوڑیں۔
ڈیٹا بیس سے کنکشن کی حفاظت کرنا
اب ہم اسے اس طرح بنائیں گے کہ بغیر تصدیق کے ڈیٹا بیس سے جڑنا ناممکن ہے۔
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 ماہرین سے رابطہ کرنے کی ضرورت ہے۔ آئیے سیدھے دوسرے کی طرف چلتے ہیں۔
- مکمل ڈومین نام کے ساتھ ایک متغیر بنائیں:
export DOMAIN_CN="example.com"
- ایک نجی کلید بنائیں:
openssl genrsa -out root-ca-key.pem 4096
- روٹ سرٹیفکیٹ پر دستخط کریں۔ اسے محفوظ رکھیں: اگر یہ کھو جاتا ہے یا سمجھوتہ کیا جاتا ہے، تو تمام میزبانوں کے درمیان اعتماد کو دوبارہ ترتیب دینے کی ضرورت ہوگی۔
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
- ایک ایڈمنسٹریٹر کلید بنائیں:
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
- سرٹیفکیٹ پر دستخط کرنے کی درخواست بنائیں:
openssl req -new -subj "/C=RU/ST=Moscow/O=Moscow Inc./CN=${DOMAIN_CN}/CN=admin " -key admin-key.pem -out admin.csr
- ایڈمنسٹریٹر سرٹیفکیٹ بنائیں:
openssl x509 -req -extensions usr_cert -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem
- 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
- دستخط کی درخواست بنائیں:
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
- سرٹیفکیٹ پر دستخط:
openssl x509 -req -in node.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node.pem
- درج ذیل فولڈر میں Elasticsearch نوڈس کے درمیان سرٹیفکیٹ رکھیں:
/etc/elasticsearch/
ہمیں فائلوں کی ضرورت ہے:node-01-key.pem node-01.pem admin-key.pem admin.pem root-ca.pem
- اسے ترتیب دے رہا ہے۔ /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
اندرونی صارفین کے لیے پاس ورڈ تبدیل کرنا
- نیچے دی گئی کمانڈ کا استعمال کرتے ہوئے، ہم پاس ورڈ ہیش کو کنسول میں آؤٹ پٹ کرتے ہیں۔
sh ${OD_SEC}/tools/hash.sh -p [пароль]
- فائل میں موجود ہیش کو موصول شدہ میں تبدیل کریں:
/usr/share/elasticsearch/plugins/opendistro_security/securityconfig/internal_users.yml
OS میں فائر وال سیٹ کرنا
- فائر وال کو شروع کرنے کی اجازت دیں:
systemctl enable firewalld
- آئیے اسے لانچ کریں:
systemctl start firewalld
- Elasticsearch سے کنکشن کی اجازت دیں:
firewall-cmd --set-default-zone work firewall-cmd --zone=work --add-port=9200/TCP --permanent
- فائر وال کے قوانین کو دوبارہ لوڈ کریں:
firewall-cmd --reload
- یہاں کام کرنے کے قوانین ہیں:
firewall-cmd --list-all
ہماری تمام تبدیلیوں کو Elasticsearch پر لاگو کرنا
- پلگ ان کے ساتھ فولڈر کے مکمل راستے کے ساتھ ایک متغیر بنائیں:
export OD_SEC="/usr/share/elasticsearch/plugins/opendistro_security/"
- آئیے ایک اسکرپٹ چلائیں جو پاس ورڈ کو اپ ڈیٹ کرے گا اور سیٹنگز کو چیک کرے گا:
${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
- چیک کریں کہ آیا تبدیلیاں لاگو ہوئی ہیں:
curl -XGET https://[IP/Имя Elasticsearch]:9200/_cat/nodes?v -u admin:[пароль] --insecure
بس، یہ وہ کم از کم ترتیبات ہیں جو Elasticsearch کو غیر مجاز کنکشن سے بچاتی ہیں۔
ماخذ: www.habr.com