ديف أوبس

تأمين MySQL وMariaDB على لينكس

تأمين قواعد البيانات MySQL وMariaDB على خواديم لينكس: منهج شامل لحماية البيانات

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

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


أهمية تأمين قواعد البيانات

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


إعداد بيئة لينكس آمنة

تحديث النظام باستمرار

أحد أهم عناصر الحماية يتمثل في تحديث النظام وجميع الحزم البرمجية بانتظام. تشمل هذه التحديثات ترقيعات أمنية تغلق ثغرات قد تُستخدم من قبل المخترقين. يمكن استخدام الأوامر التالية لتحديث نظام Debian/Ubuntu:

bash
sudo apt update && sudo apt upgrade

أما في توزيعات RedHat/CentOS:

bash
sudo yum update

تقييد الوصول إلى الخادم

ينبغي ألا يتمكن من الدخول إلى الخادم سوى عدد محدود من المستخدمين الموثوقين. يمكن تقييد الوصول عبر:

  • استخدام جدار ناري مثل iptables أو firewalld.

  • السماح بالوصول إلى المنافذ الحيوية (مثل 22 و3306) من عناوين IP محددة فقط.

  • تعطيل تسجيل الدخول للمستخدم root عبر SSH.

استخدام SSH مع مفاتيح التوثيق

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


تأمين خادم MySQL/MariaDB

تغيير الإعدادات الافتراضية

عند تثبيت قاعدة بيانات MySQL أو MariaDB لأول مرة، يجب تغيير الإعدادات الافتراضية، والتي غالباً ما تكون أهدافاً سهلة للمخترقين. من أبرز هذه الإعدادات:

  • تغيير كلمة مرور المستخدم root.

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

  • حذف قاعدة البيانات التجريبية test.

  • التأكد من أن root لا يستطيع تسجيل الدخول عن بُعد.

يمكن تنفيذ ذلك عبر أداة mysql_secure_installation:

bash
sudo mysql_secure_installation

تحديد عنوان الاستماع

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

ini
bind-address = 127.0.0.1

هذا التعديل يتم في ملف التهيئة:

  • /etc/mysql/my.cnf أو

  • /etc/my.cnf حسب التوزيعة ونوع قاعدة البيانات.


إدارة حسابات المستخدمين والصلاحيات

قاعدة الامتياز الأقل

ينبغي أن تُمنح كل حسابات المستخدمين أقل عدد من الصلاحيات اللازمة لأداء المهام المطلوبة فقط. استخدام صلاحيات شاملة مثل GRANT ALL دون داعٍ يُعد خطأً أمنياً فادحاً.

على سبيل المثال، لإنشاء مستخدم يملك صلاحية القراءة فقط على قاعدة بيانات معينة:

sql
CREATE USER 'reader'@'192.168.1.100' IDENTIFIED BY 'motdepassefort'; GRANT SELECT ON nom_de_la_base.* TO 'reader'@'192.168.1.100';

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

يجب استخدام كلمات مرور معقدة وتغييرها بانتظام. كما يُفضل دمج MySQL/MariaDB مع نظام إدارة أسرار (Secrets Management) مثل HashiCorp Vault أو AWS Secrets Manager.


تشفير البيانات

تشفير البيانات أثناء النقل

ينبغي استخدام SSL/TLS لتشفير البيانات أثناء النقل بين العملاء والخادم. يتطلب ذلك:

  • إنشاء أو شراء شهادات SSL.

  • تعديل ملف الإعداد ليدعم التشفير:

ini
[mysqld] ssl-ca=/etc/mysql/certs/ca.pem ssl-cert=/etc/mysql/certs/server-cert.pem ssl-key=/etc/mysql/certs/server-key.pem

تشفير البيانات المخزنة (At Rest)

يدعم MySQL وMariaDB التشفير الشفاف للبيانات المخزنة عبر ميزة TDE (Transparent Data Encryption). لتفعيلها، ينبغي:

  • تفعيل التشفير على مستوى جدول أو ملف.

  • استخدام وحدة إدارة مفاتيح (Key Management Plugin).


مراقبة النظام والنشاطات

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

تفعيل سجل الاستعلامات البطيئة (slow query log) يُساعد في تحديد الأنشطة غير الطبيعية. كما يمكن تفعيل سجل عام للأنشطة (general log) لأغراض التحقيق الأمني.

مراجعة السجلات

من المهم مراقبة ملفات السجلات بانتظام، خاصة:

  • /var/log/mysql/error.log

  • /var/log/auth.log

  • /var/log/syslog

كما يمكن استخدام أدوات مثل Logwatch أو Logrotate لتحسين عملية المراقبة والأرشفة.

أنظمة كشف التسلل

ينبغي استخدام أنظمة IDS/IPS مثل OSSEC أو Fail2ban لمراقبة أنشطة تسجيل الدخول ومحاولات الاختراق.


تأمين النسخ الاحتياطي

تشفير النسخ الاحتياطية

ينبغي أن يتم تشفير جميع النسخ الاحتياطية المخزنة باستخدام أدوات مثل GPG أو OpenSSL.

bash
mysqldump -u root -p base_de_donnees | gzip | openssl enc -aes-256-cbc -e -out sauvegarde.sql.gz.enc

تخزين النسخ الاحتياطية بأمان

ينبغي تخزين النسخ الاحتياطية في مواقع آمنة وغير قابلة للكتابة من قبل التطبيقات. من الأفضل حفظ النسخ في مواقع خارجية مثل خواديم S3 أو تخزين شبكي آمن (NAS).


الحد من الوصول إلى الملفات والبيانات

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

يجب تقييد أذونات الملفات الخاصة بخادم قواعد البيانات:

  • ملفات التهيئة ينبغي أن تكون قابلة للقراءة فقط من قبل المستخدم mysql.

  • ملفات البيانات ينبغي ألا تكون قابلة للوصول إلا من قبل الخدمة نفسها.

bash
chown -R mysql:mysql /var/lib/mysql chmod 750 /var/lib/mysql

تقييد استخدام LOAD DATA LOCAL

هذا الأمر قد يُستخدم لقراءة ملفات محلية من الجهاز العميل، وهو عرضة للاستخدام الخبيث. من الأفضل تعطيله في ملف التهيئة:

ini
local-infile=0

الجدول: ملخص استراتيجيات تأمين MySQL/MariaDB

المجال الإجراءات المقترحة
تحديث النظام استخدام أوامر التحديث المنتظمة وتفعيل التحديثات الأمنية التلقائية
التحكم في الوصول جدار ناري، SSH بمفتاح، تعطيل root
تهيئة الخادم حذف الحسابات الافتراضية، تقييد bind-address
إدارة الحسابات قاعدة الامتياز الأقل، كلمات مرور قوية
تشفير البيانات SSL/TLS أثناء النقل، TDE للبيانات المخزنة
المراقبة تمكين السجلات، مراقبة الأنشطة، IDS
النسخ الاحتياطي التشفير، التخزين الآمن، النسخ الخارجية
إعدادات ملفات النظام أذونات صارمة، تقييد LOAD DATA LOCAL

الختام

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


المراجع:

  1. MySQL Security Best Practices – MySQL Documentation

  2. MariaDB Security Overview – MariaDB Knowledge Base