इस ट्यूटोरियल में, मैं समझाऊंगा - एन्क्रिप्शन के लिए SSH कनेक्शन का उपयोग करके MySQL सर्वर से एक सुरक्षित कनेक्शन कैसे सेट करें ताकि डेटाबेस में डेटा सुरक्षित रहे और हैकर्स के लिए डेटा चोरी करना असंभव हो। एसएसएल का उपयोग एसएसएल प्रमाणपत्रों के साधनों को सत्यापित करने के लिए किया जाता है जो फ़िशिंग हमलों से रक्षा कर सकते हैं। यह आपको यह भी दिखाएगा - MySQL सर्वर पर भी SSL कैसे सक्षम करें।
SSL समर्थन सक्षम करना
MySQL सर्वर से कनेक्ट करें और जांचें कि MySQL सर्वर की SSL स्थिति क्या है
# mysql -u root -pmysql> '%ssl%' जैसे वेरिएबल दिखाएं;आउटपुट:+---------------+----------+ | चर_नाम | मूल्य |+---------------+----------+| Have_openssl | विकलांग || Have_ssl | विकलांग || ssl_ca | || ssl_capath | || ssl_cert | || ssl_cipher | || ssl_key | |+---------------+----------+7 पंक्तियाँ सेट में (0.00 सेकंड)mysql> \qBye
MySQL के लिए SSL प्रमाणपत्र बनाना
प्रमाणपत्र फ़ाइलों को संग्रहीत करने के लिए एक निर्देशिका बनाएँ
# mkdir /etc/certificates# cd /etc/certificates
सर्वर प्रमाणपत्र बनाना
# opensl genrsa 2048> ca-key.pemजनरेटिंग RSA प्राइवेट की, 2048 बिट लॉन्ग मॉड्यूलस....................... ……………………………………… ....+++..........+++ई 65537 (0x10001)# ओपनएसएल अनुरोध -न्यूकी आरएसए:2048 -दिन 1000 -नोड्स -कीआउट सर्वर-की.पेम> सर्वर-रिक .pem 2048 बिट RSA निजी कुंजी जनरेट कर रहा है। ……………………………………… .................................+++ 'सर्वर-की.पेम' में नई निजी कुंजी लिखना आपसे ऐसी जानकारी दर्ज करने के लिए कहा जाने वाला है जो होगी आपके प्रमाणपत्र अनुरोध में शामिल किया गया है। आप जो दर्ज करने जा रहे हैं उसे एक विशिष्ट नाम या डीएन कहा जाता है। काफी कुछ फ़ील्ड हैं लेकिन आप कुछ खाली छोड़ सकते हैं कुछ फ़ील्ड के लिए एक डिफ़ॉल्ट मान होगा, यदि आप '।' दर्ज करते हैं, फ़ील्ड खाली छोड़ दी जाएगी.----- देश का नाम (2 अक्षर कोड) [XX]:राज्य या प्रांत का नाम (पूरा नाम) []:स्थान का नाम (जैसे, शहर) [डिफ़ॉल्ट शहर]:संगठन का नाम (जैसे , कंपनी) [डिफ़ॉल्ट कंपनी लिमिटेड]:Organizat ional इकाई का नाम (उदाहरण के लिए, अनुभाग) []:सामान्य नाम (जैसे, आपका नाम या आपके सर्वर का होस्टनाम) []:ईमेल पता []:कृपया अपने प्रमाणपत्र अनुरोध के साथ भेजे जाने के लिए निम्नलिखित 'अतिरिक्त' विशेषताएँ दर्ज करें एक चुनौती पासवर्ड []:एक वैकल्पिक कंपनी का नाम []:# Opensl x509 -req -in server-req.pem -days 1000 -CA ca-cert.pem -CAkey ca-key.pem -set_serial 01> server-cert.pemSignature oksubject=/C=XX/L =डिफ़ॉल्ट शहर/ओ =डिफ़ॉल्ट कंपनी लिमिटेड सीए प्रमाणपत्र खोलने में त्रुटि ','r')139991633303368:त्रुटि:20074002:जैव दिनचर्या:FILE_CTRL:सिस्टम lib:bss_file.c:400:प्रमाणपत्र लोड करने में असमर्थ क्लाइंट प्रमाणपत्र जनरेट कर रहा है
# opensl req -newkey rsa:2048 -days 1000 -nodes -keyout client-key.pem> client-req.pem 2048 बिट RSA निजी कुंजी जनरेट कर रहा है............ ...................................+++.................. ..++++ 'client-key.pem' में नई निजी कुंजी लिखना ----- आपसे ऐसी जानकारी दर्ज करने के लिए कहा जा रहा है जिसे आपके प्रमाणपत्र अनुरोध में शामिल किया जाएगा। आप जो दर्ज करने जा रहे हैं उसे a कहा जाता है। विशिष्ट नाम या एक डीएन। काफी कुछ फ़ील्ड हैं लेकिन आप कुछ खाली छोड़ सकते हैं कुछ फ़ील्ड के लिए एक डिफ़ॉल्ट मान होगा, यदि आप '.' दर्ज करते हैं, तो फ़ील्ड खाली छोड़ दिया जाएगा।----- देश का नाम (2 अक्षर कोड) [XX]:राज्य या प्रांत का नाम (पूरा नाम) []:स्थान का नाम (जैसे, शहर) [डिफ़ॉल्ट शहर]:संगठन का नाम (जैसे, कंपनी) [डिफ़ॉल्ट कंपनी लिमिटेड]:संगठनात्मक इकाई का नाम (जैसे, अनुभाग ) []:सामान्य नाम (जैसे, आपका नाम या आपके सर्वर का होस्टनाम) []:ईमेल पता []:कृपया निम्नलिखित 'अतिरिक्त' विशेषताएँ दर्ज करें ओपनएसएल x509 -req -in क्लाइंट-req.pem -days 1000 -CA ca- # cert.pem -CAkey ca-key.pem -set_ser ial 01> client-cert.pemSignature oksubject=/C=XX/L=Default City/O=Default Company Ltd.CA सर्टिफिकेट खोलने में त्रुटि .c:398:fopen('ca-cert.pem','r')140327140685640:error:20074002:BIO दिनचर्या:FILE_CTRL:system lib:bss_file.c:400:आपके प्रमाणपत्र अनुरोध के साथ भेजे जाने वाले प्रमाणपत्र को लोड करने में असमर्थA चुनौती पासवर्ड []:एक वैकल्पिक कंपनी का नाम []:
अब my.cnf फ़ाइल खोलें और प्रमाणपत्र जोड़ें
<पूर्व># vi /etc/my.cnf[mysqld]ssl-ca=/etc/certificates/cacert.pemssl-cert=/etc/certificates/server-cert.pemssl-key=/etc/certificates/server-key .pemMySQL सर्वर को पुनरारंभ करें और प्रमाणपत्र की स्थिति जांचें
<पूर्व>#सेवा mysqld पुनरारंभ#mysql -uroot -pmysql>'%ssl%' जैसे चर दिखाएं;+---------------+---------- ------------------------+| चर_नाम | मूल्य |+---------------+------------------------------------------ ----+| Have_openssl | हाँ || Have_ssl | हाँ || ssl_ca |/etc/certificates/cacert.pem || ssl_capath | || ssl_cert | /etc/certificates/server-cert.pem || ssl_cipher | || ssl_key | /etc/प्रमाणपत्र/सर्वर-की.पेम |+---------------+-------------------------- -------------+7 पंक्तियाँ सेट में (0.00 सेकंड)SSL एक्सेस वाले उपयोगकर्ता बनाना
mysql> * पर सभी विशेषाधिकार प्रदान करें।* 'ssl_user'@'%' को 'पासवर्ड' से पहचाने जाने के लिए SSL;mysql> फ्लश विशेषाधिकारों की आवश्यकता होती है;
MySQL क्लाइंट के लिए SSL कॉन्फ़िगर करें
सर्वर की तरफ से हमें क्लाइंट-सर्टिफिकेट.पेम क्लाइंट-की.पेम क्लाइंट-रेक.पेम को सर्वर से क्लाइंट तक कॉपी करने की जरूरत थी।
<पूर्व># scp /etc/ प्रमाणपत्र/client-cert.pem [email protected]:/etc/प्रमाणपत्र# scp /etc/ प्रमाणपत्र/client-key.pem [email protected]:/etc/प्रमाणपत्र# scp / आदि/प्रमाणपत्र/क्लाइंट-req.pem [email protected]:/आदि/प्रमाणपत्रएक बार क्लाइंट को ट्रांसफर की गई फ़ाइलें क्लाइंट से कनेक्ट हो जाती हैं और SSL प्रमाणपत्र का उपयोग करके MySQL से कनेक्ट करने का प्रयास करती हैं।
# mysql --ssl-ca=ca-cert.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem -h 192.168.87.156 -u ssluser -p में आपका स्वागत है MySQL मॉनिटर। कमांड के साथ समाप्त होता है; या \g.आपका MySQL कनेक्शन आईडी 3 सर्वर संस्करण है:5.1.73 स्रोत वितरण कॉपीराइट (सी) 2000, 2013, ओरेकल और/या इसके सहयोगी। सर्वाधिकार सुरक्षित।Oracle Oracle Corporation और/या उसके सहयोगियों का एक पंजीकृत ट्रेडमार्क है। अन्य नाम उनके संबंधित स्वामियों के ट्रेडमार्क हो सकते हैं। 'सहायता' टाइप करें। या '\h' मदद के लिए। वर्तमान इनपुट स्टेटमेंट को साफ़ करने के लिए '\c' टाइप करें। mysql> स्थिति -------------- mysql Ver 14.14 डिस्ट्रीब 5.1.73, रीडलाइन 5.1 कनेक्शन का उपयोग करके redhat-linux-gnu (x86_64) के लिए आईडी:3 वर्तमान डेटाबेस:वर्तमान उपयोगकर्ता:रूट @ लोकलहोस्टएसएसएल:उपयोग में क्लिपर डीएचई-आरएसए-एईएस256-एसएचए हैवर्तमान पेजर:स्टडआउटआउटफाइल का उपयोग करना:''सीमांकक का उपयोग करना:सर्वर संस्करण:5.1.73 स्रोत वितरणप्रोटोकॉल संस्करण:10कनेक्शन:192.168.87.158 के माध्यम से TCP/IPServer कैरेक्टरसेट:latin1Db कैरेक्टरसेट:latin1Client कैरेक्टरसेट:latin1Conn। कैरेक्टरसेट:latin1UNIX सॉकेट:/var/lib/mysql/mysql.sockUptime:11 मिनट 13 सेकेंड थ्रेड्स:1 प्रश्न:8 धीमी क्वेरीज़:0 ओपन:15 फ्लश टेबल्स:1 ओपन टेबल्स:8 क्वेरीज़ प्रति सेकेंड औसत:0.11---- ---------पूर्व>बाद में, सेटिंग्स को /etc/my.cnf फ़ाइल में स्थायी रूप से जोड़ें ताकि जब हम MySQL सर्वर से कनेक्ट हों तो हमें SSL का उपयोग करके कनेक्ट करना चाहिए।
<पूर्व># vi /etc/my.cnf[client]ssl-ca=/etc/certificates/ client-cert.pemssl-cert=/etc/certificates/client-cert.pemssl-key=/etc/certificates/client -key.pem
इस कॉन्फ़िगरेशन और सेट अप के बाद आप डेटा को चोरी होने से बचाने के लिए SSL कुंजी का उपयोग करके क्लाइंट साइड से MySQL सर्वर से कनेक्ट करने में सक्षम हो सकते हैं और जो डेटा को हैकर्स से भी सुरक्षित करता है।