लिनक्स के लिए 12 MySQL / MariaDB सुरक्षा सर्वोत्तम अभ्यास


MySQL दुनिया का सबसे लोकप्रिय ओपन सोर्स डेटाबेस सिस्टम है और मारियाडीबी (MySQL का एक कांटा) दुनिया का सबसे तेजी से बढ़ता ओपन सोर्स डेटाबेस सिस्टम है। MySQL सर्वर को स्थापित करने के बाद, यह डिफ़ॉल्ट कॉन्फ़िगरेशन में असुरक्षित है, और इसे सुरक्षित करना सामान्य डेटाबेस प्रबंधन में आवश्यक कार्यों में से एक है।

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

इस गाइड में, हम लिनक्स के लिए उपयोगी MySQL/MariaDB सुरक्षा सर्वोत्तम अभ्यास की व्याख्या करेंगे।

1. सुरक्षित MySQL स्थापना

डेटाबेस सर्वर को सुरक्षित करने की दिशा में, MySQL सर्वर को स्थापित करने के बाद यह पहला अनुशंसित कदम है। यह स्क्रिप्ट आपसे पूछकर आपके MySQL सर्वर की सुरक्षा में सुधार करने की सुविधा देती है:

  • set a password for the root account, if you didn’t set it during installation.
  • disable remote root user login by removing root accounts that are accessible from outside the local host.
  • remove anonymous-user accounts and test database which by default can be accessed by all users, even anonymous users.
# mysql_secure_installation

इसे चलाने के बाद, रूट पासवर्ड सेट करें और [ हां/Y ] दर्ज करके प्रश्नों की श्रृंखला का उत्तर दें और [Enter] दबाएं।

2. बाइंड डेटाबेस सर्वर को लूपबैक पते पर

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

# vi /etc/my.cnf	                   [RHEL/CentOS]	
# vi /etc/mysql/my.conf                    [Debian/Ubuntu] 
OR
# vi /etc/mysql/mysql.conf.d/mysqld.cnf    [Debian/Ubuntu] 

नीचे दी गई पंक्ति को [mysqld] अनुभाग के अंतर्गत जोड़ें।

bind-address = 127.0.0.1

3. MySQL में LOCAL INFILE को अक्षम करें

सुरक्षा सख्त करने के भाग के रूप में, आपको [mysqld] सेक्शन के तहत निम्नलिखित निर्देश का उपयोग करके MySQL के भीतर अंतर्निहित फाइल सिस्टम तक पहुँचने से रोकने के लिए local_infile को अक्षम करना होगा।

local-infile=0

4. MYSQL डिफ़ॉल्ट पोर्ट बदलें

पोर्ट चर MySQL पोर्ट नंबर सेट करता है जिसका उपयोग टीसीपी/आईपी कनेक्शन पर सुनने के लिए किया जाएगा। डिफ़ॉल्ट पोर्ट संख्या 3306 है, लेकिन आप इसे [mysqld] अनुभाग के तहत बदल सकते हैं जैसा कि दिखाया गया है।

Port=5000

5. MySQL लॉगिंग सक्षम करें

लॉग एक सर्वर पर क्या होता है, यह समझने के लिए सबसे अच्छे तरीकों में से एक है, किसी भी हमले के मामले में, आप लॉग फ़ाइलों से किसी भी घुसपैठ से संबंधित गतिविधियों को आसानी से देख सकते हैं। आप [mysqld] अनुभाग के तहत निम्न चर जोड़कर MySQL लॉगिंग को सक्षम कर सकते हैं।

log=/var/log/mysql.log

6. MySQL फाइलों पर उचित अनुमति सेट करें

सुनिश्चित करें कि आपके पास सभी mysql सर्वर फ़ाइलों और डेटा निर्देशिकाओं के लिए उपयुक्त अनुमतियाँ हैं। /etc/my.conf फ़ाइल को केवल रूट करने योग्य होना चाहिए। यह अन्य उपयोगकर्ताओं को डेटाबेस सर्वर कॉन्फ़िगरेशन बदलने से रोकता है।

# chmod 644 /etc/my.cnf

7. MySQL शैल इतिहास हटाएं

MySQL शेल पर आपके द्वारा निष्पादित सभी कमांड mysql क्लाइंट द्वारा एक हिस्ट्री फाइल में स्टोर की जाती हैं: ~/.mysql_history । यह खतरनाक हो सकता है, क्योंकि आपके द्वारा बनाए जाने वाले किसी भी उपयोगकर्ता खाते के लिए, शेल पर टाइप किए गए सभी उपयोगकर्ता नाम और पासवर्ड इतिहास फ़ाइल में दर्ज किए जाएंगे।

# cat /dev/null > ~/.mysql_history

8. कमांडलाइन से MySQL कमांड न चलाएं

जैसा कि आप पहले से ही जानते हैं, टर्मिनल पर आपके द्वारा टाइप किए गए सभी कमांड एक इतिहास फ़ाइल में संग्रहीत हैं, जो आपके द्वारा उपयोग किए जा रहे शेल के आधार पर (उदाहरण के लिए ~/.bash_history bash के लिए)। एक हमलावर जो इस इतिहास फ़ाइल तक पहुंच प्राप्त करने का प्रबंधन करता है, वह वहां दर्ज किसी भी पासवर्ड को आसानी से देख सकता है।

यह कमांड लाइन पर पासवर्ड टाइप करने के लिए दृढ़ता से अनुशंसित नहीं है, कुछ इस तरह से:

# mysql -u root -ppassword_

जब आप कमांड हिस्ट्री फाइल के आखिरी सेक्शन को चेक करेंगे, तो आपको ऊपर टाइप किया गया पासवर्ड दिखाई देगा।

# history 

MySQL को जोड़ने का उपयुक्त तरीका है।

# mysql -u root -p
Enter password:

9. अनुप्रयोग-विशिष्ट डेटाबेस उपयोगकर्ताओं को परिभाषित करें

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

# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE osclass_db;
MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY '[email %!2';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

और हमेशा उन उपयोगकर्ता खातों को हटाना याद रखें जो अब सर्वर पर किसी भी एप्लिकेशन डेटाबेस का प्रबंधन नहीं कर रहे हैं।

10. अतिरिक्त सुरक्षा प्लगइन्स और लाइब्रेरीज़ का उपयोग करें

MySQL के लिए कई सुरक्षा प्लगइन्स शामिल हैं: संवेदनशील जानकारी के लिए mysql सर्वर, पासवर्ड-सत्यापन और सुरक्षित भंडारण से जुड़ने के लिए ग्राहकों द्वारा प्रमाणित प्रयास, जो सभी मुफ्त संस्करण में उपलब्ध हैं।

आप यहाँ और अधिक जानकारी प्राप्त कर सकते हैं: https://dev.mysql.com/doc/refman/5.7/en/security-plug/.html

11. MySQL पासवर्ड नियमित रूप से बदलें

यह सूचना/अनुप्रयोग/सिस्टम सुरक्षा सलाह का एक सामान्य टुकड़ा है। आप यह कितनी बार करते हैं यह पूरी तरह से आपकी आंतरिक सुरक्षा नीति पर निर्भर करेगा। हालाँकि, यह "स्नूपर्स" को रोक सकता है, जो आपके mysql सर्वर तक पहुँच प्राप्त करने से लेकर आपकी गतिविधि पर लंबे समय से नज़र रख रहा है।

MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

12. MySQL सर्वर पैकेज को नियमित रूप से अपडेट करें

विक्रेता के भंडार से सुरक्षा अद्यतन और बग फिक्स के साथ रखने के लिए नियमित रूप से mysql/mariadb संकुल को अपग्रेड करने की अत्यधिक अनुशंसा की जाती है। सामान्य रूप से डिफ़ॉल्ट ऑपरेटिंग सिस्टम रिपॉजिटरी में पैकेज पुराने हैं।

# yum update
# apt update

Mysql/mariadb सर्वर में कोई भी परिवर्तन करने के बाद, सेवा को हमेशा पुनरारंभ करें।

# systemctl restart mariadb		#RHEL/CentOS
# systemctl restart mysql		#Debian/Ubuntu

बस इतना ही! हम नीचे टिप्पणी फ़ॉर्म के माध्यम से आपसे सुनना पसंद करते हैं। उपरोक्त सूची में गायब किसी भी MySQL/MariaDB सुरक्षा युक्तियों को हमारे साथ साझा करें।