ديف أوبس

إعداد استيثاق HTTP مع Nginx

كيفية إعداد استيثاق HTTP مع Nginx على Ubuntu 14.04

تُعد عملية إعداد استيثاق HTTP (HTTP Authentication) مع خادم Nginx على نظام Ubuntu 14.04 خطوة مهمة لتعزيز أمن المواقع والخدمات المستضافة. هذا النوع من الاستيثاق يتيح حماية أجزاء معينة من الموقع أو الخدمة بواسطة اسم مستخدم وكلمة مرور، مما يمنع الوصول غير المصرح به ويضيف طبقة أمان إضافية. في هذا المقال، سيتم شرح المفاهيم الأساسية للاستيثاق HTTP، أنواعه، الأدوات اللازمة، ثم خطوات الإعداد التفصيلية مع أمثلة عملية، مع التركيز على بيئة Nginx على نظام Ubuntu 14.04، وهو إصدار قديم نسبياً لكنه ما زال مستخدماً في بعض البيئات.


مفهوم استيثاق HTTP وأهميته

استيثاق HTTP هو آلية للتحقق من هوية المستخدمين عند طلب الوصول إلى موارد معينة على خادم الويب. يتم عادة عبر طلب اسم المستخدم وكلمة المرور من المتصفح قبل السماح بالوصول إلى المحتوى المطلوب.

أنواع استيثاق HTTP الشائعة

  1. Basic Authentication

    أبسط أنواع الاستيثاق، حيث يتم إرسال اسم المستخدم وكلمة المرور في كل طلب عبر رأس HTTP مشفر بطريقة base64. بالرغم من سهولته، إلا أنه غير آمن إذا لم يكن مرفقاً باستخدام HTTPS لأن البيانات تنتقل بنص واضح مشفر فقط بطريقة غير قوية.

  2. Digest Authentication

    أكثر أماناً من Basic Authentication، حيث يتم إرسال البيانات المشفرة باستخدام خوارزمية معينة، مما يقلل خطر اعتراض بيانات الاعتماد.

في هذا المقال، سنركز على Basic Authentication نظرًا لسهولة إعدادها وشيوعها، مع التأكيد على ضرورة استخدام HTTPS لضمان أمان البيانات.


متطلبات بيئة العمل

لتنفيذ إعداد استيثاق HTTP على Nginx في Ubuntu 14.04، تحتاج إلى البيئة التالية:

  • نظام تشغيل Ubuntu 14.04

  • خادم Nginx مثبت ومُشغّل

  • حزمة Apache utils (htpasswd) لإنشاء ملفات كلمات المرور

  • إمكانية الوصول إلى الطرفية (Terminal) بصلاحيات الجذر (root) أو sudo


تثبيت الأدوات المطلوبة

1. تحديث النظام

قبل البدء، يُنصح بتحديث النظام لضمان الحصول على آخر التحديثات الأمنية:

bash
sudo apt-get update && sudo apt-get upgrade -y

2. تثبيت حزمة apache2-utils

هذه الحزمة توفر أداة htpasswd التي تستخدم لإنشاء وإدارة ملفات كلمات المرور التي يعتمد عليها Nginx في استيثاق HTTP.

لتثبيت الحزمة:

bash
sudo apt-get install apache2-utils

إنشاء ملف كلمات المرور

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

1. اختيار مكان ملف كلمات المرور

يفضل وضع ملف كلمات المرور خارج مجلد الويب العام لمنع الوصول إليه عبر المتصفح. عادةً ما يوضع في /etc/nginx/.htpasswd أو مسار مشابه.

2. إنشاء ملف كلمات المرور وإضافة مستخدم

يمكنك إنشاء الملف وإضافة أول مستخدم باستخدام الأمر:

bash
sudo htpasswd -c /etc/nginx/.htpasswd username
  • -c تعني إنشاء ملف جديد.

  • استبدل username باسم المستخدم المطلوب.

بعد تنفيذ الأمر، سيطلب منك إدخال كلمة المرور مرتين للتأكيد.

3. إضافة مستخدمين إضافيين

لإضافة مستخدمين جدد دون حذف الملف، استخدم الأمر بدون -c:

bash
sudo htpasswd /etc/nginx/.htpasswd newuser

إعداد Nginx لاستيثاق HTTP

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

1. فتح ملف إعداد الموقع

ملفات إعدادات المواقع عادة ما تكون في:

swift
/etc/nginx/sites-available/

أو في ملفات تكوين Nginx الرئيسية:

bash
/etc/nginx/nginx.conf

افتح ملف الموقع المطلوب باستخدام محرر نصوص مثل nano:

bash
sudo nano /etc/nginx/sites-available/default

2. تعديل إعدادات الموقع

داخل كتلة server أو location التي تريد حمايتها، أضف الأسطر التالية:

nginx
location /protected { auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/.htpasswd; # إعدادات أخرى كـ root أو proxy_pass حسب الحاجة }
  • auth_basic : النص الظاهر في مربع الاستيثاق عند الطلب من المستخدم تسجيل الدخول.

  • auth_basic_user_file : المسار إلى ملف كلمات المرور الذي تم إنشاؤه مسبقًا.

يمكنك استبدال /protected بأي مسار تريد حمايته.

3. حفظ التغييرات وإغلاق المحرر


اختبار الإعداد وإعادة تشغيل Nginx

1. التحقق من صحة ملفات التكوين

قبل إعادة تشغيل الخدمة، من المهم التحقق من عدم وجود أخطاء في ملفات التكوين:

bash
sudo nginx -t

إذا ظهر:

csharp
syntax is ok test is successful

فذلك يعني أن التكوين صحيح.

2. إعادة تشغيل Nginx لتطبيق التغييرات

bash
sudo service nginx restart

أو

bash
sudo systemctl restart nginx

حسب النظام.


تأمين الاتصال باستخدام HTTPS

نظراً لأن استيثاق Basic Authentication يرسل بيانات الاعتماد بشكل مشفر فقط بطريقة base64، وهو غير آمن في حال الاتصال عبر HTTP عادي، فإن استخدام HTTPS أساسي.

1. تثبيت شهادة SSL

يمكنك استخدام شهادات مجانية من Let’s Encrypt أو شهادات مدفوعة حسب الحاجة.

2. استخدام Certbot لتثبيت الشهادة على Ubuntu 14.04

Ubuntu 14.04 قد لا يدعم أحدث إصدار Certbot، لذا قد تحتاج إلى تثبيت نسخة متوافقة أو استخدام طرق يدوية.

مثال مبسط:

bash
sudo apt-get install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install python-certbot-nginx sudo certbot --nginx

بعدها اتبع التعليمات لتثبيت الشهادة تلقائيًا وربطها مع Nginx.

3. إعادة توجيه HTTP إلى HTTPS

ضمن إعدادات Nginx، يمكنك إضافة توجيه:

nginx
server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }

ملخص خطوة بخطوة لإعداد استيثاق HTTP مع Nginx على Ubuntu 14.04

الخطوة الإجراء
1 تحديث النظام باستخدام sudo apt-get update && sudo apt-get upgrade -y
2 تثبيت أداة htpasswd من حزمة apache2-utils
3 إنشاء ملف كلمات المرور باستخدام htpasswd -c /etc/nginx/.htpasswd username
4 تعديل ملف إعدادات Nginx لإضافة استيثاق HTTP داخل كتلة location
5 التحقق من صحة ملفات التكوين باستخدام nginx -t
6 إعادة تشغيل Nginx لتطبيق التغييرات
7 تأمين الاتصال عبر HTTPS باستخدام شهادات SSL

نصائح مهمة عند استخدام استيثاق HTTP مع Nginx

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

  • تحديث كلمات المرور بشكل دوري: لتعزيز الأمان، يُفضل تحديث كلمات المرور بانتظام.

  • استخدام HTTPS: من الضروري تأمين الاتصال باستخدام HTTPS لمنع اعتراض بيانات الدخول.

  • مراقبة سجلات الدخول: متابعة سجلات Nginx يمكن أن تساعد في اكتشاف محاولات الوصول غير المصرح بها.

  • الحد من محاولات الدخول: يمكن دمج استيثاق HTTP مع قواعد حماية مثل fail2ban لمنع هجمات تخمين كلمات المرور.


استيثاق HTTP مقابل حلول الاستيثاق الأخرى

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


خاتمة

إن إعداد استيثاق HTTP باستخدام Nginx على نظام Ubuntu 14.04 هو إجراء بسيط وفعال لإضافة طبقة أمان أساسية لمواقع الويب والخدمات. مع مراعاة استخدام HTTPS، يوفر هذا الأسلوب حماية قوية نسبياً للموارد المهمة، خصوصًا في بيئات العمل التي تحتاج إلى حماية فورية وسهلة التنفيذ دون اللجوء إلى حلول برمجية معقدة.


المصادر والمراجع


بهذا يكون المقال قد قدم شرحًا تفصيليًا وشاملاً حول كيفية إعداد استيثاق HTTP مع Nginx على Ubuntu 14.04، متناولًا الجوانب النظرية والعملية بشكل موسع ومتكامل.