موازنة تحميل تطبيقات الويب مع مصادقة IIS NTLM وانتحال شخصية ASP.NET

عرض الفئات

موازنة تحميل تطبيقات الويب مع مصادقة IIS NTLM وانتحال شخصية ASP.NET

4 دقائق للقراءة

نظرة عامة #

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

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

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

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

كيف يعمل NTLM؟ #

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

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

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

الحصول على / HTTP

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

401 مصادقة WWW غير المصرح بها: NTLM

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

GET / تفويض HTTP: NTLM

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

401 مصادقة WWW غير المصرح بها: NTLM

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

GET / تفويض HTTP: NTLM

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

HTTP 200 موافق

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

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

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

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

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

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

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

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

موازنة تحميل NTLM في الطبقة 7 #

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

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

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

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

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

#!/bin/bash # الحصول على معلمات الإدخال 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 # إذا لم يفشل أمر curl، فأعلم أن الواجهة الخلفية تعمل echo "Server ${BACKEND}:${PORT} OK" exit 0 fi # إذا فشل أمر curl، فأعلم أن الواجهة الخلفية معطلة echo "Server ${BACKEND}:${PORT} is not OK" exit 1

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

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

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

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

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

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

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

📄 قم بتنزيل هذه الوثيقة بصيغة PDF #

    ُ:البريد الالكتروني *