למה תיקייה משותפת ב-Windows עובדת לפעמים ונכשלת בפעמים אחרות — troubleshooting של Kerberos, NTLM ו-Credentials

· עודכן בתאריך: · · Windows, SMB, Kerberos, NTLM, תיקיות משותפות, troubleshooting

היסטוריית עדכונים (גרסה ראשונה, פורסמה בתאריך 8 Sep 2026)
פרסום ראשון

“זה עבד אתמול.” “File Explorer יכול לפתוח, אבל האפליקציה לא.” “Restart תיקן.” בעיות בתיקייה משותפת נהיות קשות יותר לחקירה כשהניסיונות נראים זהים.

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

מדריך האבחון הזה מרכז פקודות להריץ, איך לקרוא את התוצאות שלהן, ואיפה לחקור אחר כך, במקום לקבוע סיבה מהתסמין לבדו. לפרוטוקולים עצמם ראו NTLM ו-Kerberos מוסברים. לתכנון אפליקציה ראו מלכודות של network drives ו-UNC path.

1. מתחילים כאן: המסקנה ומפתח התסמינים

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

תסמין הדבר הראשון לבדוק פרק רלוונטי
שמות וכתובות IP מתנהגים אחרת כתובת ה-IP בפועל של היעד ודרישות אימות לפי שם קישוריות, Kerberos
רק File Explorer מצליח זהות ההרצה של האפליקציה, session והפעולה הקשר הרצה
נראה שאין צורך בסיסמה החשבון שהשרת באמת קיבל Credentials
החלפת משתמשים נכשלת, או מופיעה שגיאה 1219 חיבורים קיימים לאותו שרת התנגשות חיבורים
Restart או sign-out מתקנים הבדלי מצב לפני ואחרי השינוי Restart
רק מחשבים מעודכנים, מחשבים מסוימים, או NAS נכשלים הגדרות signing, guest ו-NTLM האפקטיביות דרישות הגנה
פתיחה עובדת, אבל שמירה נכשלת הרשאות ושגיאות לפעולה בפועל Authorization ואפליקציות
מעבר מתסמינים לראיותבוחרים מועמדים מהתסמין, משווים ראיות מניסיונות מוצלחים וכושלים, ואז בוחרים תיקון.בוחרים את התסמיןמשווים הצלחה וכשלמצמצמים מועמדים עם לוגיםמשנים דבר אחד ובודקים שוב

איור 1: משתמשים בתסמינים כדי להתחיל את החקירה, ובוחרים תיקונים רק אחרי בדיקת הראיות.

ההיקף הוא shares של SMB 2/3 ב-Windows 11 וב-Windows Server על חיבורי TCP 445 רגילים. דוגמאות PowerShell מכוונות ל-Windows PowerShell 5.1. זה מדריך ביניים למנהלים ולמפתחים, אבל קוראים בלי גישת ניהול לשרת עדיין יכולים להתחיל באיסוף מידע בצד הלקוח.

מבחינים בין דומייני AD, shares של Windows ב-workgroup, וחשבונות ספציפיים ל-NAS. המאמר מכסה Kerberos רגיל של AD ותצורות חשבון מקומי קונבנציונליות; SMB over QUIC, אימות ספציפי ל-Azure Files, ותצורות IAKerb או LocalKDC בודדות מחוץ להיקף. עם DFS, רושמים גם את שרת היעד הסופי. הגדרות וברירות מחדל מבוססות על תיעוד רשמי שנבדק ב-8 בספטמבר 2026; התצורה בפועל גוברת על הנחות לפי שם ה-OS.

קודם מאשרים אילו חשבונות ה-share מוגדר לקבל. AD מנהל מרכזית חשבונות לארגון, בעוד חשבונות מקומיים שייכים למחשבים בודדים. NAS יכול להשתמש בחשבונות משלו או להצטרף ל-AD. לא גוזרים Kerberos מ-LAN ארגוני או NTLM מכך שהשרת הוא NAS; שואלים את המנהל על תצורת האימות.123

חשבון שמשמש ל-logon ל-share עדיפות החקירה
חשבון דומיין AD אחרי בדיקת קישוריות, בודקים שמות, SPNs וכרטיסים, ואז לוגי אימות
חשבון מקומי בשרת הקבצים של Windows מתחילים ב-credentials וסיסמאות ריקות, חיבורים קיימים, ודרישות הגנה
חשבון ספציפי ל-NAS בודקים את הגדרות חשבון ה-NAS ולוגי האימות, יחד עם guest access, signing ומגבלות NTLM
לא ידוע שומרים רישומים בצד הלקוח ובודקים את החשבון שהשרת קיבל

האם ה-PC שייך לדומיין ואילו credentials החיבור הזה השתמש בהם הן גם שאלות שונות. בדוגמאות למטה, CORP\alice הוא חשבון דומיין, בעוד FILESRV01\alice הוא חשבון מקומי בשרת הקבצים. משתמש באותו שם במחשב שלכם אינו בהכרח נותן למשתמש הזה אותן הרשאות בשרת.45

ב-diagram, solid line מציינת relation שתמיד מתקיים ו-dashed line מציינת relation מותנה (התנאים מופיעים בהסבר של כל relation ב-detail page). הרשימה המלאה של ה-relations (סה”כ 19, כולל evidence ו-certainty) וההגדרות של ה-concepts המרכזיים נמצאות ב-detail page של ה-knowledge map (ביפנית). Data: JSON-LD / Turtle

2. מפרידים את השלבים שמוסתרים מאחורי “לא מצליחים להתחבר”

פתיחת קובץ כוללת הקמת תקשורת, משא ומתן על דרישות SMB, אימות session, חיבור ל-share, וביצוע פעולת קובץ. אימות מוצלח אינו מעניק גישה ל-share או לקובץ. הודעה שאומרת שנתיב הרשת לא נמצא יכולה אפילו להיות קשורה ל-guest access שנדחה. לא מאבחנים כשל DNS מההודעה הזו לבדה.67

שלבים לפני שקובץ משותף נפתחקישוריות, משא ומתן SMB, אימות, חיבור ל-share ופעולות קובץ יכולים להיכשל בנפרד.Name resolution ו-TCPמשא ומתן על דרישות SMBSESSION_SETUP: אימותTREE_CONNECT: shareCREATE ופעולות קובץ אחרות

איור 2: הצלחה בשלב אחד אינה מוכיחה הצלחה בשלב הבא.

כאן, הצלחה פירושה ביצוע הפעולה המיועדת על הקובץ המיועד. לראות PC בתצוגת Network של File Explorer, לראות רשימת shares, ולקרוא קובץ מסוים אינם שקולים. רושמים את נתיב ה-UNC והפעולה שנכשלים בפועל, ולא רק אם רשימה גלויה.

3. אוספים ראיות לפני restart או שינוי הגדרות

מחיקת חיבורים או כרטיסים בהתחלה מסירה את המצב שרציתם להשוות. קודם רושמים את הזמן, נתיב UNC, משתמש, OS וחיבורים קיימים בלקוח. הפקודות הבאות בודקות מצב. כשחוקרים כשל של service, לא מתייחסים לתוצאות מהטרמינל האינטראקטיבי הזה כתוצאות מה-service עצמו.489

Get-Date -Format o
whoami /user
whoami /groups
Get-CimInstance Win32_OperatingSystem |
    Select-Object Caption, Version, BuildNumber
net use
cmdkey /list
klist

גם אוספים את הבאים במקום שיש הרשאה לשאול חיבורי SMB. תוצאת access-denied פירושה “לא ניתן לבצע את השאילתה”, לא “אין חיבורים”. מסמנים כל תוצאה שנאספה שוב כמנהל עם הקשר ההרצה הזה. elevation שקט של כל החקירה יכול לשנות את ה-logon session שמשווים.410

Get-SmbConnection | Format-List *
ראיה מה היא קובעת מה היא אינה קובעת לבדה
whoami זהות ההרצה המקומית של הפקודה החשבון שה-share המרוחק קיבל
net use חיבורי share ומיפויים הגלויים בהקשר הזה מצב חיבור ב-session אחר
cmdkey /list יעדים עם credentials שמורים האם אותם credentials שימשו הפעם
Get-SmbConnection חיבורים שהוקמו, credentials ומאפיינים קשורים ההיסטוריה המלאה של חיבור שנכשל או פרוטוקול אימות חד-משמעי
klist כרטיסים ב-logon session היעד פרוטוקול האימות שחיבור SMB הזה השתמש בו

ב-Get-SmbConnection בודקים Credential וגם UserName. זהות ה-logon המקומית וה-credentials ששימשו לחיבור ה-share יכולים להיות שונים. השוואת ServerName, ShareName, UserName ו-Credential בין ניסיונות מוצלחים וכושלים עוזרת לקבוע אם משווים את אותו חיבור.4

מידע שמור מול מצב פעילבודקים בנפרד credentials שמורים, חיבורי SMB וכרטיסי Kerberos.לוכדים באותו זמןCredentials שמוריםחיבורי SMB שהוקמוCache של כרטיסיםמשווים שימוש בפועל מול לוגים

איור 3: מבחינים בין מה שמור לבין מה שהחיבור הנחקר באמת השתמש בו.

הפלטים האלה מכילים שמות משתמש, שמות שרתים פנימיים, כתובות IP ומידע דומה. מגבילים גישה לרישומים שנאספו. לפני שמשתפים אותם החוצה, מאנונימים אותם תוך שמירה על היחסים הנחוצים להשוואה. אין צורך לפרסם סיסמאות, hashes או את הכרטיסים עצמם.

4. קודם בודקים name resolution ו-TCP 445

הבאה היא בדיקת קישוריות פעילה שרצה בלקוח. מחליפים את שם השרת בשם החיבור בפועל. רושמים name resolution וקישוריות TCP בנפרד.11

$Server = 'filesrv01.corp.example.com'
Resolve-DnsName -Name $Server
Test-NetConnection -ComputerName $Server -Port 445 -InformationLevel Detailed

אם TcpTestSucceeded הוא False, חוקרים הגעה לפני אימות בנקודה הזו. בודקים את כתובת ה-IP של היעד, VPN וניתוב, firewalls של לקוח ושרת, ואת נקודת ההאזנה של השרת. הצלחה או כשל של ping אינם הצלחה או כשל של חיבור TCP 445. ולהפך, קישוריות TCP מוצלחת משאירה את שם ה-share, האימות, signing וההרשאות לא מאומתים.11

פרשנות בדיקת חיבור TCPכשל בבדיקת TCP 445 מוביל לחקירת הגעה; הצלחה מובילה ל-SMB ולשלבים הבאים.לאכןבודקים TCP 445הצליח?בודקים יעד, נתיב, חסימהבודקים SMB, אימות, גישה

איור 4: הצלחת TCP היא ראיה שאפשר להמשיך לשלב הבא, לא שאימות הצליח.

כששם וכתובת IP מתנהגים אחרת, משווים RemoteAddress ואת תוצאות name resolution. שם קצר, FQDN ו-alias אינם בהכרח מגיעים לאותה IP. גם כשהם מגיעים, דרישות האימות בסעיף הבא נשארות נפרדות. אם שינוי השם נראה כמתקן את הבעיה, רושמים מה השתנה.

5. בודקים תנאי Kerberos כששמות ו-IP שונים

5.1. אותה IP אינה אומרת אותו אימות

כברירת מחדל, Windows אינו מנסה Kerberos כששם היעד הוא כתובת IP. אפשר להגדיר חריגים עם TryIPSPN ו-SPNs מבוססי IP, אבל הגישה התקנית במדריך הזה היא לקבע את שם ה-DNS הנכון ואת זהות השירות. הצלחה עם כתובת IP היא ראיה להשוואת name resolution, אימות וחיבורים קיימים; היא אינה מדגימה תיקון קבוע.12

דרישות האימות תלויות בשם החיבורבודקים דרישות Kerberos לפי שם ליעדי hostname, ומתחשבים בהתנהגות ברירת המחדל של אי-ניסיון Kerberos ליעדי כתובת IP.סימון היעד בנתיב UNCHostname או FQDNכתובת IPבודקים את ה-SPN לשם הזהאין ניסיון Kerberos כברירת מחדל

איור 5: גם כששני שמות מזהים את אותו התקן, שינוי שם החיבור משנה תנאי אימות.

Kerberos מבקש כרטיסים באמצעות מזהה שירות שנקרא SPN. פענוח alias של DNS ואימות נכון של השירות תחת אותו alias הם דברים שונים. וגם, לא כל כשל Kerberos מסתיים ב-fallback ל-NTLM. משתמשים בלוגים בפועל כדי להבחין אם fallback אפשרי, אם האימות נכשל, ואם NTLM מוגבל.131

5.2. מפרידים בין רכישת כרטיס לקבלה בשרת

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

setspn -Q cifs/filesrv01.corp.example.com
setspn -Q HOST/filesrv01.corp.example.com

היעדר רישום מפורש של cifs/... אינו מוכיח לבדו שחסר SPN. לחשבונות מחשב, SPN מסוג HOST יכול להחליף מחלקות שירות כמו cifs. ולהפך, מציאת רישום אינה שוללת בעיות כמו בעלות של חשבון שאינו חשבון השירות בפועל, או רישומים כפולים. מנהלי AD צריכים לאמת בעלות לפני שינוי רישומים; לא מוסיפים SPN מכנית רק כי שאילתה החזירה אין התאמה.14

מה בדיקות SPN וכרטיס קובעותפענוח SPN, רכישת כרטיס וקבלה בשרת הקבצים הן בדיקות נפרדות.בעלים של SPN והחלפת HOSTאפשר לרכוש כרטיס?הוא מתקבל לאימות SMB בפועל?משווים מול לוגים בצד השרת

איור 6: רכישת כרטיס אינה מבטיחה ששרת הקבצים יקבל אותו.

אחרי שמירת המצב המקורי, ייתכן שתצטרכו לנסות klist get cifs/filesrv01.corp.example.com. זו בדיקה פעילה שמבקשת כרטיס ומשנה את ה-cache. אם היא נכשלת, חוקרים הגעה ל-DC, סנכרון זמן, שמות ו-SPNs. אם היא מצליחה, גישת SMB עדיין אינה מובטחת. לא מיישמים תוצאות כרטיס של משתמש אינטראקטיבי על בעיה שמתרחשת ב-service.81

ל-NAS בלי דומיין או לאימות עם חשבונות מקומיים, קודם בודקים את שיטות האימות והגדרות החשבון שה-share תומך בהן במקום להתחיל בתיקוני SPN של AD. גם בסביבות עם יכולות אימות חדשות יותר, מעדיפים רישומי חיבור על הנחות לפי שמות מוצרים.

6. File Explorer מצליח, אבל האפליקציה נכשלת

6.1. שם משתמש תואם אינו מספיק

משווים את חשבון ההרצה, logon session, elevation, נתיב UNC והפעולה. Service רץ ב-session אחר מ-logon אינטראקטיבי גם כשהוא מוגדר עם אותו חשבון משתמש. מיפויי אות כונן גם הם מוגבלים ל-logon sessions, לכן קודם מבחינים בין Z:\data לבין \\server\share\data. מעבר לנתיב UNC מטפל בבעיית אות הכונן; הוא אינו מעניק גם אימות או הרשאות.10

File Explorer ו-service משתמשים בהקשרים שוניםגם באותו PC, משווים logon אינטראקטיבי ו-logon של service כ-sessions נפרדים עם credentials משלהם.אותו PCLogon אינטראקטיביLogon של serviceחיבורים וגישה ב-session הזהחיבורים וגישה ב-session אחר

איור 7: אותו PC ושם משתמש אינם בהכרח חולקים את אותו מצב חיבור.

מבקשים מהאפליקציה שנכשלת לרשום את מזהה התהליך, זהות ההרצה, מצב elevation, הנתיב בפועל, שם הפעולה, ה-exception המקורי וקוד השגיאה. אם היא משתמשת ב-impersonation, גם לוכדים את הזהות האפקטיבית של ה-thread שמבצע את הפעולה. לא סוגרים חקירת service רק כי session PowerShell של מנהל יכול לפתוח את ה-share.

6.2. חשבונות service וסוגי logon של משימות

כש-service משתמש ב-credentials ברירת המחדל שלו, LocalSystem מציג את credentials של המחשב ברשת, בעוד LocalService מציג credentials אנונימיים. לגישת LocalSystem ל-share של דומיין, ההרשאות הרלוונטיות שייכות לזהות שבשימוש בפועל, כמו חשבון המחשב, ולא למשתמש האינטראקטיבי. מימושים שמשתמשים ב-credentials מפורשים או ב-impersonation דורשים בדיקות משלהם.1516

הרשאות מקומיות מול הזהות המרוחקתעם credentials רשת ברירת מחדל, LocalSystem ו-LocalService מציגים זהויות שונות.Credentials ברירת מחדל של serviceLocalSystemLocalServiceCredentials של המחשבCredentials אנונימיים

איור 8: הרשאות מקומיות נרחבות אינן הופכות את ה-service למשתמש האינטראקטיבי ב-share המרוחק.

ב-Task Scheduler בודקים את סוג ה-logon וגם את שם החשבון. TASK_LOGON_S4U אינו שומר סיסמה ואינו מספק גישה לרשת או לקבצים מוצפנים. לא מניחים שמשימה שמוגדרת לא לשמור סיסמה יש לה אותם תנאים כמו logon אינטראקטיבי רגיל. מגדירים תהליכים עסקיים עם חשבון service מתאים, סוג logon והרשאות least-privilege במקום להסתמך על כך שמישהו פותח את ה-share ב-File Explorer קודם.17

7. מבחינים בין ארבעה מובנים של “אין צורך בסיסמה”

היעדר prompt אינו ראיה לגישה לא מאומתת. ייתכן שמשתמשים ב-credentials של ה-logon הנוכחי, ב-credentials שמורים, או ב-SMB session שהוקם. רשומה ב-cmdkey /list לבדה אינה קובעת שהחיבור השתמש בה.49

מה שרואים מה לאמת
לא הוזנה סיסמה האם credentials של logon או credentials שמורים אימתו את החיבור
אימות קרה קודם, אבל אין prompt הפעם האם SMB session קיים בשימוש חוזר
לחשבון המקומי המרוחק אין סיסמה האם מגבלת הסיסמה הריקה חלה
ה-share מקבל את החיבור כ-guest האם guest access תואם לדרישות signing והצפנה
מה היעדר prompt סיסמה אומרלא גוזרים גישה לא מאומתת מה-UI; מבחינים בין credentials, session קיים, סיסמה ריקה ו-guest access.אין prompt סיסמהבודקים את הזהות שהתקבלה בפועלCredentials או session קייםחשבון עם סיסמה ריקהGuest

איור 9: ממשקים שנראים זהים יכולים להסתיר מנגנוני אימות שונים.

כששרת הקבצים רץ Windows והמדיניות שמגבילה חשבונות מקומיים עם סיסמאות ריקות ל-logon במסוף מופעלת, logon-ים רשת רגילים עם החשבונות האלה מוגבלים. זה נפרד מההגדרה שמתירה guest access. אם מישהו אומר שמשתמש עם סיסמה ריקה התחבר קודם, קודם מאמתים בשרת אם החשבון הזה באמת אימת את החיבור הקודם. במקום לכבות את המגבלה כתגובה ראשונה, שוקלים חשבון מתאים עם סיסמה לגישת share.23

אם אתם מנהלים את שרת הקבצים של Windows, מריצים את הבאה ב-session PowerShell של מנהל באותו שרת בזמן שהגישה עובדת. לא מבלבלים בין Get-SmbConnection, שרץ בלקוח, לבין Get-SmbSession, שרץ בשרת שמקבל את החיבור.18

Get-SmbSession |
    Select-Object SessionId, ClientComputerName, ClientUserName, NumOpens

משתמשים ב-ClientComputerName ובזמן הניסיון כדי לאתר את ה-session הרלוונטי, ואז בודקים ClientUserName. זה מתאר SMB sessions שכבר הוקמו; הוא אינו מסביר חיבור שנכשל קודם או קובע אם השתמשו ב-Kerberos או ב-NTLM. אם לאותו לקוח יש כמה sessions, גם משווים זמני פעולת האפליקציה ורישומים ספציפיים ל-SMB. אם החיבור כבר נסגר, ממשיכים ללוגים בפרק 12.18

8. שגיאה 1219 וכשלים בהחלפת משתמשים

שגיאה 1219 מצביעה על התנגשות שכוללת כמה חיבורים לאותו שרת תחת שמות משתמש שונים. חיבורים קיימים לשרת הזה חשובים גם כששמות ה-share שונים. קודם משתמשים ב-net use וב-Get-SmbConnection כדי לבדוק חיבורים לשרת היעד. לפני שינוי credentials, מזהים קבצים פתוחים ואפליקציות שמשתמשות בחיבורים האלה.1920

Credentials יכולים להתנגש בין shares שוניםהוספת חיבור תחת משתמש אחר מאותו הקשר חיבור לאותו שרת יכולה להתנגש גם אם שם ה-share שונה.כבר מחוברים לשרת כמשתמש Aמתחברים ל-share אחר כמשתמש Bהתנגשות credentials: 1219בודקים חיבורים קיימים לפי שרת

איור 10: בודקים את השרת ואת ה-credentials יחד, לא רק את שם ה-share.

הבאה משנה מצב חיבור. רק אחרי עצירת השימוש ביעד וקבלת אישור להשפעה מנתקים ומתחברים מחדש לחיבור הספציפי שזיהיתם. מחליפים את שמות השרת, ה-share והחשבון בדוגמה. * מבקש prompt סיסמה אינטראקטיבי; לא שמים את הסיסמה ישירות בשורת הפקודה.5

net use "\\filesrv01.corp.example.com\data" /delete
net use "\\filesrv01.corp.example.com\data" /user:CORP\alice * /persistent:no

ניתוק share אחד יכול להשאיר חיבורים ל-shares אחרים או שימושים באותו שרת. בודקים את הרשימה שוב ומנקים רק את החיבורים הנחוצים לשרת היעד. לא הופכים net use * /delete או הימנעות בלתי מוגבלת מהתנגשויות עם aliases וכתובות IP לתיקון התקני. אחר כך מאמתים שהאפליקציה בפועל מתחברת עם ה-credentials המיועדים שלה.

9. כש-restart מתקן, שואלים מה השתנה

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

פעולה או מידע מה לעקוב אחריו בהשוואה
Restart לאפליקציה מצב האפליקציה משתנה, אבל חיבורי share ברמת ה-OS עשויים להישאר
ניתוק וחיבור מחדש של ה-share היעד בודקים אם חיבור ואימות מנוסים מחדש, ואם חיבורים אחרים נשארים
Sign-out או restart ל-OS כמה תנאים משתנים, כולל sessions, אפליקציות ורשת
Credentials שמורים נפרדים מחיבורים שהוקמו; הרישום שלהם בדרך כלל שורד restart של ה-OS
פרשנות workaround מוצלח של restartRestart משנה כמה תנאים, כך ששיפור לבדו אינו יכול לזהות סיבה אחת.Restart החזיר גישהמצב האפליקציהמצב חיבור ו-logonרשת ומצב אחרצריך ראיות לפני ואחרי

איור 11: Restart עשוי להחזיר שירות בלי להוכיח את הסיבה.

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

גם כש-restart דחוף כדי להחזיר שירות, שומרים קודם את פלטי פרק 3 ואת השגיאה המקורית במקום שאפשר. אחרי restart, מנסים את אותה פעולה באפליקציה המקורית לפני שפותחים את ה-share ב-File Explorer. פעולות ביניים מקשות להבחין אם ה-restart החזיר גישה או שפעולה אחרת שינתה את תנאי החיבור. זו אינה איסור על restart; זה נוהל רישום שתומך גם בשחזור וגם באבחון.

klist purge משנה מצב על ידי מחיקת כרטיסים. הוא אינו מכוון לחיבור שאינו משתמש ב-Kerberos ויכול להשפיע על שירותים אחרים באותו logon session. נמנעים מ”פשוט לנקות” לפני שמירת ראיות.8

10. כשלים אחרי עדכונים או רק בחלק מהמחשבים

10.1. לא מערבבים signing, guest access וחסימת NTLM

SMB signing מגן מפני שיבוש הודעות; זו הגדרה נפרדת מכך אם האימות משתמש ב-Kerberos או ב-NTLM. מדריך SMB signing הייעודי של Microsoft מציין ש-Windows 11 24H2 Pro, Enterprise ו-Education דורשים signing נכנס ויוצא כברירת מחדל, בעוד Windows Server 2025 דורש signing יוצא. בודקים את המהדורה ואת התצורה האפקטיבית, לא רק את שם ה-OS.7

ל-Home, המדריך הזה אומר ש-signing אינו נדרש, בעוד רשימת השינויים של Windows 11 24H2 כוללת את Home בין המהדורות שדורשות signing כברירת מחדל. לכן המסמכים נבדלים. במקום לדחות signing כלא רלוונטי ב-Home, משתמשים בפקודות למטה כדי לבדוק את המחשב הנחקר.721

דרישות הגנת SMB לבדיקה בנפרדפרוטוקולי אימות, SMB signing ו-guest access הן הגדרות שונות שכל אחת צריכה בדיקה.בודקים policy אפקטיביהרשאות Kerberos ו-NTLMדרישת SMB signingהרשאת guest access

איור 12: בדיקת הגדרה אחת אינה קובעת ששאר הדרישות מתקיימות.

Guest access אינו תומך ב-SMB signing או בהצפנה רגילים. לכן, התרת guests לבדה עשויה לא לפתור את הבעיה אם signing עדיין נדרש. מעדיפים להגדיר חשבונות מאומתים ו-signing ב-NAS. לא מתייחסים לכיבוי signing או להתקנת SMB1 כ-workaround קל.3

10.2. קוראים את התצורה בפועל, לא רק את ברירות המחדל

אוספים את הבאה ב-session PowerShell של מנהל בלקוח. זה קורא תצורה; מבחינים בינה לבין לכידת מצב חיבור של משתמש אינטראקטיבי.722

$config = Get-SmbClientConfiguration
$config | Format-List RequireSecuritySignature, EnableInsecureGuestLogons
if ($config.PSObject.Properties['BlockNTLM']) {
    $config | Format-List BlockNTLM
} else {
    'המאפיין BlockNTLM אינו זמין במערכת הזו.'
}

RequireSecuritySignature: False פירושו ש-signing אינו נדרש; הוא אינו מוכיח שכל חיבור אינו חתום. אם BlockNTLM חסר במערכת ישנה יותר, זה אינו מוכיח שמדיניות מגבלת NTLM אחרות חסרות. חסימת NTLM של לקוח SMB זמינה החל מ-Windows 11 24H2 ומ-Windows Server 2025, ואפשר גם לציין אותה לחיבורי share בודדים. בודקים גם את אפשרויות החיבור של האפליקציה ואת מדיניות הארגון, לא רק הגדרות גלובליות.722

הגדרות גלובליות אינן קובעות את כל החיבורבודקים מדיניות ארגון, אפשרויות חיבור ודרישות שרת בנוסף לברירות המחדל של ה-OS.ברירות מחדל של OS ומהדורהדרישות החיבור בפועלמדיניות ארגון ואפשרויות חיבוריכולות ודרישות השרתבודקים לוגים לסיבת הדחייה

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

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

11. האימות מצליח, אבל פתיחה או שמירה נכשלות

ל-share של Windows בודקים גם הרשאות share וגם את ההרשאות על התיקיות והקבצים שמתחת. שתיהן חייבות להתיר את אותה פעולה לאותה זהות. בודקים חברות בקבוצות, רשומות deny וירושה; הוספת Everyone אינה אומרת שכל גישה חייבת להצליח. בודקים גישה אפקטיבית באמצעות נתיב הגיבוי בפועל בשרת והזהות שהשרת באמת קיבל.23

אימות שונה מ-authorizationגם אחרי שאימות מצליח, גם הרשאות share וגם הרשאות קובץ חייבות לאפשר את הפעולה המבוקשת.זהות מאומתתהרשאות shareהרשאות הקובץ שמתחתמבצעים את הפעולה המיועדת

איור 14: קביעת זהות והחלטה מה מותר לזהות הזו לעשות הם שלבים נפרדים.

רישום תיקייה, קריאת קובץ, יצירה, overwrite, שינוי שם ומחיקה הן פעולות שונות. לאפליקציה ששומרת על ידי יצירת קובץ זמני והחלפת המקורי, קריאה מוצלחת אינה מספיקה. מעבר לאימות ולהרשאות, חוקרים sharing violations, קיבולת, נתיבים או קבצים שנעלמו באמצעות השגיאה המקורית.24

גם File.Exists של .NET מחזיר false לתנאים כמו הרשאות לא מספיקות. בודקים אם הודעת “הקובץ אינו קיים” של האפליקציה מבוססת רק על ערך ההחזרה הזה. קוד אבחון צריך לרשום exceptions מהפעולה שבאמת צריך לבצע.25

$Path = '\\filesrv01.corp.example.com\data\sample.txt'
try {
    Get-Item -LiteralPath $Path -ErrorAction Stop |
        Select-Object FullName, Length, LastWriteTime
} catch {
    $_.Exception.GetType().FullName
    'HRESULT=0x{0:X8}' -f $_.Exception.HResult
    $_.Exception.Message
}

זה בודק שליפת metadata, לא קריאה או כתיבה מוצלחת של התוכן. כדי לבדוק I/O בפועל, משחזרים את הפעולה המיועדת על קובץ בדיקה אחרי אימות authorization והשפעה. שמירת שגיאות במקום להמיר את כולן ל-“הקובץ לא נמצא” גם מקלה על החקירה הבאה.

12. משווים לוגים כדי לצמצם את הסיבה

12.1. מבחינים בין לקוח, שרת קבצים ו-DC

בלקוח בודקים Microsoft-Windows-SMBClient/Connectivity ו-Microsoft-Windows-SMBClient/Security ב-Event Viewer. בשרת קבצים של Windows, אירועי Security 4624 ל-logon מוצלח ו-4625 ל-logon שנכשל יכולים לעזור כש-auditing מופעל. ל-logon-ים רשת של SMB בודקים logon type 3. ב-NAS משתמשים בלוגי האימות וה-share הספציפיים למוצר.262728

Logon type 3 באירוע 4624 אינו ספציפי ל-SMB. גם כשהזמן, המקור והחשבון תואמים, האירוע לבדו אינו מזהה share או SMB session. משווים אותו עם Get-SmbConnection, לוגים ספציפיים ל-SMB, ו-trace במקום שנחוץ.27426

השוואת לוגים משלושה מקומותמשווים לוגים של לקוח, שרת קבצים, ובמקום שנחוץ DC באמצעות זמן ומידע חיבור.לקוח: לוגי SMBClientמתאימים זמן, מקור וחשבוןשרת קבצים: לוגי אימותDC: כרטיסים ואימות credentialsקוראים כראיה לאותו ניסיון

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

מריצים את הבאה בשרת הקבצים של Windows, עם הרשאה לקרוא את לוג Security. רושמים את הזמן מיד לפני הניסיון הנחקר ומבקשים מהמנהל לאשר ש-auditing הנדרש להצלחה ולכשל מופעל. הדוגמה הזו שולפת את עשר הדקות האחרונות ומשתמשת בשמות שדות XML ולא בטקסט הודעה מקומי או במיקומי שדות.2728

$Start = (Get-Date).AddMinutes(-10)
Get-WinEvent -FilterHashtable @{
    LogName = 'Security'; Id = 4624, 4625; StartTime = $Start
} -ErrorAction Stop | ForEach-Object {
    $event = $_
    $xml = [xml]$event.ToXml()
    $fields = @{}
    foreach ($item in $xml.Event.EventData.Data) {
        $fields[$item.Name] = [string]$item.'#text'
    }
    if ($fields['LogonType'] -eq '3') {
        [pscustomobject]@{
            Time = $event.TimeCreated
            EventId = $event.Id
            User = $fields['TargetUserName']
            Domain = $fields['TargetDomainName']
            SourceIp = $fields['IpAddress']
            Authentication = $fields['AuthenticationPackageName']
            Status = $fields['Status']
            SubStatus = $fields['SubStatus']
            LogonId = $fields['TargetLogonId']
        }
    }
} | Format-List

ל-4624 קוראים את חשבון היעד של ה-logon החדש, לא את ה-Subject שדיווח על האירוע. ב-4625, שם המשתמש היעד הוא השם שניסו, לא זהות שהתקבלה. קוראים Status ו-SubStatus יחד לסיבת הכשל. אם AuthenticationPackageName אומר רק Negotiate, זה לבדו אינו קובע אם השתמשו ב-Kerberos או ב-NTLM.2728

12.2. כשאין לוגים, או רק כרטיס

מציאת אין אירוע אינה מוכיחה שאימות לא התרחש. בודקים auditing, הרשאות קריאה, הבדלי שעון, האם בודקים את השרת הנכון, שימוש חוזר ב-session קיים, וכשל לפני אימות. שימוש חוזר בחיבור SMB קיים אינו מייצר 4624 חדש בכל פעם שנפתח קובץ.274

פרשנות אירועי לוג חסריםכשאירוע חסר, בודקים תנאי איסוף ו-sessions קיימים במקום להסיק מיד שאימות לא התרחש.אין אירוע תואםAuditing, הרשאות, זמן, יעדשימוש חוזר ב-session קייםכשל לפני אימות

איור 16: רישום חסר אינו שקול לפעולה שמעולם לא התרחשה.

בסביבות AD, אירוע 4769 ב-DC עוזר לזהות בקשות כרטיס שירות של Kerberos, בעוד 4776 עוזר לזהות אימות credentials של NTLM. הנפקת כרטיס לבדה אינה מוכיחה שימוש או קבלה בשרת הקבצים, ו-4776 לבדו אינו מזהה SMB כשירות היעד. משלבים זמן, מקור, חשבון יעד ורישומים בצד השרת. אם נשארת עמימות, מבקשים ממנהל לאסוף trace בהיקף צר.2930

13. מאמתים פעולה אמינה אחרי התיקון

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

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

איור 17: מאמתים הצלחה בתנאי הכשל המקוריים, לא רק ניסיון מוצלח בודד ב-File Explorer.

הערות חקירה מה לשמור
סביבה OS של לקוח ושרת, מהדורה, build, ואימות AD מול NAS-specific
תנאי שחזור זמן ואזור זמן, נתיב UNC, IP יעד, אפליקציה, זהות, elevation ופעולה
ראיות שגיאה מקורית, חיבורים קיימים, credentials בשימוש ואירועים קשורים
תיקון שינוי אחד, הסיבה שלו, ההשפעה ונוהל rollback
אימות תוצאות לאותה פעולה, כולל sign-out, restart או חיבור מחדש ל-VPN במקום שרלוונטי

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

קישורים

  1. Microsoft Learn, Kerberos authentication troubleshooting guidance. בדיקת שמות, זמן, DC-ים ושגיאות.  2 3

  2. Microsoft Learn, Accounts: Limit local account use of blank passwords to console logon only. הגבלת חשבונות מקומיים עם סיסמאות ריקות.  2

  3. Microsoft Learn, Insecure guest logons in SMB2 and SMB3. Guest access ומגבלות signing/הצפנה.  2 3

  4. Microsoft Learn, Get-SmbConnection. שאילתת חיבורי SMB שהוקמו ו-credentials.  2 3 4 5 6 7 8

  5. Microsoft Learn, Net use. מחיקת חיבור שצוין ובקשת סיסמה.  2

  6. Microsoft Learn, SMB troubleshooting guidance. נקודות התחלה לחקירת תקשורת SMB וכשלים. 

  7. Microsoft Learn, Control SMB signing behavior. דרישות signing וברירות מחדל לפי OS ומהדורה.  2 3 4 5

  8. Microsoft Learn, klist. רישום, רכישה ומחיקה של כרטיסים הן פעולות שונות.  2 3 4

  9. Microsoft Learn, cmdkey. ניהול credentials שמורים.  2 3

  10. Microsoft Learn, Services and Redirected Drives / Mapped drives are not available from an elevated prompt. Logon sessions ומיפויי כוננים ל-services ולתהליכים מוגבהים.  2

  11. Microsoft Learn, Test-NetConnection. אבחון פורטי TCP ויעדים.  2

  12. Microsoft Learn, Configuring Kerberos over IP. התנהגות ברירת מחדל ליעד IP ותצורות חריגות. 

  13. Microsoft Learn, Service principal names. SPNs כמזהי שירות. 

  14. Microsoft Learn, setspn. שאילתות SPN והחלפת HOST למחלקות שירות.  2

  15. Microsoft Learn, LocalSystem Account. Credentials של המחשב שמוצגים לשרתים מרוחקים. 

  16. Microsoft Learn, LocalService Account. Credentials רשת אנונימיים. 

  17. Microsoft Learn, TASK_LOGON_TYPE enumeration. מגבלות גישת רשת של S4U logon. 

  18. Microsoft Learn, Get-SmbSession. שאילתת SMB sessions שהוקמו וחשבונות לקוח בשרת הקבצים.  2

  19. Microsoft Learn, System Error Codes (1000–1299). הגדרת ERROR_SESSION_CREDENTIAL_CONFLICT. 

  20. Microsoft Learn, Cannot use different credentials for a network share. חיבורים לאותו שרת עם credentials שונים. 

  21. Microsoft Learn, What’s new in Windows 11, version 24H2 for IT pros. שינויים בדרישות SMB signing ברירת מחדל. שימו לב לסתירה לגבי Home מול מדריך SMB signing הייעודי. 

  22. Microsoft Learn, Block NTLM connections on SMB. חסימת NTLM גלובלית ולפי חיבור.  2

  23. Microsoft Learn, Access control overview. זהויות, הרשאות, ירושה וגישה אפקטיבית. Microsoft Learn, SMB share and NTFS permissions

  24. Microsoft Learn, File Security and Access Rights. הרשאות גישה לפעולות קובץ בודדות. 

  25. Microsoft Learn, File.Exists. החזרת false בכשלי גישה. 

  26. Microsoft Learn, SMB troubleshooting guidance. לוגי אירועי SMB וחקירה נוספת.  2

  27. Microsoft Learn, 4624: An account was successfully logged on. רישום logon-ים חדשים וחבילות אימות.  2 3 4 5

  28. Microsoft Learn, 4625: An account failed to log on. חשבונות שניסו, Status ו-SubStatus.  2 3

  29. Microsoft Learn, 4769: A Kerberos service ticket was requested. בקשות כרטיס שירות ב-DC. 

  30. Microsoft Learn, 4776: The computer attempted to validate the credentials for an account. רישומי אימות credentials של NTLM. 

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

העמודים האלה ממקמים את הנושא בהקשר רחב יותר של שירותים והחלטות.

המאמר קשור ישירות לשירותים הבאים.

שאלות נפוצות

שאלות נפוצות בפניות בנושא המאמר.

אם restart מחזיר גישה לתיקייה משותפת, זה מוכיח ש-cache גרם לבעיה?
לא. Restart משנה יחד את האפליקציה, logon sessions, חיבורי SMB, מצב הרשת ותנאים אחרים. לפני restart רושמים את היעד, זהות ההרצה, חיבורים קיימים, כרטיסים ושגיאות, ואז משווים מול ניסיון מוצלח. credentials שמורים וחיבורי SMB שכבר הוקמו הם דברים שונים.
למה אפשר לפתוח share לפי כתובת IP אבל לא לפי שם השרת?
קודם בודקים אם שתי הצורות מגיעות לאותה כתובת IP של היעד. גם כשהן מגיעות, תנאי האימות שונים: Windows כברירת מחדל אינו מנסה Kerberos ליעד שהוא כתובת IP. חוקרים name resolution בנפרד מ-SPNs ומאימות. הצלחה עם כתובת IP לבדה אינה תיקון קבוע.
למה File Explorer יכול לגשת ל-share שהאפליקציה שלי לא יכולה?
חשבון ההרצה, logon session, elevation, credentials או הפעולה המבוקשת עשויים להיות שונים. Service רץ ב-session אחר מ-logon אינטראקטיבי. שמות משתמש תואמים אינם קובעים תנאים שקולים, לכן בודקים את התהליך שנכשל עצמו ואת רישומי האימות בצד השרת.
חיבור בלי בקשת סיסמה אומר שהחיבור משתמש ב-guest access?
היעדר prompt אינו מספיק כדי לדעת. החיבור עשוי להשתמש ב-credentials של ה-logon הנוכחי, ב-credentials שמורים, או בחיבור SMB קיים. חשבון מקומי עם סיסמה ריקה וחיבור guest גם הם שונים. בודקים איזה חשבון השרת באמת קיבל.
אם klist מציג כרטיס cifs, האם SMB מחובר עם Kerberos?
החזקת כרטיס ושימוש בו לחיבור SMB הנחקר הם עובדות שונות. משווים לוגים בצד השרת עם זמן החיבור, המקור והחשבון. klist get מבקש כרטיס; זו אינה תצפית פסיבית על המצב המקורי.

פרופיל הכותב

עמוד היכרות עם כותב המאמר.

Go Komura

מנהל KomuraSoft LLC

מתמחה בפיתוח תוכנה עבור Windows, ייעוץ טכני וחקירת תקלות, בעיקר בפרויקטים עם מערכות קיימות ובאגים שקשה לשחזר.

קישורים ציבוריים

חזרה לבלוג