आप जैसे पाठक MUO का समर्थन करने में मदद करते हैं। जब आप हमारी साइट पर लिंक का उपयोग करके खरीदारी करते हैं, तो हम संबद्ध कमीशन अर्जित कर सकते हैं। और पढ़ें।

शुरुआती पैठ परीक्षक, विशेष रूप से, सामान्य रूप से डेटाबेस सुरक्षा पर कम जोर देते हैं। डेटाबेस कॉन्फ़िगरेशन और सुरक्षा परीक्षणों के बिना कोई एप्लिकेशन सुरक्षित नहीं हो सकता है। आप पहले से ही एक डेटाबेस प्रबंधन प्रणाली MySQL सॉफ़्टवेयर का उपयोग कर रहे होंगे, तो आप इसे और अधिक सुरक्षित कैसे बना सकते हैं? यहां सात चरण हैं जिनका आपको पालन करने की आवश्यकता है।

1. रिमोट कनेक्शन के बजाय एसएसएच टनलिंग का प्रयोग करें

MySQL सेवा डिफ़ॉल्ट रूप से पोर्ट 3306 पर चलती है। जब आप MySQL इंस्टॉल करते हैं, तो आप देखेंगे कि पोर्ट 3306 सभी कनेक्शनों के लिए लिसनिंग मोड में है। जैसा कि यह खड़ा है, MySQL पोर्ट बाहरी दुनिया के लिए खुला है। इसलिए आपको MySQL सेवा को केवल स्थानीय पते पर सुनने के लिए सेट करना चाहिए।

चूंकि सर्वर आमतौर पर लिनक्स वितरण पर चलते हैं, नीचे दिए गए उदाहरण डेबियन वितरण पर आधारित हैं। दूरस्थ कनेक्शन के बजाय SSH टनलिंग के लिए और बाहरी दुनिया के लिए डिफ़ॉल्ट पोर्ट को बंद करने के लिए आपको जिस फ़ाइल का उपयोग करने की आवश्यकता है, वह है

instagram viewer
/etc/mysql/my.cnf. इस फ़ाइल में, आपको एक फ़ील्ड खोलने की आवश्यकता है जिसे कहा जाता है [mysqld] और निम्न आदेश लिखें:

[mysqld]
बाँधना-पता = 127.0.0.1

इस प्रक्रिया के बाद, इस फ़ाइल को सहेजना न भूलें और निम्न आदेश के साथ सेवा को पुनरारंभ करें:

sudo systemctl mysqld को पुनरारंभ करें
# या
सुडोsystemctlपुनः आरंभ करेंmariadb।सेवा

इसके साथ, MySQL सेवा केवल स्थानीय पते को ही सुनेगी।

यदि आप मारियाडीबी का उपयोग कर रहे हैं, तो आप जांच भी कर सकते हैं /etc/mysql/mariadb.conf.d/50-server.cnf और जांचें कि क्या इसकी कोई परिभाषा है बाँध-पता.

अब जब आपके पास बाइंड-एड्रेस सेट हो गया है 127.0.0.1, जो लोकलहोस्ट है, आप एक एनएमएपी स्कैन चला सकते हैं और आउटपुट की जांच कर सकते हैं:

आप MySQL पोर्ट को 127.0.0.1 के रूप में देख सकते हैं जो आपके द्वारा देखे जाने वाले लोकलहोस्ट का प्रतिनिधित्व करता है। यह सुनिश्चित करने के लिए कि यह काम करता है, आप बाइंड एड्रेस को फिर से आज़मा सकते हैं और बदल सकते हैं:

[mysqld]
बाँधना-पता = 127.5.5.1

फिर सेव करें /etc/mysql/my.cnf फ़ाइल और MySQL सेवा को पुनरारंभ करें। यदि आप Nmap स्कैन करते हैं फिर से इस स्तर पर, आपको यह बाइंड एड्रेस लोकलहोस्ट पर नहीं दिखना चाहिए।

एक बार जब आप यह जान जाते हैं कि यह काम करता है, तो पहले चरण से सेटिंग्स पर वापस जाएं और बाइंड एड्रेस को वापस 127.0.0.1 पर सेट करें और फिर से सेव करें।

2. एक स्थानीय फ़ाइल एक्सेस बैरियर सेट करें

MySQL स्थानीय फाइल सिस्टम के साथ संवाद कर सकता है। प्रश्नों के साथ, आप स्थानीय फाइल सिस्टम में टेक्स्ट की सामग्री देख सकते हैं या डिस्क पर क्वेरी परिणाम जला सकते हैं। इस सुविधा का उपयोग करने वाले दुर्भावनापूर्ण हमलावरों को रोकने के लिए, आपको MySQL को स्थानीय फाइल सिस्टम से संचार करने से रोकना होगा।

सावधानी बरतने के लिए आप स्थानीय-इनफाइल नामक फ़ंक्शन का उपयोग कर सकते हैं। उदाहरण के लिए, कल्पना करें कि आपके पास "/etc/secretfile.txt" नाम की एक फ़ाइल है और इस फ़ाइल में आपके पास एक पासवर्ड है। यदि आपकी /etc/mysql/my.cnf फ़ाइल में स्थानीय-इनफाइल फ़ंक्शन का मान 1 है, तो पहुंच खुली है। तो आप secretfile.txt फ़ाइल तक पहुँच सकते हैं।

स्थानीय-इनफाइल फ़ंक्शन का मान 1 है। होने वाले परिवर्तनों के लिए MySQL डेटाबेस को पुनरारंभ करें। अब, निम्न आदेश के साथ MySQL से कनेक्ट करें और जांचें कि क्या आप secretfile.txt फ़ाइल देख सकते हैं:

चुननाफाइल लोड करो("/etc/secretfile.txt");

आपके कंप्यूटर पर किसी फ़ाइल में जानकारी को कैप्चर करना कठिन नहीं है।

इस समस्या को हल करने के लिए, अपनी /etc/mysql/my.cnf फ़ाइल में लोकल-इनफाइल वैल्यू को निम्नानुसार बदलें:

[mysqld]
स्थानीय-इनफाइल = 0

MySQL सेवा को पुनरारंभ करें। MySQL से पुन: कनेक्ट करें और पिछले चरण को दोहराएं; अब आपको फ़ाइल सामग्री देखने में सक्षम नहीं होना चाहिए।

यदि उपयोगकर्ताओं के पास पहले से ही स्थानीय फ़ाइलों पर पढ़ने और लिखने की अनुमति नहीं है, तो वे इस फ़ाइल को नहीं देख पाएंगे। हालाँकि, यह अभी भी कुछ है जिसे आपको पैठ परीक्षण और डेटाबेस सुरक्षा में जाँचना चाहिए।

3. एप्लिकेशन उपयोगकर्ता और पासवर्ड सेट करें

डेटाबेस प्रबंधन उपयोगकर्ता और डेटाबेस तक पहुँचने वाले MySQL उपयोगकर्ता एक दूसरे से अलग होने चाहिए। दूसरे शब्दों में, अनुप्रयोगों को रूट उपयोगकर्ताओं के साथ MySQL से जोड़ना बेहद खतरनाक है। यदि संभव हो, तो उन अनुप्रयोगों के उपयोगकर्ताओं को परिभाषित करें जो प्रदर्शन नहीं करते हैं अद्यतन या INSERT संचालन अलग से।

इस बिंदु पर विचार करने वाली एक और बात उपयोगकर्ता पासवर्ड है। जैसा कि लगभग हर क्षेत्र में होता है, MySQL उपयोगकर्ताओं के लिए पासवर्ड जटिल और अप्रत्याशित होने चाहिए। यदि आपको इसके लिए सहायता की आवश्यकता है, तो आप उपयोग कर सकने वाले उत्कृष्ट पासवर्ड जेनरेटर सिस्टम हैं।

4. अनाम उपयोगकर्ता हटाएं

जब आप डिफ़ॉल्ट रूप से MySQL स्थापित करते हैं, तो कुछ अनाम उपयोगकर्ता होते हैं। आपको इन्हें हटाने और उनकी पहुंच को अवरुद्ध करने की आवश्यकता है। एक सुरक्षित MySQL सर्वर के लिए, आपको निम्न क्वेरी के परिणामस्वरूप कोई प्रतिक्रिया नहीं मिलनी चाहिए:

चुनना * से mysql.उपयोगकर्ता कहाँउपयोगकर्ता="";
# उदाहरण आउटपुट
खाली तय करना (0.001 सेकंड)

यदि कोई परिणाम हैं, तो आपको इन अनाम उपयोगकर्ताओं को हटा देना चाहिए। उदाहरण के लिए, यदि "लोकलहोस्ट" नामक वातावरण में "एनोनुसर" नाम का एक अनाम खाता था, तो आपको इस खाते को हटाने के लिए निम्नलिखित कमांड का उपयोग करना होगा:

ड्रॉप उपयोगकर्ता 'anonuser'@'स्थानीय होस्ट';

5. MySQL स्थानीय फ़ाइल अनुमतियों की जाँच करें

कल्पना कीजिए कि आप एक डेटाबेस व्यवस्थापक हैं और आप एक सप्ताह पहले के डेटा पर वापस लौटना चाहते हैं। इस स्थिति में, आपको SSH के माध्यम से डेटाबेस सर्वर से जुड़ना पड़ सकता है और अपनी इच्छित MySQL फ़ाइलों को बदलना पड़ सकता है। ऐसा करते समय, आपने लिनक्स के मूल उपयोक्ता विशेषाधिकारों का प्रयोग किया होगा; यानी, डेटा फ़ाइलों का स्वामित्व और अनुमतियां बदल सकती हैं. आप ऐसा नहीं चाहते।

दी गई अनुमतियों की जांच करने के लिए /var/lib/mysql निर्देशिका देखें। आपको यहां यह जांचने की आवश्यकता है कि क्या सभी फाइलों का स्वामी MySQL उपयोगकर्ता है। निम्न कमांड ट्रिक करेगी:

सुडो एलएस -अल /वर/lib/mysql

फ़ाइलों की पढ़ने और लिखने की अनुमति केवल MySQL उपयोगकर्ता के लिए ही होनी चाहिए। किसी अन्य उपयोगकर्ता के पास कोई अनुमति नहीं होनी चाहिए।

6. MySQL एसएसएल का प्रयोग करें

एक ठोस उदाहरण के बारे में सोचना MySQL और SSL के उपयोग को समझने का सबसे अच्छा तरीका है। कल्पना कीजिए कि एबीसी क्षेत्र में सर्वरों में से एक, जहां कई अलग-अलग सर्वर हैं, दुर्भावनापूर्ण हैकर्स द्वारा कब्जा कर लिया गया है। हैकर्स एबीसी क्षेत्र में एक आंतरिक स्कैन करेंगे। इस तरह वे सर्वर के बारे में जानकारी एकत्र करते हैं।

यदि वे इस प्रक्रिया के दौरान एक MySQL सर्वर का पता लगाते हैं, तो वे प्रदर्शन कर सकते हैं मैन-इन-द-मिडिल (MitM) टारगेट सर्वर पर अटैक करता है, जिसका अर्थ है कि वे एप्लिकेशन और इस सर्वर से कनेक्ट होने वाले उपयोगकर्ताओं की सत्र जानकारी चुरा सकते हैं। इससे बचने का एक बेहतरीन उपाय है MySQL सर्वर पर SSL सक्षम करें.

7. लॉग और इतिहास फ़ाइलें

आप विश्लेषण करने और त्रुटियों को खोजने के लिए MySQL लॉग का उपयोग करते हैं। my.cnf दर्ज करके आप संपादित कर सकते हैं कि ये लॉग कहाँ रखे गए हैं:

# /आदि/mysql/my.cnf
[mysqld]
लकड़ी का लट्ठा =/var/लकड़ी का लट्ठा/mylogfiles

आप अपनी इच्छानुसार mylogfiles का नाम या स्थान बदल सकते हैं। एक और फाइल है जिसे आपको जांचना है। जब आप लिनक्स टर्मिनल में MySQL सर्वर से जुड़ते हैं और विभिन्न कमांड टाइप करते हैं, तो ये प्रश्न mysql_history फ़ाइल में सहेजे जाते हैं। यदि आप निम्न आदेश चलाते हैं, तो आप MySQL टर्मिनल में उपयोग किए जा रहे प्रश्नों को देख सकते हैं:

बिल्ली ~/.mysql_history

यदि आप इस बारे में जानकारी नहीं देना चाहते हैं कि आप सर्वर के अंदर किस प्रकार की क्वेरी कर रहे हैं, तो आपको इस फ़ाइल की सामग्री को हटाने की आवश्यकता है। फ़ाइल की सामग्री को हटाने के लिए निम्न कमांड का उपयोग करें:

सुडो गूंज "साफ किया हुआ"> ~/.mysql_history

फिर आप फ़ाइल सामग्री को फिर से देख सकते हैं।

जो भी डेटाबेस का मालिक है वह सिस्टम का मालिक है

कोई फर्क नहीं पड़ता कि आप किस उद्योग में काम करते हैं, आपके डेटाबेस में हमेशा महत्वपूर्ण जानकारी होती है। यह आपके ग्राहक, बैंक खाते और पासवर्ड हो सकते हैं। दुर्भावनापूर्ण हमलावर इनका महत्व और मूल्य जानते हैं। डेटाबेस डेवलपर्स और प्रशासकों को हैकर्स को मात देने के लिए कम से कम उन मूल बातों को जानने की जरूरत है, जिनका वे पैठ परीक्षणों में सामना करेंगे।