חיים ליזרוביץ מסביר על שגיאה 401 Unauthorized באתרים מבוססי IIS בעזרת הכלי המובנה WFetch לאחרונה חקרתי בעיה בגישה לאתרי IIS אנונימים וקבלת הודעת השגיאה: HTTP/1.1 401 Unauthorized.
ניתן לבצע בדיקה פשוטה באמצעות הכלי WFetch שנמצא ב IIS Diagnostic, את הודעת השגיאה ניתן לראות בבירור ע"י הכלי:
שם המשתמש שמוקצה לחשבון אנונימי, הינו בד"כ: IUSR_,
כאשר ComputerNmae = שם של אותו שרת שמחזיק את ה IIS.
סיסמת המשתמש האנונימי ממוקמת בשני מקומות: ב MetaBase של ה IIS ובסיסמת המשתמש במערכת הפעלה (SAM):
הבעיה יכולה להתרחש באחד מהמצבים הבאים:
1. המשתמש IUSR נכנס למצב DISABLE, ננעל, נמחק, תוקף סיסמא שפגה.
2. הסיסמא של אותו משתמש שונה בהגדרות ה IIS ובהגדרות המשתמש תחת ה Computer Management.
לרוב, כדי לפתור את הבעיה בצורה עקיפה, מנהל הרשת מגדיר את אותו SITE תחת CREDENTIALS מסויימים שהוא בונה לצורך כך, פתרון בהחלט לא מומלץ ולא כדאי.
כיצד לדעת את סיסמת המשתמש האנונימי ?
על מנת לזהות את שם המשתמש, אנו נקליד את הפקודה הבאה, תחת תקיית ה AdminScripts:
c:
cd InetpubAdminScripts
במידה וה default web site מופעל כאנונימי, אנו נפעיל את הפקודה הבאה לזיהוי השם משתמש:
cscript.exe adsutil.vbs get w3svc/anonymoususername
למציאת כל האתרים שמופעים אנונימים:
cscript.exe adsutil.vbs find anonymoususername
לזיהוי הסיסמא אנו נקליד (שימו לב שהסיסמא מסומנת בכוכביות):
cscript.exe adsutil.vbs get w3svc/anonymoususerpass
לצורך כך יש לערוך את הקובץ שנקרא Adsutil.vbs שנמצא מתחת לתקיית C:InetpubAdminScripts ולשנות את ה IsSecureProperty
בשורה המופיעה באדום ל False.
On Error Resume Next
Dim PropObj,Attribute
Set PropObj = GetObject("IIS://" & MachineName & "/schema/" & ObjectParameter)
If (Err.Number <> 0) Then
ReportError ()
WScript.Echo "Error trying to get the property: " & err.number
WScript.Quit (Err.Number)
End If
Attribute = PropObj.Secure
If (Attribute = True) Then
IsSecureProperty = False
Else
IsSecureProperty = False
End If
End Function
כעת נקליד את הפקודה הבאה על מנת לבדוק מה סיסמת המשתמש האנונימי:
cscript.exe adsutil.vbs get w3svc/anonymoususerpass
לאחר מציאת הסיסמא יש צורך לאפס את הסיסמא ב IIS עבור אתרים אנונימיים לסיסמא המוצגת. (אפשר לחלחל מה Default Web Site).
ניתן ע"י שינוי סיסמא ב GUI או ע"י הפקודה הבאה:
cscript.exe adsutil.vbs set w3svc///anonymoususerpass
חשוב מאוד !!! לצרכי אבטחה יש להחזיר את הערך שבקוד ל True !!
לאחר השינויים, אנו נעבוד עם WFetch על מנת לבדוק את הכניסה לאתר האנונימי, כאן ניתן לראות את ההודעה HTTP/1.1 OK.
ניתן להיעזר גם במאמר הבא:
http://support.microsoft.com/kb/297989
תודה לחיים על שיתוף המאמר
חיים ליזרוביץ
Microsoft Most Valuable Professional
Microsoft Certified IT professional / Enterprise & Server Administrator
Microsoft Certified Technology Specialist
Microsoft Certified System engineer& Administrator
Vmware Certified Professional
הבלוג של חיים ליזרוביץ


