القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

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

1. استخدم نفق SSH بدلاً من الاتصال عن بعد

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

نظرًا لأن الخوادم تعمل عادةً على توزيعة Linux ، فإن الأمثلة أدناه تستند إلى توزيعة دبيان. الملف الذي تريد استخدامه لنفق SSH بدلاً من الاتصال عن بُعد ولإغلاق المنفذ الافتراضي للعالم الخارجي هو /etc/mysql/my.cnf. في هذا الملف ، تحتاج إلى فتح حقل يسمى [mysqld] واكتب الأمر التالي:

[mysqld]
ربط-العنوان = 127.0.0.1
instagram viewer

بعد هذه العملية ، لا تنس حفظ هذا الملف وإعادة تشغيل الخدمة بالأمر التالي:

أعد تشغيل sudo systemctl mysqld
# أو
سودوsystemctlإعادة تشغيلماريادب.خدمة

باستخدام هذا ، ستستمع خدمة MySQL إلى العنوان المحلي فقط.

إذا كنت تستخدم MariaDB ، فيمكنك أيضًا فحصه /etc/mysql/mariadb.conf.d/50-server.cnf وتحقق مما إذا كان هناك تعريف لـ عنوان ملزم.

الآن بعد أن قمت بتعيين عنوان الربط على 127.0.0.1 ، وهو مضيف محلي، يمكنك إجراء فحص Nmap والتحقق من الإخراج:

يمكنك رؤية منفذ MySQL حيث يمثل 127.0.0.1 المضيف المحلي الذي تراه. يمكنك محاولة تغيير عنوان الربط مرة أخرى للتأكد من أن هذا يعمل:

[mysqld]
ربط-العنوان = 127.5.5.1

ثم احفظ ملف /etc/mysql/my.cnf ملف وإعادة تشغيل خدمة MySQL. إذا قمت بإجراء فحص Nmap مرة أخرى في هذه المرحلة ، يجب ألا ترى هذا العنوان الملزم على المضيف المحلي.

بمجرد أن تعرف أن هذا يعمل ، ارجع إلى الإعدادات من الخطوة الأولى وقم بتعيين عنوان الربط مرة أخرى على 127.0.0.1 وحفظه مرة أخرى.

2. قم بإعداد حاجز الوصول إلى الملفات المحلية

يمكن لـ MySQL التواصل مع نظام الملفات المحلي. باستخدام الاستعلامات ، يمكنك رؤية محتوى النص في نظام الملفات المحلي أو نسخ نتيجة الاستعلام على قرص. لمنع المهاجمين الضارين من استخدام هذه الميزة ، يجب منع MySQL من الاتصال بنظام الملفات المحلي.

يمكنك استخدام وظيفة تسمى local-infile لاتخاذ الاحتياطات. على سبيل المثال ، تخيل أن لديك ملفًا باسم "/etc/secretfile.txt" ولديك كلمة مرور في هذا الملف. إذا كانت قيمة دالة local-infile في ملف /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 بمستخدمي الجذر أمر خطير للغاية. إذا أمكن ، حدد مستخدمي التطبيقات التي لا تعمل تحديث أو إدراج العمليات بشكل منفصل.

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

4. حذف المستخدمين المجهولين

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

يختار * من mysql.user أينمستخدم="";
# إخراج مثال
فارغ تعيين (0.001 ثانية)

إذا كانت هناك أية نتائج ، فيجب حذف هؤلاء المستخدمين المجهولين. على سبيل المثال ، إذا كان هناك حساب مجهول يسمى "anonuser" في بيئة تسمى "localhost" ، فسيتعين عليك استخدام أمر مثل ما يلي لحذف هذا الحساب:

انخفاض المستخدم 'الغريب'@'مضيف محلي';

5. تحقق من أذونات الملفات المحلية في MySQL

تخيل أنك مسؤول قاعدة بيانات وتريد العودة إلى البيانات من أسبوع مضى. في هذه الحالة ، قد تضطر إلى الاتصال بخادم قاعدة البيانات عبر SSH وتغيير ملفات MySQL التي تريدها. أثناء القيام بذلك ، ربما تكون قد استخدمت امتيازات المستخدم الجذر لنظام Linux ؛ وهذا يعني أن ملكية وأذونات ملفات البيانات يمكن أن تتغير. أنت لا تريد ذلك.

انظر إلى الدليل / var / lib / mysql للتحقق من الأذونات الممنوحة. ما تحتاج إلى التحقق منه هنا هو ما إذا كان مالك جميع الملفات هو مستخدم MySQL. الأمر التالي سيفي بالغرض:

sudo ls -al /فار/lib/mysql

يجب أن تكون أذونات القراءة والكتابة للملفات مخصصة فقط لمستخدم MySQL. لا ينبغي أن يكون لدى أي مستخدمين آخرين أي أذونات.

6. استخدم MySQL SSL

التفكير في مثال ملموس هو أفضل طريقة لفهم استخدام MySQL و SSL. تخيل أن أحد الخوادم في منطقة ABC ، ​​حيث يوجد العديد من الخوادم المختلفة ، تم الاستيلاء عليه من قبل قراصنة ضارين. سيجري المتسللون فحصًا داخليًا في منطقة ABC. بهذه الطريقة ، يقومون بجمع المعلومات حول الخوادم.

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

7. ملفات السجل والتاريخ

يمكنك استخدام سجلات MySQL لتحليل الأخطاء والعثور عليها. يمكنك تعديل مكان حفظ هذه السجلات عن طريق إدخال my.cnf على النحو التالي:

# /etc/mysql/my.cnf
[mysqld]
سجل = / فار /سجل/mylogfiles

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

القط ~ / .mysql_history

تحتاج إلى حذف محتويات هذا الملف إذا كنت لا تريد إعطاء معلومات حول نوع الاستعلامات التي تجريها داخل الخادم. استخدم الأمر التالي لحذف محتويات الملف:

صدى سودو "منظفة"> ~ / .mysql_history

يمكنك بعد ذلك التحقق من محتويات الملف مرة أخرى.

كل من يملك قاعدة البيانات يملك النظام

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