دليل تثبيت وتأمين موقع دروبال الخاص بك

مقدمة

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

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

المتطلبات المسبقة

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

  • أوبونتو 20.04 أو أعلى
  • خادم الويب أباتشي 2
  • MySQL 5.7 أو أعلى أو MariaDB 10 أو أعلى
  • PHP 7.3 أو أعلى مع الامتدادات المطلوبة
  • Composer – مدير التبعيات لـ PHP
  • دلائل قابلة للكتابة لدروبال وملفاته

كما تأكد من توفر نطاق أو نطاق فرعي متاح يشير إلى عنوان IP للخادم الخاص بك.

قم بتسجيل الدخول كمستخدم غير جذر مع امتيازات sudo لتنفيذ التثبيت.

الخطوة 1 – تثبيت مكدس LAMP

يتطلب دروبال مكدس لينكس وأباتشي وMySQL/MariaDB وPHP (LAMP) للعمل. استخدم الأوامر التالية لتثبيت هذه المكونات:

$ sudo apt update  
$ sudo apt install apache2 mariadb-server php php-mysql php-json php-gd php-mbstring php-xml php-curl

قم بتثبيت امتدادات PHP المطلوبة الأخرى:

$ sudo apt install php-zip php-soap php-gd

فعّل وحدات أباتشي اللازمة لدروبال:

$ sudo a2enmod rewrite headers env dir mime  

أمِن تثبيت MySQL:

$ sudo mysql_secure_installation

ابدأ خدمات MySQL وأباتشي:

$ sudo systemctl start mysql
$ sudo systemctl start apache2

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

الخطوة 2 – تنزيل دروبال

أولاً، انتقل إلى صفحة تنزيلات دروبال واحصل على آخر إصدار من دروبال 10:

$ cd /tmp  
$ wget https://www.drupal.org/download-latest/tar.gz

استخرج ملف tar.gz داخل دليل الجذر الويب لأباتشي:

$ sudo tar -xvf drupal-10*.tar.gz -C /var/www/html 

سيكون اسم الدليل المستخرج شيئًا مثل drupal-10.1.6. أعد تسميته ببساطة drupal:

$ sudo mv /var/www/html/drupal-10.1.6 /var/www/html/drupal  

عيّن الملكية إلى مستخدم خادم الويب:

$ sudo chown -R www-data:www-data /var/www/html/drupal  

اضبط أذونات الملف:

$ sudo chmod -R 775 /var/www/html/drupal

الآن تم وضع ملفات دروبال 10 في مكانها وجاهزة للتثبيت.

الخطوة 3 – إنشاء قاعدة بيانات MySQL

سجل الدخول إلى محث MySQL:

$ mysql -u root -p

أنشئ قاعدة بيانات ومستخدمًا لدروبال:

CREATE DATABASE drupal10db;  
CREATEUSER'drupal10user'@'localhost' IDENTIFIED BY'DBpa55word';
GRANTALLON drupal10db.*TO'drupal10user'@'localhost';   
exit

استبدل ‘DBpa55word’ بكلمة مرور آمنة.

هذا ينشئ مستخدم قاعدة بيانات مخصص مع جميع الامتيازات لقاعدة بيانات دروبال.

الخطوة 4 – تهيئة المضيف الافتراضي أباتشي

أنشئ تهيئة المضيف الافتراضي لدروبال:

$ sudo nano /etc/apache2/sites-available/drupal10.conf

أضف ما يلي، مع تحديث المسارات/النطاقات حسب الضرورة:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/var/www/drupal10/web"
    ServerName drupal10.example.com
    <Directory /var/www/drupal10/web>
        Options FollowSymlinks
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/drupal10-error.log
    CustomLog ${APACHE_LOG_DIR}/drupal10-access.log combined
</VirtualHost>

فعّل المضيف الافتراضي الجديد وأعد تشغيل أباتشي:

$ sudo a2ensite drupal10.conf  
$ sudo systemctl restart apache2

الخطوة 5 – تثبيت دروبال

ادخل إلى النطاق الخاص بك في المتصفح الويب وابدأ تثبيت دروبال 10.

حدد اللغة ثم اختر ملف التعريف القياسي للتثبيت.

في صفحة التحقق من المتطلبات، تأكد من تحديد جميع العناصر. حل أي مشاكل مدرجة.

لتهيئة قاعدة البيانات، استخدم قاعدة البيانات MySQL والمستخدم وكلمة المرور التي تم إنشاؤها مسبقًا.

**مهم: قم بتعطيل إرسال إحصائيات الاستخدام للمساهمة في تحسينات دروبال. هذا يساعد في حماية الخصوصية.

أنشئ اسم الموقع ومستخدم المدير الافتراضي وكلمة مرور قوية.

انتظر حتى اكتمال التثبيت ثم سجل الدخول باستخدام مستخدم المدير.

تم الآن تثبيت الموقع الأساسي لدروبال وجاهز للتطوير!

الخطوة 6 – تهيئة إعدادات الأمان

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

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

لا تزال تحت النظام، انتقل إلى Cron وقم بتمكين معالجة Cron. هذا مطلوب للمهام المجدولة.

تحت قسم تأليف المحتوى، انتقل إلى تنسيقات النص وقم بتهيئة ما يلي:

  • تقييد العلامات HTML
  • تعطيل تنسيق إدخال JavaScript

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

بعد ذلك، تحت وسائط، قم بتعطيل مصدر الملفات المحلية. بدلاً من ذلك، قم بتهيئة التخزين السحابي للتحميلات مثل S3 أو ما يعادله.

تحت التهيئة > الوسائط > نظام الملفات، اضبط طريقة التنزيل الافتراضية إلى ملفات يمكن الوصول إليها خصوصًا.

للمزيد من الأمان، في التهيئة > إعدادات الوسائط اضبط مسار نظام الملفات العامة إلى private://

هذا يمنع الوصول إلى مسارات الملفات التي تم تحميلها مباشرة من خلال عنوان URL للموقع.

في التهيئة > النظام > نظام الملفات ، تأكد من تعيين مسار نظام الملفات العامة sites/default/files إلى private://

هذا يمنع الوصول إلى موجودات ملفات الموقع مباشرة من خلال عنوان URL للموقع.

تحت التهيئة > النظام > السجل والأخطاء ، فعّل تسجيل قاعدة البيانات المفصل ومحاولات تسجيل الدخول الفاشلة وأخطاء صفحة غير موجودة.

لا تزال تحت السجل والأخطاء ، انقر فوق URLs نظيفة تأكد من تحديد الخانة “تمكين URLs النظيفة”. هذا يحسن تحسين محركات البحث

تمرير إلى أسفل إلى قسم تحسين عرض النطاق الترددي وتمكين ما يلي:

  • تجميع ملفات CSS
  • تجميع ملفات JavaScript
  • تحسين ملفات CSS
  • تحسين ملفات JavaScript

هذا يقلل الطلبات ويحسن الأداء.

في التهيئة > تحسين محركات البحث ابدأ بتعيين عنوان الصفحة الرئيسية الافتراضية للموقع،

تحت تحسين محركات البحث حدد الخيار “إنشاء العلامات الدلالية” فعّل URLs النظيفة و الآيقونة على شكل كرة أرضية.

لوسائل التواصل الاجتماعي، قم بتهيئة خيارات Facebook و Twitter.

في التهيئة > النظام > PHP، اضبط دليل التحميلات خارج جذر الويب إلى sites/default/files/private

هذا يمنع الوصول المباشر إلى ملفات التحميل من خلال مسار URL.

اضبط الحد الأقصى لحجم النشر و الحد الأقصى لحجم ملف التحميل وفقًا لمتطلبات الموقع.

مهم: لتطبيق التغييرات أعلاه، بإمكانك:

  1. استخدام سطر الأوامر Drush drush cr
  2. أو الانتقال مباشرة إلى عنوان URL /update.php مثلا example.com/update.php

هذا سيمسح الذاكرة المؤقتة وإعادة بناء المسارات حتى تدخل التغييرات حيز التنفيذ.

الخطوة 7 – مراجعة الأذونات

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

تحقق من تعيين أذونات الكتابة فقط على الدلائل المطلوبة:

$ sudo chown -R www-data:www-data /var/www/drupal10/web/sites/default 
$ sudo find /var/www/drupal10/web/sites/default -type d -exec chmod 775 {} \;
$ sudo find /var/www/drupal10/web/sites/default -type f -exec chmod 664 {} \;  

حدد أذونات نظام الملفات الموصى بها:

$ sudo find /var/www/drupal10/web -type d -exec chmod 755 {} \;
$ sudo find /var/www/drupal10/web -type f -exec chmod 644 {} \;

آمِن ملف settings.php:

$ sudo chmod 444 /var/www/drupal10/web/sites/default/settings.php

مراجعة الأذونات باستمرار أمر مهم لتجنب القيم الافتراضية غير الآمنة.

الخطوة 8 – تأمين قاعدة البيانات

نظرًا لاحتواء قاعدة البيانات على بيانات حساسة، من الضروري اتخاذ احتياطات لمنع فقدان البيانات أو اختراقها:

  • تجنب استخدام مستخدم الجذر لقاعدة البيانات. بدلاً من ذلك، منح امتيازات محدودة لمستخدم دروبال.
  • ضع كلمة مرور قوية لمستخدمي MySQL بطول > 12 حرفًا وأحرف خاصة.
  • لا تُعرِض قاعدة البيانات للشبكة العامة. ضعها بدلاً من ذلك داخل شبكة فرعية خاصة بدلاً من DMZ أو الشبكة الفرعية العامة.
  • فعّل بروكسي MySQL عكسي لإضافة طبقة أمان إضافية لحركة قاعدة البيانات.
  • نفذ عمليات نسخ احتياطي واختبار استعادة بشكل متكرر.

اتبع أفضل ممارسات النسخ الاحتياطي:

  • جدولة تصدير قاعدة البيانات يوميًا
  • نسخ الملفات والتعليمات البرمجية للموقع
  • تخزين النسخ الاحتياطية بعيدًا عن جذر الويب
  • تشفير ملفات النسخ الاحتياطي
  • اختبار الاستعادة على بيئة المرحلة.

هذا يحمي من فقدان البيانات بسبب أخطاء المستخدم أو أعطال النظام أو هجمات البرامج الفدية.

الخطوة 9 – تأمين خادم الويب

نظرًا لتعرض خادم أباتشي للإنترنت، فهو بحاجة إلى حماية قوية:

قم بتعطيل الوحدات غير المستخدمة لتقليل مساحة الهجوم:

$ sudo a2dismod status actions alias autoindex

هيِئ جدار الحماية التطبيقي mod_security لتصفية حركة المرور:

$ sudo apt install modsecurity libapache2-mod-security2
$ sudo nano /etc/modsecurity/modsecurity.conf

فعّل محرك قواعد mod_security:

SecRuleEngine On

حوّل حركة المرور عبر جدار حماية التطبيقات الويب (WAF) لفحص الحزم العميق:

$ sudo apt install mod_security crudini 
$ crudini --set /etc/modsecurity/modsecurity.conf \
  owasp.crs components.response.body_access false
$ sudo systemctl restart apache2  

استخدم HTTPS مع شهادة SSL صالحة لتمكين التشفير. أعد توجيه كل حركة المرور إلى الإصدار HTTPS.

صلِب الموقع برؤوس HTTP أمنية إضافية:

$ sudo nano /etc/apache2/sites-available/drupal10.conf
Header set X-Frame-Options "SAMEORIGIN"
Header set X-XSS-Protection "1; mode=block" 
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "same-origin"
Header always append X-Frame-Options SAMEORIGIN

احفظ الملف وأعد تشغيل أباتشي.

هذا يساعد في الحماية من هجمات XSS والاختطاف وMIME الشائعة.

للأداء، فعّل التخزين المؤقت لموجودات الوسائط الساكنة في المتصفح:

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|webp|js|css|swf)(\.gz)?$">
Header set Cache-Control "max-age=604800, public"  
</FilesMatch>

604800 ثانية = أسبوع واحد. هذا يتجنب إعادة تنزيل الموجودات دون تغييرها.

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

كن على اطلاع على التنبيهات الأمنية لدروبال وقم بتطبيق آخر التصحيحات.

الخطوة 10 – أتمتة Cron لدروبال

يُدير Cron المهام المجدولة مثل التخزين المؤقت والتحديثات وتحسين البيانات.

الخيار 1 – تشغيل cron يدويًا

فعّل الوصول إلى crontab لمستخدم خادم الويب:

$ sudo crontab -u www-data -e 

أضف إدخال cron:

* * * * * /usr/bin/php /var/www/drupal10/web/core/scripts/cron.sh >> /var/www/drupal10/cron.log

الخيار 2 – Cron المؤتمت

استخدم وحدة Drupal Queue Cron لتفعيل cron من دون الحاجة إلى صلاحيات مسؤول النظام

$ composer require drupal/queue_cron  
$ drush en -y queue_cron

اضبط إعدادات cron في واجهة مستخدم دروبال عند admin/config/system/cron.

الخيار 3 – استخدام خادم مهام cron النظامي

$ sudo systemctl edit cron

ألصق:

[Service]
User=www-data

احفظ واخرج.

$ sudo systemctl restart cron

هذا يُشغل مهام cron كمستخدم لخادم الويب.

اضبط إعدادات cron في واجهة مستخدم دروبال عند admin/config/system/cron.

الخطوة 11 – الصيانة المستمرة

ضع جدولة للمهام المنتظمة لضمان الأمان على المدى الطويل:

  • مراجعة السجلات – افحص سجلات أباتشي/دروبال للكشف عن علامات الهجمات
  • تطبيق التحديثات – ترقيع الثغرات الأمنية لنواة دروبال ووحداته وPHP ونظام التشغيل بشكل منتظم
  • مراجعة الصلاحيات – إصلاح القيم الافتراضية غير الآمنة
  • النسخ الاحتياطي للبيانات – أتمتة النسخ الاحتياطي اليومي لقاعدة البيانات والملفات إلى موقع بديل
  • اختبار الاستعادة – التحقق من سلامة النسخ الاحتياطي؛ اختبار الاستعادة على الموقع التجريبي
  • تجديد شهادة SSL – استخدم التجديد التلقائي لتجنب انتهاء الصلاحية/التحذيرات
  • مراقبة الموقع – استخدم نظام الكشف عن التسلل وجدران الحماية للحصول على تنبيهات الهجمات

الخاتمة

من خلال هذه الخطوات، لديك الآن تثبيت دروبال 10 آمن مُحسّن للأداء، مع حماية ضد الثغرات الشائعة.

تأكد من اتباع أفضل ممارسات الأمان في المستقبل لضمان بقاء موقع دروبال الخاص بك مُصلّبًا مع مرور الوقت. فعّل التسجيل / المراقبة وطبّق استراتيجية “الدفاع عن العمق” مع عدة طبقات من الأمان.

كن يقظًا بشأن التهديدات الناشئة من خلال متابعة التنبيهات الأمنية لدروبال. آلية التصحيحات لضمان عدم تفويتك التحديثات الحرجة.

مع التصليب المستمر والصيانة الاستباقية، يمكنك بثقة بناء وظائف دروبال الخاصة بك مع الحفاظ على أمان النظام الأساسي من المتسللين.

LEAVE A COMMENT