لأسباب عديدة ، قد يكون من المفيد جدًا التحكم في الوصول إلى أدلة معينة على خادم ويب أو ببساطة إلى محتويات صفحتنا أو مدونتنا عن طريق خدمة مصادقة تعتمد على اسم المستخدم وكلمة المرور. أنا أتحدث عن شيء مثل النافذة النموذجية التي تظهر عندما نريد الدخول إلى موقع ويب بخدمات مقيدة.
هناك عدة طرق لإنشاء نوافذ بنموذج مصادقة ولكن يتم توفير حل مثير للاهتمام على مستوى الخادم تباسود. إنها أداة تتمثل وظيفتها في تخزين كلمات المرور في شكل مشفر لاستخدامها بواسطة Apache في خدمات المصادقة. سيسمح لنا استخدامه بإظهار أدلة أو ملفات معينة عبر http فقط للمستخدمين المحددين ودون أن يكون متاحًا مجانًا للجميع.
أفهم أنه ليس موضوعًا مبهرجًا جدًا ولكنه قد يكون مفيدًا للبعض. لكي لا أقتلهم بالملل ، سأستخدم الصور لجعلها تعليمية أكثر.
الاعتبارات السابقة: سأستخدم أوبونتو خادم 12.04.1 y أباتشي 2.2.22 في بيئة خاضعة للرقابة.
نحن نبدأ.
كما قد يعرف البعض بالفعل ، يتم تخزين مواقع Apache المتاحة افتراضيًا في الدليل / فار / على شبكة الاتصالات العالمية / وفي هذا المثال ، سأقوم بإنشاء دليل بقالب HTML وسأحاول حمايته باستخدام htpasswd.
الدليل المطلوب حمايته هو / var / www / example / حيث وضعت الصفحة التالية.
1. سنقوم بإنشاء ملف .htpasswd.
المكان الذي سيتم وضعه فيه ذو أهمية مناسبة ووضعه خارج دليل عام يمكن أن يكون أكثر من الموصى به. في حالتي ، سأضعه في مجلدي الشخصي (وهو ليس دليل Apache عام) وباسم htpasswd. (بداهة ، ليس من الضروري تسميتها بهذه الطريقة ، لكن الشيء المخفي دائمًا ما يكون جيدًا).
باستخدام الأمر التالي ، أقوم بإنشاء ملف .htpasswd لمستخدم ويب قمت بتسميته باسم: "Luke".
# htpasswd -c /home/krel/.htpasswd Luke
سيطلب منا توفير كلمة المرور مرتين ، في حالتي وضعت "skywalker" (بدون علامات اقتباس). في بيئة غير خاضعة للرقابة ، يجب علينا إنشاء كلمات مرور أقوى. التشفير الافتراضي على Linux هو MD5 ولكن في Unix يعد تطبيقًا قياسيًا لـ crypt () وكلمات المرور التي تقل عن 8 أحرف يمكن أن تكون ضعيفة. الآن لدي شك إذا كان هو نفسه في BSD.
- -c → لإنشاء الملف
- /home/krel/.htpasswd → المسار المطلق للملف.
- Luke → اسم المستخدم (يمكن أن يكون ما تريد)
وبالمثل ، أنا لا أجبر أي شخص على استخدام الجهاز عند وجود خدمات له على الإنترنت:
http://www.web2generators.com/apache/htpasswd_generator
http://www.htaccesstools.com/htpasswd-generator/
نقوم بنسخ النتيجة في ملف نصي وباسم .htpasswd إذا كنت ترغب في ذلك. بخصوص هذه الطريقة ، لا تتوقف عن قراءة ما أعلق عليه في الفقرة التالية.
في حالتنا سنرى أن الملف قد تم إنشاؤه حيث توقعنا منهم /home/krel/.htpasswd. لقد أبرزت في الصورة أنه بهذه الطريقة ، ينتمي الملف إلى مجموعة apache والمستخدم ، والتي تسمى في Ubuntu www-data. هذا مهم لأننا إذا أنشأنا ملف .htpasswd بأي طريقة أخرى ، يجب أن نتأكد من أن لديه أذونات 644.
حسنًا ، سنرى الآن كيف تبدو شجاعتهم:
كما ترى ، يوجد المستخدم (لوك) لكن كلمة المرور مشفرة.
بهذه الطريقة قمنا بالفعل بإنشاء وتصميم .htpasswd للمستخدم Luke ، وفي النهاية لا يعدو كونه حاوية لكلمة المرور. ستكون عبارة "الكل بأمر واحد" عبارة عن شعار جيد.
2. تكوين Apache لاستخدام تلك الخدمة والسماح بها على الموقع.
# nano /etc/apache2/sites-available/default
إذا كان لديك العديد من المضيفين ، فيجب أن يعملوا على كل منهم ، وفي حالتي ليس لدي سوى المضيف الذي يأتي افتراضيًا. لا تنس أنه من الجيد دائمًا عمل نسخة احتياطية من هذا الملف.
هذا الملف له الهيكل الافتراضي:
ServerAdmin webmaster @ localhost
..................
..................
سيتم تحديد استخدام .htpasswd للوصول إلى دليل معين ضمن عناوين Virtualhost. نقوم بذلك كما تظهر الصورة أدناه ومناسبة لمثالنا:
عليك أن تضع الدليل للحماية.
AuthType الأساسية
إنه نوع المستخدم وكلمة المرور التي يتم التفاوض عليها مع المتصفح ، وفي هذه الحالة يكون أساسيًا ، بدون تشفير.
هناك نوع آخر من التفاوض: الملخص ، هذا يقوم بتشفير اسم المستخدم وكلمة المرور ، ولكن الكلمة الأخيرة هي أن المتصفح لديه ما إذا كان يدعم الخدمة المذكورة. يمكن القول أن Digest هو تطبيق أكثر قوة إلى حد ما ضد المتشممون. أدعوكم للخوض في هذا.
AuthName "اطرق الباب قبل الدخول."
إنها رسالة ستظهر للمستخدم في المتصفح مع نموذج تسجيل الدخول ويمكن أن تكون هي الرسالة التي نريدها.
AuthUserFile /var/www/.pass/.htpasswd
مسار ملف .htpasswd. لهذا السبب أقول إنه ليس من الضروري حتى تسميته .htpasswd ، فإن مجرد وضع المسار سيعمل بنفس الطريقة.
تتطلب صالحة للمستخدم
تم تصميم هذا الخط لعدة مستخدمين بكلمات مرور فردية. إذا كان مستخدمًا واحدًا ، فيمكن تلخيصه على أنه المتغير التالي.
يتطلب المستخدم el_que_sea
في المثال الخاص بي يمكن أن يكون: تتطلب المستخدم Luke
وأخيرًا نرفق كل شيء به
نعيد تشغيل اباتشي:
# service apache2 restart
لنجرب.
إذا لم نحقق المصادقة بشكل صحيح ، فسنحصل على خطأ 401.
على الجانب الآخر ، إذا وضعنا اسم المستخدم وكلمة المرور الصحيحين ، فسنسمح لنا بالمرور دون أي إزعاج كبير.
نصائح إضافية.
- لإضافة المزيد من المستخدمين إلى ملف htpasswd تم إنشاؤه بالفعل ، يمكنك استخدام هذا الأمر
htpasswd -mb /home/krel/.htpasswd كلمة مرور المستخدم
إذا قمت بتعيين "مطلوب مستخدم" وليس "مطلوب مستخدم صالح" ، يجب إضافة المستخدم الجديد متبوعًا بالمستخدم السابق ومفصولة بمسافة. مثال:
طلب المستخدم Luke Anakin
- استخدم مجموعات المستخدمين
إذا فضلنا أو احتجنا العمل مع مجموعات على الموقع التالي بدلاً من المستخدمين الفرديين ، فإنهم يشرحون ذلك بتفصيل كبير وهو مقال ممتاز.
http://www.juanfelipe.net/node/23
- يمكننا أيضًا تعيين نوع آخر من التشفير ، على سبيل المثال: SHA
htpasswd -sb /home/krel/.htpasswd كلمة مرور المستخدم
فيما يلي صورة لكيفية انعكاس تسجيل كلمة مرور SHA في ملف .htpasswd. في كليهما كان "السماوية".
معرفة المزيد.
htpasswd - -help
إذا كنت تريد التعمق في هذا الموضوع ، فإن RTFM جيد دائمًا!
http://httpd.apache.org/docs/2.0/es/howto/auth.html
http://httpd.apache.org/docs/2.2/misc/password_encryptions.html
لقد وجدت أيضًا نص PHP هذا مثيرًا للفضول من صفحة جامعة غرناطة لإنشاء مولد htaccess و htpasswd. لم أتمكن من وضعه موضع التنفيذ ولكني أدعوك إلى "التنقيب بالذكاء".
نموذج HTML الذي حصلت عليه من هذه الصفحة في حالة اهتمام أي شخص.
http://www.templatemo.com/
آمل أن تكون قد أحببت عرض htpasswd هذا.
الآن بعد قراءة المنشور مرة أخرى ، أدركت أنني أحدثت فوضى صغيرة. عندما أشرح الأسطر في تكوين الموقع ، في AuthUserFile ، أضع /var/www/.pass/.htpasswd عندما يجب أن يكون:
/home/krel/.htpasswd.
في الصورة ، كل شيء على ما يرام ولكن هناك تهرب مني ، لأنني قد كتبت المقال مسبقًا بهذا المسار ، لكن في اللحظة الأخيرة غيرته ويبدو أنني فاتني تصحيحه.
أعتذر مقدما.
أي بديل عن نوتيلوس ؟؟
أعتقد أن ما تسأل عنه يسير في الاتجاه الآخر ولكني أجيب عليك على أي حال.
أعتقد أنه مع Cryptkeeper سيكون من المفيد حماية الأدلة والأشياء من هذا القبيل.
إذا كنت صادقًا إذا كان هناك شيء أكرهه في جنوم هو نوتيلوس. Dolphin (KDE) أقوى بكثير على وجه التحديد لهذه الأشياء من الحماية والتشفير باستخدام gpg وما إلى ذلك ...
Krel ، شكرًا على البرامج التعليمية الكاملة التي تحضرها هنا وخاصة لكونها ليست مواضيع شائعة جدًا ...
في صحتك !!! ...
مرحبًا ، سار كل شيء على ما يرام ولكن .. عندما أغلق علامة تبويب chrome وفتح علامة تبويب أخرى ، أكتب العنوان ولا يطلب مني كلمة المرور ...
الذي قال أنه لم يكن براقة.
كان هذا فقط ما كنت أبحث عنه ، وأوضح بشكل أفضل أنه مستحيل
شكرا جزيلا.
تحية
مرحبًا ، أشكرك كثيرًا على المعلومات ، خاصة الجزء المتعلق بإضافة مستخدمين متعددين في ملف .htpasswd.
باركك الله!
مبروك مقال جيد جدا وواضح وسهل الهضم. شكرا جزيلا
يعطيني خطأ 500 عندما أدخل اسم المستخدم وكلمة المرور
AuthType الأساسية
AuthName "Tocc tocc"
AuthUserFile /var/www/html/.pass/.htpasswd
يتطلب المستخدم أكيرا
ما أعظم ما يحدث لي للتعليق دون النظر إلى التعليقات الأخرى perodna.
تعمل وظيفة رائعة رائعة
مرحبًا ، برنامج تعليمي جيد ، ولكن هل يوجد بديل لـ "htpasswd"؟ أسأل لأنني أستخدم linux mint 17.3 وليس لدي الأمر ... هل يتعين علي تثبيته؟
حسنًا ، لقد اكتشفت ذلك ... اضطررت إلى تثبيته باستخدام sudo apt-get install apache2-utils
مرحبًا ، برنامج تعليمي ممتاز ، لقد فعلت ذلك تمامًا كما هو موضح هنا ، الشيء الوحيد هو أنه بدلاً من تنفيذ ما هو مذكور في النقطة 2:
nano / etc / apache2 / sites-available / default
عملت معي
nano /etc/Apache2/sites-enabled/000-default.conf
تحياتي ، إنه لا يعمل بالنسبة لي 🙁 لا يظهر مجلدي على الخادم الخاص بي ، أي أنني قمت بحماية مجلد / var / 222 / html / content ، وعندما أدخل من المستعرض لا يظهر مجلد المحتوى. مساعدة