Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

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

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

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

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

<एच3>1. सुरक्षित MySQL इंस्टालेशन

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

  • रूट खाते के लिए पासवर्ड सेट करें, अगर आपने इसे स्थापना के दौरान सेट नहीं किया है।
  • स्थानीय होस्ट के बाहर से पहुंच योग्य रूट खातों को हटाकर दूरस्थ रूट उपयोगकर्ता लॉगिन अक्षम करें।
  • अज्ञात-उपयोगकर्ता खातों और परीक्षण डेटाबेस को हटा दें, जिसे डिफ़ॉल्ट रूप से सभी उपयोगकर्ताओं, यहां तक ​​कि अनाम उपयोगकर्ताओं द्वारा भी एक्सेस किया जा सकता है।
# mysql_secure_installation

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

<एच3>2. डेटाबेस सर्वर को लूपबैक एड्रेस से बाइंड करें

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

# vi /etc/my.cnf [RHEL/CentOS] # vi /etc/mysql/my.conf [डेबियन/उबंटू] या# vi /etc/mysql/mysql.conf.d/mysqld.cnf [डेबियन /उबंटू] 

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

बाइंड-एड्रेस =127.0.0.1
<एच3>3. MySQL में LOCAL INFILE को अक्षम करें

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

लोकल-इनफाइल=0
<एच3>4. MYSQL डिफ़ॉल्ट पोर्ट बदलें

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

पोर्ट=5000

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

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

log=/var/log/mysql.log
<एच3>6. MySQL फ़ाइलों पर उचित अनुमति सेट करें

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

# chmod 644 /etc/my.cnf
<एच3>7. MySQL शेल इतिहास हटाएं

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

# cat /dev/null> ~/.mysql_history

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

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

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

# mysql -u root -ppassword_

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

# इतिहास 

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

# mysql -u root -pपासवर्ड दर्ज करें:

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

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

# mysql -u root -pMariaDB [(none)]> डेटाबेस बनाएं [(none)]> osclass_db पर सभी विशेषाधिकार प्रदान करें। 

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

<एच3>10. अतिरिक्त सुरक्षा प्लगइन्स और लाइब्रेरी का उपयोग करें

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

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

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

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

MariaDB [(none)]> mysql का उपयोग करें;<मजबूत शैली ="रंग:पीला;">मारियाडीबी [(कोई नहीं)] अद्यतन उपयोगकर्ता सेट पासवर्ड=पासवर्ड('आपका पासवर्ड यहां ') जहां उपयोगकर्ता ='रूट' और होस्ट ='लोकलहोस्ट'; <मजबूत शैली ="रंग:पीला;"> मारियाडीबी [(कोई नहीं)]>  फ्लश विशेषाधिकार;
<एच3>12. MySQL सर्वर पैकेज को नियमित रूप से अपडेट करें

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

# यम अपडेट# उपयुक्त अपडेट

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

# systemctl रीस्टार्ट mariadb #RHEL/CentOS# systemctl रिस्टार्ट mysql #Debian/Ubuntu

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं एक MySQL डेटाबेस में संग्रहीत PHP को कैसे निष्पादित करूं?

  2. SQL कथन में सभी मापदंडों का उपयोग नहीं किया गया था (पायथन, MySQL)

  3. MySQL प्रतिकृति के लिए विफलता का परिचय - 101 ब्लॉग

  4. Laravel 5 PDOException ड्राइवर नहीं ढूँढ सका

  5. कमांड लाइन के माध्यम से लिनक्स पर एक MySQL उपयोगकर्ता को अनुमतियाँ प्रदान करें