دليل شامل لتأمين خادم ماي إس كيو إل الخاص بك

تأمين خادم ماي إس كيو إل ubuntu debian redhat centos

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

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

1. استخدم كلمات مرور قوية

الخطوة الأمنية الأولى بسيطة لكنها أساسية – استخدم دائمًا كلمات مرور معقدة وصعبة التخمين لحسابات مسؤول ماي إس كيو إل الخاصة بك. تجنب كلمات المرور البسيطة أو التي يسهل تخمينها.

بعض النصائح لإنشاء كلمات مرور ماي إس كيو إل أفضل:

  • الحد الأدنى 12 حرفًا
  • مزيج من الأحرف الكبيرة والصغيرة والأرقام والرموز
  • تجنب كلمات القاموس والمعلومات الشخصية
  • لا تعيد استخدام كلمات المرور عبر حسابات متعددة
  • فكر في استخدام مدير كلمات مرور لإنشاء وتخزين كلمات المرور

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

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

2. حد من الوصول عن بُعد

بشكل افتراضي، يستمع ماي إس كيو إل للاتصالات على المنفذ 3306 من أي مضيف. هذا يمكن أن يترك منفذ ماي إس كيو إل الخاص بك مفتوحًا للهجوم.

النهج الأفضل هو السماح بالاتصالات فقط من المضيفات الموثوقة التي تحتاج إلى الوصول إلى ماي إس كيو إل. فيما يلي بعض الطرق للحد من الوصول عن بعد:

اربط إلى عناوين IP محددة

في ملف تكوين ماي إس كيو إل الخاص بك (my.cnf)، حدد توجيهات اربط-العنوان لتقييد الاستماع إلى عنوان IP واحد أو أكثر على شبكتك الخاصة:

bind-address=192.168.1.101
bind-address=127.0.0.1

سيجعل هذا ماي إس كيو إل يستمع فقط على عناوين IP المحددة.

السماح بالوصول فقط عبر VPN

إذا كانت العملاء عن بُعد الخاصة بك متصلين عبر VPN، يمكنك تكوين ماي إس كيو إل للسماح بالاتصالات فقط من نطاق عنوان IP نفق VPN.

استخدم جدران الحماية

توفر قواعد جدار الحماية طبقة أخرى من التحكم في الوصول عن بُعد. مع iptables على Linux، على سبيل المثال، يمكنك السماح بالاتصالات فقط من عناوين IP محددة.

المفتاح هو تقييد الاتصالات إلى عناوين IP العميل الموثوق بها فقط التي تحتاج بشكل حقيقي إلى الوصول إلى ماي إس كيو إل.

3. استخدم اتصالات آمنة

بشكل افتراضي، ينقل MySQL البيانات بشكل غير آمن في نص واضح. لتشفير الاتصالات، يجب عليك تمكين أمان طبقة النقل (TLS).

هناك بعض الطرق لتنفيذ TLS:

فرض TLS لمستخدمين معينين

في MySQL، منح إذن لحساب مستخدم للاتصال عبر TLS:

mysql> GRANT USAGE ON *.* TO 'mysqluser'@'192.168.1.101' REQUIRE SSL;

هذا يتطلب من المستخدم المحدد الاتصال باستخدام تشفير TLS.

تمكين TLS على خادم ماي إس كيو إل

لجعل TLS إلزاميًا لخادم MySQL بأكمله، عدل ملف تكوين MySQL الخاص بك:

[mysqld]
ssl-ca=/path/to/ca.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem
require_secure_transport=ON

أعد تشغيل MySQL، وستستخدم الآن جميع اتصالات العملاء TLS.

استخدم نفق SSH

خيار آخر هو نفق اتصال MySQL الخاص بك عبر SSH، مما يشفر جميع حركة المرور. على سبيل المثال:

$ ssh -L 3307:127.0.0.1:3306 [email protected] -N -f

بعد ذلك يمكنك الاتصال محليًا بالنفق على المنفذ 3307.

4. حسن أمن المصادقة

استخدام كلمات المرور وحدها للمصادقة MySQL له بعض نقاط الضعف. يمكن لإضافات المصادقة الإضافية قفل الوصول بشكل أفضل:

اشترط المصادقة بعاملين

قم بتنشيط ملحق MFA للحسابات:

mysql> CREATE USER 'jeffrey'@'192.168.1.101' IDENTIFIED WITH authentication_ldap_simple
  AS 'secretPassword';
mysql> ALTER USER 'jeffrey'@'192.168.1.101'
  REQUIRE TWO_FACTOR AUTHENTICATION
  VIA one_time_password;

الآن ستتطلب عملية تسجيل الدخول كل من كلمة المرور ورمز مرة واحدة.

استخدم مصادقة LDAP

مع ملحق AUTHENTICATION_LDAP_SIMPLE، يمكن لـ MySQL المصادقة على المستخدمين خارجيًا مقابل دليل LDAP.

استفد من شهادات SSH

يتيح ملحق AUTHENTICATION_LDAP_SIMPLE التحقق من العملاء عبر شهادات SSH بدلاً من كلمات المرور.

حدد عدد محاولات تسجيل الدخول

استخدم ملحق FAILED_LOGIN_ATTEMPTS لقفل الحساب بعد عدد محاولات تسجيل دخول فاشلة محددة، مما يعيق هجمات القوة الغاشمة.

اشترط كلمات مرور قوية

يمكن لملحق VALIDATE_PASSWORD إنفاذ متطلبات مثل طول كلمة المرور وتعقيدها وانتهاء صلاحيتها وسجلها.

5. نفذ التحكم في الوصول القائم على الأدوار

يتضمن MySQL نظام أذونات قويًا. بدلاً من منح الامتيازات الشاملة، يجب عليك تنفيذ التحكم في الوصول القائم على الأدوار (RBAC) للتحكم الأكثر دقة.

على سبيل المثال، يمكن فصل المهام الإدارية إلى أدوار مثل:

  • مسؤول قاعدة البيانات – CREATE، ALTER، DROP، BACKUP
  • مطور التطبيقات – SELECT، INSERT، UPDATE
  • محلل القراءة فقط – SELECT

منح كل مستخدم مجموعة أدنى من الامتيازات اللازمة لدوره. سحب أي أذونات غير ضرورية.

كما ضع في اعتبارك التحكم في الوصول على مستوى الصف أو العمود لتقييد رؤية البيانات.

6. راقب ودقق النشاط

لاكتشاف النشاط غير المصرح به، يوفر MySQL ملحقات تدقيق يمكنها تسجيل تنفيذ الاستعلامات وتعديل البيانات وإجراءات المشرف.

تشمل الملحقات الرئيسية:

سجل الاستعلام العام

يسجل سجل الاستعلام العام جميع جمل SQL التي ينفذها MySQL. لتمكينه، عيّن المتغير general_log على 1 في ملف تكوين MySQL الخاص بك (my.cnf) أو عن طريق تشغيل الأمر:

mysql> SET GLOBAL general_log = 'ON';

يمكنك تحديد موقع ملف السجل باستخدام general_log_file.

سجل الاستعلام البطيء

يتتبع سجل الاستعلام البطيء الاستعلامات التي تتجاوز عتبة زمن التنفيذ المحدد. لتمكينه، عيّن المتغير slow_query_log على 1 وحدد العتبة عبر long_query_time (مثلا 10 ثواني). على سبيل المثال:

mysql> SET GLOBAL slow_query_log = 'ON';
mysql> SET GLOBAL long_query_time = 10;

يتم التحكم في موقع ملف السجل عن طريق slow_query_log_file.

السجل الثنائي

يحتوي السجل الثنائي على جمل SQL التي تعدل البيانات. يتم تمكينه افتراضيًا في MySQL 5.1+ (لأغراض التكرار). لتمكينه صراحةً، عيّن:

mysql> SET GLOBAL log_bin = ON;

يتم تعيين تنسيق تسجيل الثنائي عبر binlog_format، وموقع الملف هو binlog_file.

قم بتدوير هذه السجلات والنسخ الاحتياطي لها بشكل دوري لتجنب مشاكل مساحة القرص. توفر السجلات مسار تدقيق لنشاط قاعدة البيانات.

7. طبق آخر تصحيحات الأمان

مثل أي برنامج، يطلق MySQL تصحيحات أمنية وتحديثات إصدارات دورية. للحد من الثغرات الأمنية، قم دائمًا بتطبيق آخر إصدار MySQL الثابت أو التصحيحات بأسرع وقت ممكن.

تحقق من مدونة MySQL أو ملاحظات الإصدار لإعلانات الأمان. قد تتلقى الإصدارات الرئيسية مثل MySQL 8 إصلاحات للإصدارات القديمة مثل MySQL 5.7.

بالنسبة لأنظمة Debian/Ubuntu، قم بتشغيل:

$ sudo apt update
$ sudo apt upgrade mysql-server

على RHEL/CentOS، استخدم:

$ sudo yum update mysql-server

8. تجنب تعريض MySQL للواجهات الأمامية للويب

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

يمكن للخادم الوكيل توفير:

  • جدار حماية لتقييد الاتصالات
  • تجميع الاتصالات لتحسين الأداء
  • تحليل الاستعلام للمراقبة الأمنية
  • التخزين المؤقت لتقليل الحمل على قاعدة البيانات
  • التحديد لمنع حركة المرور المفرطة

يضيف الوكيل عبئًا إضافيًا، ولكنه يوفر لك المزيد من التحكم من تعريض MySQL مباشرة.

9. استفد من أذونات المستخدم

كما ذُكر سابقًا، محاذاة أذونات مستخدم MySQL مع مبدأ الامتياز الأدنى. منح كل مستخدم فقط القدرات اللازمة لعمله.

لكن أذونات المستخدم يمكن أن توفر طبقة أمان أخرى إلى جانب مجرد الوصول إلى البيانات:

حدد امتيازات العملية

تسمح امتيازات PROCESS وSUPER بتعديل إعدادات وعمليات خادم MySQL. حدد المستخدمين الذين يحتاجون إليها بالضرورة.

حدد موارد المستخدم

تمنع حدود الموارد MAX_USER_CONNECTIONS أي مستخدم من فتح العديد من الاتصالات التي قد تثقل MySQL.

حدد قفل حسابات المستخدم

قم بتمكين CREATE USER أو ALTER USER امتيازات لتقييد المستخدمين الذين يمكنهم قفل/فتح حسابات أخرى، مما يمنع التغييرات غير المصرح بها.

حدد المستخدمين الذين يمكنهم إنشاء مستخدمين جدد

كن حذرًا بشأن منح امتياز CREATE USER لأن إنشاء مستخدمين جدد قد يفتح ثغرات أمنية.

10. استفد من امتيازات قاعدة البيانات

مثل حسابات المستخدم، يمكنك تطبيق مبدأ الامتياز الأدنى على مستوى قاعدة البيانات:

حدد امتيازات CREATE / ALTER لقاعدة البيانات

كن حذرًا بشأن السماح للمستخدمين بإنشاء أو تعديل هيكل قواعد البيانات.

حدد امتيازات DROP لقاعدة البيانات

يمكن أن يكون امتياز DROP على مستوى قاعدة البيانات خطيرًا – حدد المستخدمين الذين لديهم هذه القدرة.

عيّن أدوار قاعدة بيانات

يمكن للأدوار مثل db_datareader أو db_datawriter تحديد مجموعات امتيازات مهيأة مسبقًا على قاعدة بيانات، مما ينفذ RBAC على مستوى قاعدة البيانات.

11. آمن ملفات ودلائل MySQL الخاصة بك

يجب تأمين نظام الملفات الذي يحتوي على دلائل بيانات MySQL ومساحات التخزين وملفات السجل الخاصة بك:

حدد أذونات الملف

لا تسمح أبدًا بالوصول العالمي للقراءة/الكتابة إلى ملفات MySQL. سحب الأذونات غير الضرورية للحفاظ على تقييد الوصول.

مكّن نقل الملفات الآمن

فكر في استخدام SFTP أو SSH لنقل الملفات الآمن بدلاً من FTP غير الآمن.

فصل ملفات قاعدة البيانات وملفات السجل

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

شفر ملفات قاعدة البيانات

يمكن لأدوات مثل تشفير البيانات الشفاف في MySQL Enterprise Edition تشفير ملفات قاعدة البيانات، مما يحمي من الوصول غير المصرح به.

12. كن حذرًا عند استخدام التكرار

تتيح لك تكرار MySQL الحفاظ على قواعد بيانات متطابقة للعبيد. تقدم هذه القدرة القوية أيضًا اعتبارات أمنية:

استخدم TLS لحركة مرور التكرار

تمامًا مثل تشفير اتصالات العميل، استخدم أيضًا TLS لتشفير نقل بيانات التكرار بين السيد والعبد.

حدد امتيازات التكرار

منح امتياز REPLICATION SLAVE بحذر، فقط للحسابات التي تحتاج إليه. كما ضع في الاعتبار استخدام التحكم في الوصول القائم على الأدوار.

راقب سجل ثنائي

تحقق بانتظام من السجل الثنائي للكشف عن أي SQL مشبوه أثناء التكرار.

13. قم بعمليات النسخ الاحتياطي بانتظام

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

ضع في اعتبارك الجمع بين:

  • نسخ احتياطية كاملة يومية أو أسبوعية
  • نسخ احتياطية تزايدية أكثر تواترًا
  • نسخ احتياطية لسجلات المعاملات

اختبر الاستعادة بانتظام للتحقق من أن النسخ الاحتياطية تعمل بشكل صحيح. شفر نسخك الاحتياطية وخزنها في مواقع مؤمنة متعددة.

14. استفد من ميزات أمان MySQL 8

إذا أمكن، قم بالترقية إلى آخر إصدار رئيسي 8.x من MySQL للاستفادة من الأمان المحسن:

حماية كلمة مرور أفضل

لدى MySQL 8 هاش كلمة مرور أفضل عبر caching_sha2_password وتحقق أقوى مع التحقق من انتهاء صلاحية كلمة المرور.

التحكم في الوصول القائم على الأدوار

قدرات RBAC أكثر تقدمًا للامتيازات الإدارية والوصول إلى البيانات.

ملحق المصادقة الافتراضي

سيكون للتثبيتات الجديدة ملحق caching_sha2_password القوي مفعلاً افتراضيًا.

تشفير محسن

يضيف MySQL 8 الدعم لسجلات إلغاء الفعل وإعادة الفعل وصفحات ملفات البيانات المشفرة.

الخاتمة

يتطلب تأمين خادم قاعدة بيانات MySQL عناية، ولكن سلامة البال تستحق الجهد. استخدم النصائح الشاملة المقدمة في هذا الدليل كمخطط أساسي لتأمين بيئات MySQL الخاصة بك. ابقِ الأمن في مقدمة أولوياتك عند إعداد حالات جديدة.

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

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

LEAVE A COMMENT