يعد MySQL أحد أكثر أنظمة إدارة قواعد البيانات العلائقية شيوعًا وهو بمثابة الفوز بالجائزة الكبرى للمهاجمين الذين يحاولون التسلل إلى قواعد البيانات. يمكن أن يحتوي خادم قاعدة بيانات MySQL المثبت حديثًا على العديد من نقاط الضعف والثغرات. نظرًا لأن أمان البيانات له أهمية كبيرة ، فمن الضروري فهم كل جانب من جوانب أمان MySQL.

تركز هذه المقالة على تدقيق وأمن قاعدة بيانات MySQL وتقدم تسع نصائح لتعزيز أمانها.

1. تجنب منح الامتيازات غير الضرورية

MySQL يسمح بالعديد من عبارات الامتياز التي يمكن أن تؤدي ، عند تعيينها دون داع إلى مستخدم محروم ، إلى قراءة / كتابة الملفات وتقويض امتيازات المستخدم الأخرى. بعض عبارات الامتياز التي يحتمل أن تكون خطرة هي FILE و GRANT و SUPER و ALTER و DELETE و SHUTDOWN وما إلى ذلك. يمكنك قراءة المزيد عنها من وثائق MySQL الرسمية. وبالتالي ، لا تقم بتعيين امتيازات المستخدم المتميز مثل FILE و GRANT و SUPER و PROCESS للحسابات غير الإدارية. يمكنك إبطال هذه الأذونات العامة وقاعدة البيانات والجدول غير الضرورية على النحو التالي:

REVOKE ALL ON *. * FROM 'user_name' @ 'host_name' ؛ # الامتيازات العالمية
instagram viewer
REVOKE CREATE، DROP ON database_name. * FROM 'user_name' @ 'host_name'؛ # امتيازات قاعدة البيانات
REVOKE INSERT ، UPDATE ، DELETE ON database_name.table_name FROM 'user_name' @ 'host_name' ؛ # امتيازات الجدول
امتيازات التدفق

2. تقييد عمليات تسجيل الدخول عن بُعد

يسهل الوصول عن بعد مهمة مسؤولي قواعد البيانات ، لكنه يعرض الخادم لنقاط الضعف والاستغلال المحتملة. يمكنك تعطيل الوصول عن بعد لجميع أنواع حسابات مستخدمي MySQl عن طريق إضافة متغير تخطي الشبكة إلى ملف التكوين الرئيسي وإعادة تشغيل الخدمة.

[mysqld]
تخطي الشبكات
إعادة تشغيل خدمة sudo mysql

وبالمثل ، يجب عليك تعطيل الوصول إلى حساب الجذر ، إن لم يكن كل ذلك لتقييد عمليات تسجيل الدخول عن بُعد لحساب الجذر. هذا الاحتياط يمنع فرض حساب جذر MySQL بوحشية.

mysql> حذف من mysql.user حيث المستخدم = 'root' والمضيف ليس في ('localhost'، '127.0.0.1'، ':: 1')؛ mysql> تدفق الامتيازات ؛ 

3. تعطيل الوظائف (load_file، outfile، dumpfile)

هناك إجراء احترازي آخر لتأمين MySQL ضد إدخال الملفات المحلية وهو تعطيل الوظائف التي يمكن الوصول إليها فقط عبر امتياز منح FILE. يعد FILE خيارًا يتيح للمستخدمين ذوي الامتيازات المنخفضة مع خيارات الأوامر العامة لقراءة الملفات أو كتابتها على الخادم.

  • تحميل الملف

تقوم الدالة load_file بتحميل محتوى الملف من الخادم كسلسلة. على سبيل المثال ، سيقوم الأمر التالي بتحميل كل المحتوى من ملف /etc/passwd ملف على النحو التالي:

حدد load_file ('/ etc / passwd')
  • ملف

وبالمثل ، تكتب وظيفة outfile المحتوى إلى ملفات الخادم المحلي. يمكن للمهاجمين استخدام هذه الوظيفة لكتابة حمولة إلى الملف في الخادم ، على النحو التالي:

حدد "Local File SQL Injection" في الملف الخارجي "/tmp/file.txt" ؛
cat /tmp/file.txt

انتاج:

حقن SQL للملف المحلي
  • ملف مهمل

تستخدم هذه الوظيفة سبب التحديد للكتابة إلى الملف دون إعادة الإخراج إلى الشاشة.

cat /tmp/file.txt
حدد "Hello world!" إلى ملف قلابة "/ tmp / العالم" ؛

انتاج:

الاستعلام جيد ، صف واحد متأثر (0.001 ثانية)

يمكنك تعطيل هذه الوظائف عن طريق سحب امتياز FILE كما يلي:

إبطال FILE في *. * من 'user_name' @ 'localhost' ؛

متعلق ب: دليل المبتدئين إلى Metasploit في Kali Linux (مع أمثلة عملية)

4. تعطيل المنفذ الافتراضي

نعلم أن خدمات MySQL تعمل على المنفذ 3306 ، ويقوم المهاجمون بفحص المنافذ للتحقق من الخدمات التي تعمل على الشبكة. لإضافة الأمان عن طريق الغموض وتغيير منفذ MySQL الافتراضي عن طريق تحرير متغير نظام المنفذ في ملف التكوين الرئيسي الخاص به ، ستحتاج إلى إدخال ما يلي:

vim /etc/mysql/my.cnf
المنفذ = XXXX
إعادة تشغيل خدمة sudo mysql

5. تجنب أحرف البدل في أسماء الحسابات

تتكون أسماء الحسابات في MySQL من جزأين هما مستخدم واسم مضيف "user_name" @ "host_name". يمكّن المسؤول من إنشاء حسابات للمستخدمين بنفس الاسم الذين يتصلون من مضيفين مختلفين. ومع ذلك ، يسمح الجزء المضيف من اسم الحساب باتفاقيات أحرف البدل التي يمكن أن تكون نقطة وصول إلى قاعدة البيانات من أي مكان.

الاستخدام الاختياري لاسم المضيف أو قيمة عنوان IP يعادل "user_name" @ "٪" حيث يتطابق٪ مع نمط MySQL الذي يطابق عملية LIKE ، ويعني٪ أي اسم مضيف. وفي الوقت نفسه ، الوصول من "192.168.132.٪" يعني أي محاولة من شبكة الفئة C. علاوة على ذلك ، يمكن لأي شخص الوصول إلى قاعدة البيانات عن طريق تسمية جزء المضيف باسم "192.18.132.mysql.com".

لتجنب مثل هذه المحاولات ، تسمح MySQL بتحديد قناع شبكة بقيمة المضيف لتحديد أجزاء الشبكة لعنوان IP:

client-ip_add & netmask = host_name

بناء الجملة لإنشاء اسم مضيف هو host_ip / netmask:

إنشاء مستخدم 'jhon'@'192.168.132.0/255.255.255.0' ؛ 

قيمة المضيف أعلاه تمكن المستخدم يوحنا للوصول إلى قاعدة البيانات من أي IP ضمن النطاق 192.168.132.0-192.168.132.255. وبالمثل ، فإن قيم المضيف 192.168.132.0/255.0.0.0 و 192.168.132.0/255.255.0.0 ستسمح للمضيفين من شبكات الفئة A و B. بينما سيسمح 192.168.132.5 بالوصول من عنوان IP المحدد فقط.

6. تعطيل الوصول الصريح

اسم المستخدم في MySQL هو إما اسم تقبل به قواعد البيانات الاتصالات الواردة أو اسم مستخدم فارغ "@" host_name "ينشئ مستخدمًا مجهولاً. ومع ذلك ، يمكن لوجود مستخدم مجهول الاستفادة من المهاجمين للوصول إلى خادم قاعدة البيانات. بالإضافة إلى ذلك ، فإن إصدارات MySQL قبل MySQL 5.7 ، تنشئ مجموعة مجهولة من المستخدمين ، ولا يزال التثبيت بعد ترقية الإصدار يضيف هؤلاء المستخدمين.

حدد المستخدم والمضيف وكلمة المرور من mysql.user حيث المستخدم مثل '' ؛

يمكنك ملاحظة أن أعمدة المستخدم وكلمة المرور فارغة ، وأن الوصول يقتصر على المضيف المحلي. ومع ذلك ، لا تريد أن يصل أي شخص إلى قاعدة البيانات. استخدم الأمر التالي لحذف المستخدمين المجهولين:

إسقاط المستخدم "" @ "localhost"
امتيازات التدفق

7. قم بتعيين الحساب غير الجذر كمالك أو مجموعة

لا يرتبط إعداد حساب مستخدم غير جذري بمستخدم جذر MySQL. يتيح تثبيت MySQL في أنظمة Linux / Unix من حزم tar و tar.gz تشغيل الخادم من قبل أي مستخدم ضعيف الامتياز. يعد هذا عيبًا أمنيًا لأن أي مستخدم لديه خيار منح FILE يمكنه تحرير أو إنشاء ملفات على الخادم. ومع ذلك ، فإنه يقوم بإرجاع خطأ عندما يحاول المستخدم الوصول إليه بدون ملف -المستخدم = الجذر خطأ.

يمكنك تجنب ذلك من خلال ممارسة قاعدة الإبهام للوصول إلى خادم قاعدة البيانات كمستخدم Linux منفصل. لتشغيل mysqld كمستخدم Linux عادي ، أوقف الخادم وقم بتغييره قراءة / كتابة أذونات من خادم MySQl إلى mysql ، على النحو التالي:

chown -R mysql / path / إلى / mysql / datadir

افتح ملف التكوين الرئيسي لـ MySQL ، وأضف مستخدم mysql جديدًا ، وأعد تشغيل الخدمة لتجنب الوصول غير المطلوب للخادم:

vim /etc/mysql/my.cnf
المستخدم = الخلية
إعادة تشغيل خدمة sudo mysql

8. تعيين كلمة المرور لحساب الجذر

يؤدي تثبيت MySQL عبر غلاف تفاعلي في توزيعات Linux التي تستند إلى Debian إلى إنشاء حساب المستخدم الجذر ويطلب منك تعيين كلمة مرور. ومع ذلك ، لا يحدث هذا في التثبيت غير التفاعلي للقشرة والتوزيعات القائمة على Red-Hat. كما هو مذكور أعلاه ، يمكن للمستخدم غير الجذر لجهاز Linux الوصول إلى حساب مستخدم mysql باستخدام ملف -المستخدم = الجذر اختيار. يمكنك تجنب ذلك عن طريق تعيين كلمة المرور على النحو التالي:

كلمة مرور sudo mysqladmin
vim /etc/mysql/my.cnf
كلمة المرور =
إعادة تشغيل خدمة sudo mysql

9. تأكد من تشفير البيانات أثناء النقل وفي حالة الراحة

يشكل الاتصال الافتراضي غير المشفر بين العميل والخادم خطر اعتراض البيانات من قبل أي رجل في الوسط. وبالمثل ، فإن بيانات المستخدم غير المشفرة في قاعدة البيانات تخاطر بسرية المستخدم وسلامته. يدعم MySQL تشفير البيانات بين العميل والخادم عبر بروتوكول TLS / SSL ، في حين أن الاتصال غير المشفر مقبول فقط عندما يكون كلا الطرفين المتصلين داخل نفس الشبكة.

تدعم MySQL الآن التشفير في وضع الراحة لحماية البيانات المخزنة في الخادم حتى عند اختراق النظام.

MySQL Advanced Security: احم نفسك

يعد التأكد من حصولك على أعلى مستويات الأمان عبر الإنترنت أمرًا بالغ الأهمية ، وستمنحك هذه المقالة بعض المؤشرات المفيدة في الاتجاه الصحيح. الخطوات المذكورة أعلاه مفيدة لتأمين خادم قاعدة البيانات الخاص بك ، ولكن تعلم كيفية تعيين الحد الأدنى من الأذونات للمستخدمين غير الإداريين ضروري أيضًا.

دليل المبتدئين لكتابة مخططات قاعدة بيانات mySQL

قم بإنشاء قاعدة بيانات mySQL الخاصة بك باستخدام محرر نصوص ومخطط الهيكل الأساسي هذا أو "المخطط".

اقرأ التالي

يشاركسقسقةبريد الالكتروني
مواضيع ذات صلة
  • برمجة
  • حماية
  • برمجة
  • نصائح أمنية
  • حماية
عن المؤلف
رميسة نيازي (15 مقالة منشورة)

رميسة كاتبة مستقلة في MUO. لقد ارتدت العديد من القبعات ، من عالم الرياضيات إلى المتحمسين لأمن المعلومات ، وتعمل الآن كمحلل SOC. تشمل اهتماماتها القراءة والكتابة عن التقنيات الجديدة وتوزيعات Linux وأي شيء يتعلق بأمن المعلومات.

المزيد من Rumaisa Niazi

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك