MySQL
MySQL एक ओपन-सोर्स रिलेशनल डेटाबेस मैनेजमेंट सिस्टम है। यह मार्गदर्शिका आपको बताएगी कि कैसे एक MySQL सर्वर को सुरक्षित और ऑडिट करना है। यह नाम "माई", सह-संस्थापक माइकल विडेनियस की बेटी का नाम और "एसक्यूएल" का संयोजन है, जो संरचित क्वेरी भाषा का संक्षिप्त नाम है।
शुरू करने से पहले
-
सुनिश्चित करें कि आपने गेटिंग स्टार्टिंग एंड सिक्योरिंग योर सर्वर गाइड्स का पालन किया है। सुनिश्चित करें कि लिनोड का होस्टनाम सेट है।
अपने लिनोड के होस्टनाम की जाँच करें। पहला कमांड आपका संक्षिप्त होस्टनाम दिखाएगा और दूसरा आपका पूर्णतः योग्य डोमेन नाम (FQDN) दिखाएगा।
hostnamehostname -f
नोट यदि आपके पास अपनी वेबसाइट के लिए एक पंजीकृत डोमेन नाम है, तो उस डोमेन को लाइनोड सर्वर में जोड़ें जिस पर आप LAMP स्टैक स्थापित करने की योजना बना रहे हैं। यदि आपके पास पंजीकृत डोमेन नाम नहीं है, तो
example.com
. को बदलें निम्नलिखित निर्देशों में लिनोड सर्वर के आईपी पते के साथ। -
अपना सिस्टम अपडेट करें:
सुडो यम अपडेट
नोट यह मार्गदर्शिका गैर-रूट उपयोक्ता के लिए लिखी गई है। जिन आदेशों के लिए उन्नत विशेषाधिकारों की आवश्यकता होती है, उनके आगे
sudo
. लगा होता है . अगर आपsudo
. से परिचित नहीं हैं आदेश, आप हमारे उपयोगकर्ता और समूह मार्गदर्शिका देख सकते हैं। -
MySQL को सुरक्षित और ऑडिट करने के लिए, आपके पास
MySQL सर्वर
. के साथ एक Linux सर्वर होना चाहिए सेवाएं चल रही हैं। MySQL इंस्टाल करने के बारे में जानकारी के लिए कृपया MySQL इंस्टाल करें देखेंनोट इस गाइड में निर्देश उबंटू 18.04 पर आधारित हैं, हालांकि सभी चरण पैकेज नामों और पैकेज प्रबंधकों के अपवाद के साथ वितरण अज्ञेयवादी हैं।
सुरक्षित MySQL इंस्टालर का उपयोग करना
Mysql-server पैकेज mysql_secure_installation
. नामक उपयोगिता के साथ पहले से कॉन्फ़िगर किया हुआ आता है जिसका उपयोग अनाम उपयोगकर्ताओं को हटाकर और आपको वांछित पासवर्ड शक्ति नीति निर्दिष्ट करने की अनुमति देकर MySQL सर्वर के लिए एक सुरक्षित प्रारंभिक बिंदु स्थापित करने के लिए किया जाता है।
mysql_secure_installation
यूनिक्स सिस्टम पर उपलब्ध एक शेल स्क्रिप्ट है, और आपको निम्न को सक्षम करके MySQL स्थापना को सुरक्षित करने में सक्षम बनाता है:
- रूट खातों के लिए पासवर्ड सेट करें
- उन रूट खातों को हटा दें जिन तक स्थानीय होस्ट के बाहर से पहुंचा जा सकता है
- अनाम-उपयोगकर्ता खाते हटाएं
- परीक्षण डेटाबेस को हटा दें, जिसे डिफ़ॉल्ट रूप से अनाम उपयोगकर्ताओं द्वारा एक्सेस किया जा सकता है
Mysql-server को स्थापित करने के तुरंत बाद इस उपयोगिता को चलाकर सुरक्षा प्रक्रिया शुरू करें।
-
निम्न आदेश चलाकर उपयोगिता को आमंत्रित करें:
sudo mysql_secure_installation
-
सेटअप प्रक्रिया शुरू होती है और उपयोगिता आपको यह निर्दिष्ट करने के लिए संकेत देती है कि क्या आप मान्य पासवर्ड प्लगइन को सक्षम करना चाहते हैं जिसका उपयोग पासवर्ड का परीक्षण करने और सुरक्षा में सुधार करने के लिए किया जाता है। इस सुविधा को सक्षम करने की अनुशंसा की जाती है। यह पासवर्ड की ताकत की जांच करता है और उपयोगकर्ताओं को केवल वही पासवर्ड सेट करने की अनुमति देता है जो पर्याप्त रूप से सुरक्षित हैं। क्या आप VALIDATE PASSWORD प्लगइन सेटअप करना चाहते हैं? y|Y के लिए हाँ, No:y के लिए कोई अन्य कुंजी दबाएं
-
पासवर्ड प्लग इन को सक्षम करने के बाद, वांछित पासवर्ड की ताकत के स्तर के आधार पर अपनी पासवर्ड सत्यापन नीति निर्दिष्ट करें।
पासवर्ड सत्यापन नीति के तीन स्तर हैं:कम लंबाई> =8 मध्यम लंबाई> =8, संख्यात्मक , मिश्रित केस, और विशेष वर्ण मजबूत लंबाई> =8, संख्यात्मक, मिश्रित केस, विशेष वर्ण और शब्दकोश फ़ाइल कृपया दर्ज करें 0 =कम, 1 =मध्यम और 2 =मजबूत:2 कृपया यहां रूट के लिए पासवर्ड सेट करें। नया पासवर्ड:नया दर्ज करें पासवर्ड:पासवर्ड की अनुमानित ताकत:100क्या आप दिए गए पासवर्ड के साथ जारी रखना चाहते हैं? (हां के लिए y|Y दबाएं, नहीं के लिए कोई अन्य कुंजी):y
-
अनाम उपयोगकर्ताओं को निकालें। यह एक महत्वपूर्ण सुरक्षा विकल्प है क्योंकि हमलावर डेटाबेस सर्वर तक पहुंच प्राप्त करने के लिए अनाम उपयोगकर्ताओं का लाभ उठा सकते हैं। लिए उन्हें। इसका उद्देश्य केवल परीक्षण करना है, और स्थापना को थोड़ा आसान बनाना है। आपको उत्पादन वातावरण में जाने से पहले उन्हें हटा देना चाहिए। अनाम उपयोगकर्ताओं को निकालें? (हां के लिए y|Y दबाएं, नहीं के लिए कोई अन्य कुंजी):y
-
रूट लॉगिन को दूरस्थ रूप से अक्षम करें, यह एक अत्यंत महत्वपूर्ण सुरक्षा कॉन्फ़िगरेशन है क्योंकि यह हमलावरों को दूरस्थ रूप से MySQL सर्वर को रूट के रूप में प्रमाणित करने या पासवर्ड ब्रूट-फोर्स हमलों को करने से रोकता है। रिमोट प्रमाणीकरण को पूरी तरह से अक्षम भी किया जा सकता है, हम इसे अगले भाग में देखेंगे।
आम तौर पर, रूट को केवल 'लोकलहोस्ट' से कनेक्ट होने की अनुमति दी जानी चाहिए। यह सुनिश्चित करता है कि कोई नेटवर्क से रूट पासवर्ड का अनुमान नहीं लगा सकता है। रूट लॉगिन को दूरस्थ रूप से अस्वीकार करें? (हां के लिए y|Y दबाएं, नहीं के लिए कोई अन्य कुंजी):y
-
mysql-server स्थापना प्रक्रिया के दौरान बनाए गए परीक्षण डेटाबेस को हटा दें, यह डेटाबेस परीक्षण उद्देश्यों के लिए बनाया गया है, एक अच्छे अभ्यास के रूप में, इस डेटाबेस को हटाने की अनुशंसा की जाती है। डिफ़ॉल्ट रूप से, MySQL एक डेटाबेस के साथ आता है जिसका नाम ' परीक्षण' जिसे कोई भी एक्सेस कर सकता है। यह भी केवल परीक्षण के लिए अभिप्रेत है, और उत्पादन वातावरण में जाने से पहले इसे हटा दिया जाना चाहिए। परीक्षण डेटाबेस और उस तक पहुंच को हटा दें? (हां के लिए y|Y दबाएं, नहीं के लिए कोई अन्य कुंजी):y
-
यह सुनिश्चित करने के लिए विशेषाधिकार तालिकाओं को फिर से लोड करें कि सभी परिवर्तन लागू हैं और प्रभावी हैं। (हां के लिए y|Y दबाएं, नहीं के लिए कोई अन्य कुंजी):ySuccess.सब हो गया! अब आपके पास काम करने के लिए एक सुरक्षित आधार है, अगले भाग में, डिफ़ॉल्ट रूट को बदलने के लिए निर्देश खोजें उपयोगकर्ता नाम और पासवर्ड।
“रूट” उपयोगकर्ता को संशोधित करना
डिफ़ॉल्ट रूप से, MySQL सर्वर एक superuser/admin
. के साथ पूर्वनिर्धारित आता है खाता जिसके पास डेटाबेस और डेटाबेस उपयोगकर्ताओं के सभी विशेषाधिकार और कार्यक्षमता तक पहुंच है। इस अद्वितीय नियंत्रण और पहुंच को देखते हुए, रूट खाते को लॉक और सुरक्षित करना महत्वपूर्ण है क्योंकि हमलावर आमतौर पर एक MySQL सर्वर पर रूट खाते को लक्षित करते हैं क्योंकि इसमें डेटाबेस और डेटाबेस उपयोगकर्ताओं पर पूर्ण पहुंच प्रदान करने की क्षमता होती है।
"रूट" उपयोगकर्ता को सुरक्षित करने में पहला कदम उपयोगकर्ता नाम को root
. से बदलना है कुछ और अडिग करने के लिए, उद्देश्य मूल उपयोगकर्ता नाम का अनुमान लगाना कठिन बनाना या हमलावरों के लिए क्रूर-बल बनाना है। जिसके बाद, root
. को बदलने की भी सिफारिश की जाती है एक अच्छे अभ्यास के रूप में नियमित रूप से खाता पासवर्ड।
-
निम्नलिखित कमांड के साथ MySQL सर्वर में लॉग इन करें:
sudo mysql -u root
-
निम्नलिखित क्वेरी चलाकर "रूट" खाता उपयोगकर्ता नाम बदलें:
उपयोगकर्ता 'रूट' @ 'लोकलहोस्ट' का नाम बदलकर '<नया-उपयोगकर्ता नाम>' @ 'लोकलहोस्ट';
-
रूट
बदलें कुछ मजबूत और कठिन अनुमान लगाने के लिए खाता पासवर्ड, पासवर्ड जनरेटर का उपयोग करने की अनुशंसा की जाती है। यदि आपने सुरक्षित स्थापना प्रक्रिया के दौरान पासवर्ड सत्यापित करें प्लग इन को सक्षम किया है, तो आपको एक ऐसा पासवर्ड प्रदान करने की आवश्यकता है जो शक्ति के संदर्भ में नीति की आवश्यकताओं को पूरा करता हो।ALTER USER 'example_username'@'localhost' को '
से पहचाना जाता है'; -
यह सुनिश्चित करने के लिए विशेषाधिकार तालिका को पुनः लोड करें कि निम्न आदेश चलाकर सभी परिवर्तन सहेजे और सक्रिय किए गए हैं:
फ्लश विशेषाधिकार;
-
यह पुष्टि करने के लिए कि क्या
रूट
उपयोगकर्ता नाम और पासवर्ड बदल गए हैं, निम्न क्वेरी चलाएँ:mysql का उपयोग करें; mysql.user से उपयोगकर्ता, होस्ट, प्रमाणीकरण_स्ट्रिंग का चयन करें;
यह mysql डेटाबेस के अंतर्गत संग्रहीत उपयोगकर्ता तालिकाओं को प्रदर्शित करता है और किए गए परिवर्तनों को प्रतिबिंबित करना चाहिए।
+---------------------+------- ----+------------------------------------------+| उपयोगकर्ता | मेजबान | प्रमाणीकरण_स्ट्रिंग |+---------------------+----------+---------------- ---------------------------+| example_user | लोकलहोस्ट | *A2550B00C6DF81DACE33551E8293462F6CAE33DA || mysql.सेशन | लोकलहोस्ट | *यह मान्य पासवर्ड नहीं है जिसका उपयोग यहां किया जा सकता है || mysql.sys | लोकलहोस्ट | *यह मान्य पासवर्ड नहीं है जिसका उपयोग यहां किया जा सकता है || डेबियन-एसआईएस-रखरखाव | लोकलहोस्ट | *241DC5A20F017D55EE82E46E7996784ED4A5CD8A | ----------------------------+4 पंक्तियाँ सेट में (0.00 सेकंड)
एक नया उपयोगकर्ता बनाना
एक अच्छा सुरक्षा अभ्यास कर्तव्यों या भूमिका से अलगाव की अवधारणा है। इसका मतलब है कि डेटाबेस का उपयोग करने वाले प्रत्येक डेटाबेस या एप्लिकेशन के लिए, एक नया उपयोगकर्ता बनाएं जिसके पास उस विशेष डेटाबेस के लिए सीआरयूडी अनुमतियां हों। यह सुनिश्चित करता है कि किसी भी समय, केवल एक उपयोगकर्ता के पास एक समय में एक डेटाबेस तक पहुँच हो और उपयोगकर्ता अन्य डेटाबेस तक नहीं पहुँच सकते।
-
एक
परीक्षा
बनाएं डेटाबेस, MYSQL के भीतर निम्न क्वेरी चलाकर:डेटाबेस टेस्ट बनाएं;
-
इस परीक्षण डेटाबेस के प्रबंधन के लिए जिम्मेदार उपयोगकर्ता बनाएं:
उपयोगकर्ता बनाएं '<उपयोगकर्ता नाम>' @ 'लोकलहोस्ट' '<पासवर्ड>' द्वारा पहचाना गया;
-
उपयोगकर्ता को
परीक्षण
. के लिए उपयुक्त CRUD अनुमतियां असाइन करें डेटाबेस:अनुदान का चयन करें, अद्यतन करें, परीक्षण पर हटाएं। * '<उपयोगकर्ता नाम>' @ 'लोकलहोस्ट';
-
यह ध्यान रखना महत्वपूर्ण है कि ये विशेषाधिकार केवल
परीक्षण
. पर लागू होते हैं डेटाबेस, यदि आप किसी एप्लिकेशन के लिए उपयोगकर्ता बना रहे हैं जैसे किphpMyAdmin
, आपको उपयोगकर्ता कोरूट
. प्रदान करने की आवश्यकता है अनुमतियाँ। -
यदि आप किसी विशेष उपयोगकर्ता को हटाने का निर्णय लेते हैं, तो निम्न क्वेरी चलाएँ:
ड्रॉप यूजर '<यूजरनेम>'@'लोकलहोस्ट';
-
निम्नलिखित क्वेरी चलाकर यह सुनिश्चित करने के लिए विशेषाधिकार तालिका को पुनः लोड करें कि किए गए परिवर्तन लागू और सक्रिय हैं:
फ्लश विशेषाधिकार;
कस्टम MySQL कॉन्फ़िगरेशन
अब आप MySQL के लिए एक सुरक्षित कस्टम कॉन्फ़िगरेशन सेटअप कर सकते हैं जो अतिरिक्त सुरक्षा कॉन्फ़िगरेशन विकल्प प्रदान करता है।
-
वैश्विक MySQL कॉन्फ़िगरेशन फ़ाइल
/etc/mysql/my.cnf
में स्थित है , सभी कस्टम वैश्विक कॉन्फ़िगरेशन को कॉन्फ़िगरेशन फ़ाइल में सेट किया जाना है। -
कस्टम कॉन्फ़िगरेशन को mysqld (MySQL डेमॉन) के लिए निर्दिष्ट करने की आवश्यकता है, छवि में प्रदर्शित विकल्प कस्टम सुरक्षा कॉन्फ़िगरेशन हैं।
<टेम्पलेट x-if=visible><टेम्पलेट x-if=$isMobile()> <टेम्पलेट x-if=!$isMobile()> <टेम्पलेट x-if=खुला>टेम्पलेट> टेम्पलेट>
-
कस्टम कॉन्फ़िगरेशन जोड़ने के बाद, आपको
mysql
. को पुनरारंभ करना होगा सेवा यह सुनिश्चित करने के लिए कि सभी परिवर्तन लागू हैं।systemctl mysql को रीस्टार्ट करें
MySQL सुरक्षा का ऑडिट करना
अब आप MySAT नामक टूल का उपयोग करके MySQL सर्वर की सुरक्षा का ऑडिट कर सकते हैं। MySAT डेटाबेस कॉन्फ़िगरेशन और सुरक्षा नीतियों का विश्लेषण करने के लिए कई परीक्षण करता है। MySAT आकलन करने और इसलिए MySQL डेटाबेस सुरक्षा को बढ़ाने में मदद करता है। MySAT एक सरल SQL स्क्रिप्ट है, इसे समझना आसान है और इसे बनाए रखना आसान है। MySAT परिणाम HTML प्रारूप में आउटपुट होते हैं।
-
MySAT Github रिपॉजिटरी को क्लोन करें, निम्न कमांड चलाकर:
git क्लोन https://github.com/meob/MySAT.git
-
निर्देशिका को क्लोन करने के बाद, MySAT निर्देशिका में नेविगेट करें, जहां
mysat.sql
फ़ाइल स्थित है और इसका उपयोग MySQL सर्वर के साथ संयोजन में परिणामों कोMySAT.htm
में आउटपुट करने के लिए किया जाता है फ़ाइल। -
निम्नलिखित कमांड चलाकर सुरक्षा का ऑडिट करें:
mysql --user=
-p --skip-column-names -f MySAT.htm -
जैसा कि संकेत दिया गया है, MySAT को आवश्यक परीक्षण चलाने के लिए MySQL तक रूट एक्सेस की आवश्यकता है, कमांड चलाने के बाद, MySAT.htm फ़ाइल उत्पन्न होती है, MySAT.htm फ़ाइल और
mysat.css
को कॉपी करें। Apache या NGINX सर्वर पर फ़ाइल करें, या उन्हेंscp
. के साथ स्थानीय रूप से डाउनलोड करें , ताकि आप लेखापरीक्षा के परिणामों का विश्लेषण कर सकें।<टेम्पलेट x-if=visible><टेम्पलेट x-if=$isMobile()> <टेम्पलेट x-if=!$isMobile()> <टेम्पलेट x-if=खुला>टेम्पलेट> टेम्पलेट>
-
परिणामों को पढ़ने और समझने में आसान प्रारूप में स्वरूपित किया जाता है, जहां कॉन्फ़िगरेशन की जांच की जाती है और परिणाम उनके वर्तमान कॉन्फ़िगरेशन के आधार पर रंग कोडित होते हैं और यह MySQL सर्वर की सुरक्षा को कैसे प्रभावित करता है। उदाहरण के लिए, एक विफल कॉन्फ़िगरेशन जांच का रंग नारंगी रंग में कोडित होता है और एक पास किए गए चेक का रंग हरे रंग में कोडित होता है।
-
ऑडिट रिपोर्ट से पता चलता है कि किन कॉन्फ़िगरेशन को बदलने या संशोधित करने की आवश्यकता है और आपको MySQL सर्वर की समग्र सुरक्षा की एक शीर्ष स्तरीय तस्वीर के साथ प्रस्तुत करता है।