تحميل موازنة webapps مع مصادقة IIS NTLM و الانتحال ASP.NET

منشور من طرف Zevenet | 2 أغسطس 2018

نظرة عامة

يدمج ملقم ويب Microsoft ، خدمات معلومات الإنترنت (IIS) ، العديد من آليات المصادقة من أجل التحقق من صحة المستخدمين ضد أنظمة Active Directory أو المستقلة (المصادقة المستندة إلى LDAP). NTLM هو بروتوكول مصادقة Windows Challenge / Response الذي يمكن استخدامه في الشبكات والتطبيقات التي يمكن استخدامها في كلتا البيئتين.

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

انتحال الهوية ASP.NET يسمح لتطبيقات الويب بمصادقة وتفويض المستخدمين الذين يعتمدون على Microsoft IIS.

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

كيف يعمل NTLM؟

يعتمد بروتوكول NTLM على بروتوكول HTTP / S حيث يبدأ عميل معين بمصافحة ما مجموعه خطوات 6 لإنشاء جلسة مصادقة.

يتطلب تبادل تأكيد جلسة العمل الخطوات التالية:

1. يبدأ العميل طلبًا مجهولاً لمورد معين إلى خادم ويب.

GET / HTTP

2. استجابات الخادم مع رسالة غير مصرح بها وطريقة المصادقة التي يجب على العميل استخدامها.

401 Unauthorized
WWW-Authenticate: NTLM

3. يقوم العميل بإعادة إرسال الطلب بما في ذلك تحدي مصادقة تنسيق NTLM.

GET / HTTP
Authorization: NTLM <base64-encoded first NTLM message>

4. ردود الخادم مع رسالة غير مصرح بها وطلبات لمزيد من المعلومات إلى العميل.

401 Unauthorized
WWW-Authenticate: NTLM <base64-encoded second NTLM message>

5. يقوم العميل بإعادة إرسال الطلب بما في ذلك باقي معلومات الجلسة.

GET / HTTP
Authorization: NTLM <base64-encoded third NTLM message>

6. يتصل الملقم مع وحدة تحكم المجال لإكمال طلب المصادقة ثم يؤكد للعميل المصادقة.

HTTP 200 OK

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

كيفية تحميل تطبيقات الويب التوازن باستخدام مصادقة NTLM؟

مع Zevenet ، هناك طرق رئيسية 2 لتحميل التوازن وبناء تطبيق ويب يستند إلى NTLM في توافر عالية ، مع موازن تحميل بسيط طبقة 4 TCP أو مع وكيل طبقة 7 للميزات المتقدمة.

بسيط موازنة تحميل NTLM في طبقة 4

من أجل تحميل تطبيقات الويب الخاصة بالتوازن باستخدام دعم مصادقة NTLM بتكوين بسيط ، يمكننا إنشاء مزارع تستند إلى LSLB مع ملف تعريف L4xNAT. يمكننا استخدام بروتوكولات HTTP أو HTTPS.

ثم ، في التكوين العام تأكد من أن البروتوكول المستخدم TCP لكن يمكننا الاختيار NAT or DTA وفقا لطوبولوجيا المطلوبة.

في مجلة الخدمات في القسم ، يلزم تعيين الاستمرارية للتأكد من أن المصادقة لعميل معين تذهب دائمًا إلى نفس الخلفية ، وإلا فلن يمكن إجراء مصادقة الاتصال.

وأخيرًا ، أضف قائمتك من الخلفيات وقم بتكوين فحص صحي كما هو موضح في الأقسام أدناه.

موازنة NTLM في طبقة 7

تسمح هذه الخيارات بمعالجة بيانات HTTP / S بدعم NTLM باستخدام وكيل طبقة 7 الذي تم تكوينه من خلال وحدة LSLB ومزرعة HTTP. لهذا ، نحتاج إلى إنشاء مزرعة لـ HTTP أو HTTPS وفقًا لمتطلبات SSL للخدمة الافتراضية. والفرق الوحيد سيكون مستمع تكوين في إعدادات العالمية من المزرعة التي تم إنشاؤها.

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

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

فحوصات صحية متقدمة لمواقع مصادقة NTLM

لإنشاء فحص صحي متقدم مخصص لتطبيقات NTLM المصادق عليها ، يتعين علينا إنشاء تحت المسار / البيرة / المحلية / zevenet / التطبيق / libexec برنامج نصي للتحقق من الواجهة الخلفية كما هو موضح أدناه. فمثلا، check_ntlm.sh مع الأذونات المناسبة.

#!/bin/bash

# get input parameters
BACKEND=$1
PORT=$2
USER=$3
PASS=$4
URI=$5
STRING=$6

/usr/bin/curl http://${BACKEND}:${PORT}${URI} --ntlm -negotiate -u ${USER}:${PASS} 2>/dev/null | grep "${STRING}" &>/dev/null

if [ $? == 0 ]
then
	# if the curl command doesn't fail then notify that the backend is up
	echo "Server ${BACKEND}:${PORT} OK"
	exit 0
fi

# if the the curl command fails then notify that the backend is down
echo "Server ${BACKEND}:${PORT} is not OK"
exit 1

في مجلة رصد >> Farmguardian أو إذا تم تطبيقه ، أو إضافته إلى الأمر للتحقق من خدمة المزرعة.

يمكننا اختبار البرنامج النصي للتحقق الصحي من خلال تنفيذ:

/usr/local/zevenet/app/libexec/check_ntlm.sh 192.168.0.99 80 johndoe johnsecret "/my/uri" "DOCTYPE html"

مع العلم أن الخلفية IP هو 192.168.0.99 الميناء هو 80 HTTP، JohnDoe هو مستخدم زائف في مجالنا ، johnsecret هي كلمة المرور الوهمية ، "/ my / uri" هو URI للتحقق من و "DOCTYPE html" هي السلسلة التي يمكن العثور عليها في بيانات الاستجابة عند نجاح الطلب.

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

عندما يتم اختبار فحص الصحة لدينا من سطر الأوامر وجاهزًا ، يمكننا تعيينه للمزارع التي تم تكوينها بدعم NTLM.

استمتع تحميل تطبيقات الويب الخاصة بك NTLM متوازنة!

مشاركة مع :

وثائق بموجب شروط رخصة جنو للوثائق الحرة.

هل كان المقال مساعدا؟!

مقالات ذات صلة