كيفية إعداد استيثاق كلمة السر مع خادوم Apache على Ubuntu
يُعد إعداد استيثاق كلمة السر أحد أكثر آليات الحماية استخدامًا على خوادم الويب لحماية الموارد والمجلدات من الوصول غير المصرح به. خادوم Apache HTTP Server، أحد أشهر الخوادم على نظام Ubuntu، يدعم هذه الآلية بشكل مباشر من خلال وحدة mod_auth_basic. يعتمد هذا النوع من المصادقة على ملف يحتوي على أسماء المستخدمين وكلمات المرور المشفرة، يتم مقارنته بكل طلب وصول للموارد المحمية.
في هذا المقال، سيتم تناول جميع خطوات إعداد استيثاق كلمة السر باستخدام Apache على نظام تشغيل Ubuntu بشكل مفصل، بدءًا من إعداد الحزم وحتى حماية المجلدات والموارد مع أمثلة عملية، وضمان الالتزام بمعايير الأمان وتوصيات الأداء.
المحتويات:
-
نظرة عامة على استيثاق كلمة السر
-
تثبيت Apache على Ubuntu
-
إنشاء دليل محمي
-
تفعيل وحدة المصادقة
mod_auth_basic -
إنشاء ملف كلمات المرور
.htpasswd -
إعداد ملف التهيئة Apache لحماية الدليل
-
اختبار إعداد الاستيثاق
-
تعزيز الأمان
-
استكشاف الأخطاء الشائعة وحلولها
-
الجدول: مقارنة بين أنواع الاستيثاق في Apache
1. نظرة عامة على استيثاق كلمة السر
استيثاق كلمة السر في Apache يستخدم آلية بسيطة تعتمد على المطالبة باسم مستخدم وكلمة مرور عند محاولة الوصول إلى صفحة أو مجلد معين. تعمل هذه الآلية من خلال وحدات مصادقة (Authentication Modules) أبرزها:
-
mod_auth_basic: للقيام بالاستيثاق الأساسي. -
mod_authn_file: للتحقق من المستخدمين باستخدام ملف نصي.
ببساطة، يتم تخزين معلومات المصادقة في ملف .htpasswd، وتتم قراءة هذا الملف بواسطة خادوم Apache عند طلب الوصول إلى المسار المحمي. تُرسل بيانات الاعتماد عبر بروتوكول HTTP أو HTTPS، ويُنصح دائمًا باستخدام HTTPS لتأمين الاتصال.
2. تثبيت Apache على Ubuntu
أول خطوة هي التأكد من تثبيت خادوم Apache على نظام Ubuntu. يتم ذلك عبر تنفيذ الأوامر التالية في الطرفية:
bashsudo apt update sudo apt install apache2 -y
بعد التثبيت، يمكن التحقق من أن الخادوم يعمل باستخدام:
bashsudo systemctl status apache2
إن كان الخادوم يعمل، فستظهر حالة active (running).
3. إنشاء دليل محمي
لنفترض أنك تريد حماية مجلد يسمى private داخل /var/www/html. يمكن إنشاؤه بالأمر التالي:
bashsudo mkdir /var/www/html/private
echo "هذا محتوى محمي" | sudo tee /var/www/html/private/index.html
4. تفعيل وحدة المصادقة mod_auth_basic
في حالة لم تكن الوحدة مفعلة، يمكن تفعيلها بالأوامر التالية:
bashsudo a2enmod auth_basic sudo a2enmod authn_file sudo systemctl restart apache2
5. إنشاء ملف كلمات المرور .htpasswd
لإنشاء هذا الملف، نحتاج إلى أداة htpasswd، وهي جزء من الحزمة apache2-utils. لتثبيتها:
bashsudo apt install apache2-utils
ثم يتم إنشاء الملف وإضافة مستخدم:
bashsudo htpasswd -c /etc/apache2/.htpasswd user1
سيُطلب منك إدخال كلمة المرور للمستخدم user1. خيار -c يُستخدم لإنشاء الملف، وعند إضافة مستخدمين لاحقين لا يتم استخدام هذا الخيار لتجنب حذف الموجودين.
لإضافة مستخدم آخر لاحقًا:
bashsudo htpasswd /etc/apache2/.htpasswd user2
6. إعداد ملف التهيئة Apache لحماية الدليل
لحماية المجلد private، يمكن تعديل ملف إعدادات الموقع الافتراضي:
bashsudo nano /etc/apache2/sites-available/000-default.conf
داخل الكتلة ، أضف ما يلي:
apacheAuthType Basic AuthName "Restricted Content" AuthUserFile /etc/apache2/.htpasswd Require valid-user
ثم أعد تحميل إعدادات الخادوم:
bashsudo systemctl reload apache2
7. اختبار إعداد الاستيثاق
افتح المتصفح وتوجه إلى:
arduinohttp://your_server_ip/private/
سيتم مطالبتك بإدخال اسم المستخدم وكلمة المرور. بعد الإدخال الصحيح، سيتم عرض محتوى الصفحة index.html.
8. تعزيز الأمان
لضمان مستوى أمني مرتفع، من الضروري اتباع الإجراءات التالية:
استخدام HTTPS
استيثاق كلمة السر Basic Authentication يرسل البيانات على شكل Base64، مما يجعلها عرضة للاعتراض إن لم يكن الاتصال مشفراً. لتأمين الاتصال:
bashsudo apt install certbot python3-certbot-apache sudo certbot --apache
سيوفر هذا شهادة Let’s Encrypt مجانية ويقوم بإعداد Apache تلقائيًا لاستخدام HTTPS.
حماية ملف .htpasswd
يجب التأكد من أن ملف كلمات المرور غير قابل للوصول عبر الويب:
bashsudo chown root:www-data /etc/apache2/.htpasswd
sudo chmod 640 /etc/apache2/.htpasswd
تجنب تخزين كلمات مرور سهلة
يُنصح باستخدام كلمات مرور طويلة ومعقدة. يمكن توليد كلمات مرور قوية باستخدام أدوات مثل pwgen أو openssl:
bashopenssl rand -base64 12
9. استكشاف الأخطاء الشائعة وحلولها
| الخطأ | السبب | الحل |
|---|---|---|
| 403 Forbidden | عدم توفر الصلاحيات على المجلد | تأكد من أن المستخدم www-data يملك صلاحية الوصول |
| عدم ظهور مطالبة تسجيل الدخول | عدم تفعيل mod_auth_basic |
تأكد من تنفيذ a2enmod auth_basic وإعادة تشغيل الخادوم |
| رفض المستخدم حتى بعد إدخال كلمة المرور الصحيحة | خطأ في ملف .htpasswd أو المسار غير صحيح |
تحقق من صحة المسار في AuthUserFile |
10. الجدول: مقارنة بين أنواع الاستيثاق في Apache
| نوع الاستيثاق | آلية العمل | مستوى الأمان | متطلبات |
|---|---|---|---|
| Basic Authentication | إرسال بيانات الاعتماد على شكل Base64 | منخفض بدون HTTPS، جيد مع HTTPS | mod_auth_basic, mod_authn_file |
| Digest Authentication | يستخدم تجزئة (hashing) | أعلى من Basic | mod_auth_digest |
| Certificate-based Authentication | التحقق من العميل بشهادة رقمية | عالٍ جدًا | إعدادات SSL و CA |
| LDAP Authentication | التحقق من خلال خادم LDAP | حسب التكوين | mod_authnz_ldap, خادم LDAP خارجي |
المصادر والمراجع:
-
Apache Documentation: https://httpd.apache.org/docs/2.4/
-
Ubuntu Server Guide: https://ubuntu.com/server/docs

