טען איזון של Webapps עם אימות IIS NTLM ו- ASP.NET Imersonation

צפה בקטגוריות

טען איזון של Webapps עם אימות IIS NTLM ו- ASP.NET Imersonation

4 דק קריאה

סקירה כללית #

שרת האינטרנט של Microsoft, Internet Information Services (IIS), משלב מספר מנגנוני אימות כדי לאמת משתמשים כנגד מערכות Active Directory או עצמאיות (אימות מבוסס LDAP). NTLM הוא פרוטוקול האימות של Windows / Response, שניתן להשתמש בו ברשתות ויישומים שניתן להשתמש בהם בשתי הסביבות.

שני תרחישים שונים יכולים להילקח בחשבון: אימות אינטראקטיבי של NTLM הוא מורכב של שתי מערכות לקוח ובקר תחום המשמש לאחסון נתוני המשתמשים הדרושים כדי לשרת את האימותים, וכן אימות NTLM לא אינטראקטיבי כוללת שלוש מערכות שונות ללקוח, לשרת יישומים ולדומיין על מנת לאפשר למשתמש לגשת למשאב מסוים ביישום.

התחזות ASP.NET היתרים ליישומי אינטרנט כדי לאמת ולהסמיך משתמשים המסתמכים על Microsoft IIS.

במאמר זה אנו נסביר כיצד לטעון יישומי איזון המשלבים את פרוטוקול NTLM לתרחישים לאימות משתמשים שאינם אינטראקטיביים.

כיצד פועל NTLM? #

פרוטוקול NTLM מסתמך על פרוטוקול HTTP / S שבו לקוח מסוים מתחיל לחיצת יד של סך של 6 צעדים על מנת להקים את הפגישה מאומתים.

לחיצת היד המאומתת דורשת את השלבים הבאים:

1. הלקוח יוזם בקשה אנונימית של משאב מסוים לשרת אינטרנט.

GET / 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, ישנן 2 דרכים עיקריות לאיזון עומסים ולבנות יישום אינטרנט מבוסס NTLM בזמינות גבוהה, עם מאזן עומסים פשוט שכבה 4 TCP או עם פרוקסי שכבה 7 לתכונות מתקדמות.

איזון עומסים פשוט NTLM בשכבה 4 #

על מנת לטעון יישומי אינטרנט איזון עם תמיכה אימות NTLM עם תצורה פשוטה, אנחנו יכולים ליצור חוות LSLB מבוסס עם פרופיל L4xNAT. אנו יכולים להשתמש בפרוטוקולי HTTP או HTTPS.

לאחר מכן, בתצורה הכללית להבטיח כי הפרוטוקול הוא בשימוש TCP אבל אנחנו יכולים לבחור NAT or DTA על פי הטופולוגיה הנדרשת.

ב השירותים שלנו בסעיף, נדרש להגדיר את ההתמדה כדי להבטיח שהאימות של לקוח מסוים תמיד יעבור לאותו backend, אחרת אי אפשר היה לבצע את אימות החיבור.

לבסוף, הוסף את רשימת backends והגדרת תצוגת בריאות כפי שצוין בסעיפים הבאים.

איזון עומס NTLM בשכבה 7 #

אפשרויות אלה מאפשרות לטפל בנתוני HTTP / S עם תמיכת NTLM עם שכבת ה- 7 של השכבה המוגדרת באמצעות מודול LSLB וחוות HTTP. לשם כך, אנחנו צריכים ליצור חווה עבור HTTP או HTTPS על פי דרישות SSL עבור השירות הווירטואלי. ההבדל היחיד יהיה מקשיב מוגדר ב הגדרות כלליות של החווה שנוצרה.

בשכבה זו, כמו היישום אינו מסוגל ליצור כל קובץ cookie ההפעלה עדיין על מנת ליצור התמדה או חיבור הצמדה, אנו יכולים לעשות שימוש הוספת קובצי Cookie אפשרות שמאפשרת לאיזון העומס ליצור עוגיה חדשה במהלך לחיצת היד הראשונה של אימות NTLM.

לבסוף, הוסף את רשימת backends והגדרת תצוגת בריאות כפי שצוין בסעיפים הבאים. ניתן להגדיר אפשרויות יישום נוספות ברמת Proxy הכלולה בחווה מסוג זה ותמיכת NTLM לא תושפע.

בדיקות בריאות מתקדמות עבור אתרי אימות NTLM #

כדי ליצור בדיקת בריאות מתקדמת מותאמת אישית עבור יישומים מאומתים של NTLM, עלינו ליצור מתחת לנתיב /usr/local/relianoid/app/libexec סקריפט לבדוק את ה- backend כמו שמוצג למטה. לדוגמה, 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 אם [ $? == 0 ] אז # אם הפקודה curl לא נכשלת אז הודע שהקצה האחורי למעלה הד "שרת ${BACKEND}:${PORT} אישור" יציאה 0 fi # אם פקודת ה-curl נכשלת אז הודע שה-backend הוא למטה הד "שרת ${BACKEND}:${PORT} לא תקין" יציאה 1

ב ניטור >> Farmguardian סעיף, אם חל, או להוסיף אותו לפקודה כדי לבדוק את שירות החווה.

אנו יכולים לבדוק את התסריט לבדיקת בריאות על ידי ביצוע:

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

בידיעה כי ה- IP backend הוא 192.168.0.99 היציאה היא 80 HTTP, פלוני אלמוני הוא משתמש דמה בתחום שלנו, יוהנסקרט היא סיסמת הדמה, "/ My / uri" הוא URI לבדוק ו "DOCTYPE html" היא המחרוזת שתמצא בנתוני התגובה כאשר הבקשה מוצלחת.

אנו ממליצים ליצור משתמש דמה המסוגל להתחבר לתחום אך ללא הרשאות, על מנת לכלול אותו בבדיקת הבריאות של שירותינו. זו הסיבה לשימוש ב- פלוני אלמוני משתמש דמה בבדיקת הבריאות המותאמת אישית שלנו.

כאשר בדיקת הבריאות שלנו נבדק משורת הפקודה ומוכן, אנחנו יכולים להקצות אותו לחוות מוגדר עם תמיכה NTLM.

תהנה עומס שלך מאוזנת NTLM יישומי אינטרנט!

📄 הורד מסמך זה בפורמט PDF #

    דואר אלקטרוני: *

    פותח ומופעל ע"י BetterDocs