לדלג לתוכן

שיעור 16: ניתוח זירת פשע – לוגים ודיאגנוסטיקה (Logs & Sysdiagnose) - Facilitator Guide

הנחיית למדריך (Instructor Note): מסמך זה משמש כתסריט ומערך שיעור (Lesson Plan) עבורך. הוא כולל את ההסברים המילוליים שמומלץ להעביר לכיתה, שלבי הדגמה צעד-אחר-צעד, ובוקסה של העמקה טכנית שנועדה לעזור לך לענות על שאלות מתקדמות מצד תלמידים. הקפד לשמור על סנכרון עם Asset A. כלל ההדגמות במערך זה מתבססות על ממשק המשתמש הגרפי (GUI), בהתאם לגישת הקורס. פקודות Terminal שמורות להעמקה טכנית בלבד.


1. ה-Unified Logging System: הבנת הגישה המודרנית של אפל ללוגים

Objective

להבין מדוע מערכת ההפעלה המודרנית זנחה את קובצי הטקסט הפשוטים לטובת מאגר לוגים אחוד (Unified Logging), וכיצד לגשת אליו בצורה חזותית.

Discussion (Script)

  • כולנו זוכרים את קובצי הטקסט בתיקיית /var/log.
  • בעבר, היינו קוראים אותם כדי להבין למה משהו קרס.
  • אבל אפל שינתה לחלוטין את הגישה.
  • כיום, הכל עובר ל-Unified Logging System:
  • זהו מאגר נתונים דחוס ובינארי.
  • אלו כבר לא קובצי טקסט פשוטים.
  • למה השינוי?
  • מק מודרני מייצר מיליוני שורות לוג בשנייה.
  • קובץ טקסט רגיל היה פוגע בביצועים.
  • הידעתם? במערכות ישנות כמו El Capitan, מחשב נקי היה מצטבר לכ-4,000 שורות לוג כל 8-9 שעות, ולעיתים מילא את כל נפח הלוג בדקות בודדות!
  • כתיבה רציפה שוחקת את כונן ה-SSD ומאיטה את המחשב.
  • המערכת החדשה חכמה יותר:
  • היא שומרת את רוב הלוגים בזיכרון ה-RAM (Unified Memory).
  • היא כותבת לדיסק רק מידע באמת קריטי.
  • מה לגבי הלוג הישן, system.log?
  • הוא עדיין קיים.
  • יש תוכנות היסטוריות שעוד כותבות אליו.
  • אבל הוא מוגדר כ-Deprecated (מיושן ולא נתמך).
  • עדיף לא להסתמך עליו.
  • המסקנה: כדי לקרוא לוגים חדשים, חייבים להשתמש בכלים הייעודיים של macOS.

Demonstration

  1. פתחו חלון Finder.
  2. נווטו לתיקיית /var/log:
  3. השתמשו בקיצור Go to Folder (Cmd+Shift+G).
  4. הציגו את הקובץ system.log:
  5. פתחו אותו.
  6. הראו שיש בו מעט מאוד מידע לעומת העבר.
  7. הסבירו היכן נמצא המידע האמיתי:
  8. רוב המידע מאוחסן באופן בינארי בתיקיית /var/db/diagnostics.
  9. התיקייה אינה ניתנת לקריאה כטקסט פשוט.
  10. לשם כך, נצטרך להכיר את אפליקציית Console.

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה) * **מטרת ה-Unified Logging System:** * להוריד עומס I/O מהדיסק. * למנוע Observer Effect (מצב בו עצם כתיבת הלוגים תוקעת את המערכת). * **מבנה הנתונים:** * הלוגים מקודדים בפורמט בינארי ודחוסים. * המערכת מנהלת מחזור חיים (Retention) באופן אוטומטי. * **רמות לוג (Log Levels):** * קיימות רמות שונות: Default, Info, Debug, Fault, Error. * לוגים מסוג Info ו-Debug לרוב נשמרים רק בזיכרון. * הם נמחקים במהירות, אלא אם הוגדר פרופיל תצורה (Configuration Profile) הדורש שמירה לדיסק. * **כלים למנהלי מערכת מתקדמים:** * ניתן להשתמש בפקודת הטרמינל `log show`. * מאפשרת קריאת לוגים ישירה. * מאפשרת סינון לפי תאריך, רמה או תהליך (Process).

2. שליטה באפליקציית Console: סינון רעשים ואיתור תקלות בזמן אמת

Objective

ללמוד להשתמש בכלי ה-Console המובנה (GUI) כדי לסנן רעשי רקע ולאתר במדויק תהליכים בעייתיים או קריסות של אפליקציות.

Discussion (Script)

  • הבנו שאי אפשר פשוט לפתוח קובץ טקסט.
  • אז איך קוראים את ה-Unified Logging?
  • בדיוק בשביל זה יש לנו את אפליקציית ה-Console.
  • איך זה נראה בפנים?
  • כשתפתחו אותה, תראו "מפל" של נתונים.
  • אלפי שורות רצות בכל שנייה.
  • אי אפשר לקרוא את זה ככה - זה כמו לחפש מחט בערמת שחת.
  • החוכמה היא לסנן ולהשקיט את הרעש:
  • אפשר לעצור את הזרימה.
  • אפשר לחפש לפי תת-מערכת (Subsystem).
  • אפשר לסנן לפי תהליך (Process) מסוים.
  • כך נמצא בדיוק את מה שאנחנו מחפשים.
  • מה לגבי קריסות?
  • אם תוכנה ארגונית קרסה, לא נחפש במפל.
  • נמצא את דוח הקריסה (Crash Report) המסודר.
  • הוא ממתין לנו תחת הקטגוריה Diagnostic Reports באותה אפליקציה.

Demonstration

  1. פתחו את אפליקציית Console:
  2. נמצאת בתיקיית /Applications/Utilities.
  3. הדגימו את השטף:
  4. לחצו על כפתור Start בסרגל העליון.
  5. הראו את "מפל" הנתונים המהיר.
  6. השתלטו על המידע:
  7. לחצו על כפתור Pause כדי לעצור את השטף.
  8. בצעו סינון ממוקד:
  9. בסרגל החיפוש, הקלידו מונח כמו mdmclient.
  10. שנו את הפילטר שנוצר מ-Any ל-Process.
  11. הראו כיצד זה מסנן תהליכים בלבד.
  12. הציגו דוחות קריסה:
  13. בחלונית הצדדית (Sidebar), נווטו אל Crash Reports (או Diagnostic Reports).
  14. הראו דוח קריסה של תוכנה (קובץ .ips).
  15. לחצו לחיצה כפולה לפתיחת הדו"ח לתצוגה מעמיקה.

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה) * **תפקיד ה-Console:** * משמש כ-Log Viewer הראשי של macOS. * מתרגם נתונים בינאריים של ה-Unified Logging לקריאה אנושית. * **חיפוש מתקדם:** * ניתן לשמור שאילתות סינון (Saved Searches) בסרגל העליון. * מעולה לצוותי IT שחוקרים שגיאות קבועות (כלי אבטחה, חומת אש, VPN). * **קובצי קריסה (`.ips`):** * מכילים מידע קריטי על סיבת הקריסה. * דוגמה: שגיאת `EXC_BAD_ACCESS` המעידה על גישה לא חוקית לזיכרון. * מכילים Stack Trace שמראה איזה Background Process הוביל לבעיה. * **שיתוף והסלמה:** * לחיצה כפולה פותחת את הדוח בחלון Quick Look. * שם יש כפתור Share לשליחה מהירה לצוות הפיתוח או ל-AppleCare.

3. יצירת Sysdiagnose: דיאגנוסטיקה מתקדמת מתוך ה-GUI

Objective

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

Discussion (Script)

  • לפעמים הבעיה מורכבת מדי.
  • סריקה מהירה ב-Console פשוט לא מספיקה.
  • במקרים כאלה, נדרשת תמונה מלאה:
  • לוגים, מצב הרשת, תהליכים שרצים וצריכת זיכרון.
  • הכל נאסף ברגע נתון.
  • כאן נכנס לתמונה ה-Sysdiagnose:
  • זהו תהליך אבחון עמוק.
  • הוא עלול לקחת כמה דקות ולהאט זמנית את המחשב.
  • בסיומו, נקבל קובץ ארכיון ענק (סביב 300MB).
  • הקובץ מכיל את כל המידע הנדרש להמשך חקירה.
  • איך מפיקים אותו?
  • הדרך הקלה והוויזואלית היא מתוך ה-Activity Monitor.
  • אין צורך לכתוב שורת קוד אחת.
  • מה עושים איתו?
  • מעבירים אותו לצוות ה-Escalation הארגוני שלנו.
  • או לחלופין, מעבירים ישירות ל-AppleCare.

Demonstration

  1. פתחו את Activity Monitor:
  2. נמצא בתיקיית /Applications/Utilities.
  3. הציגו את תפריט הפעולות:
  4. לחצו על סמל העיגול עם 3 הנקודות (או גלגל שיניים).
  5. נמצא בשורת התפריטים העליונה של האפליקציה.
  6. הדגימו את ההפעלה:
  7. בחרו באפשרות Run System Diagnostics (או System Diagnostics Options).
  8. אזהרה למדריך:
  9. אל תשלימו את התהליך בפועל במהלך ההדרכה כדי לא לעכב את השיעור.
  10. הסבירו לתלמידים שברגע שמאשרים, התהליך מתחיל לרוץ ברקע.
  11. הסבירו את שלב הסיום:
  12. בסיום התהליך, יקפוץ אוטומטית חלון Finder.
  13. החלון נפתח לרוב בנתיב מוסתר (/var/tmp/).
  14. הוא יחשוף את הארכיון המוכן עם סיומת .tar.gz.

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה) * **מה מכיל ארכיון ה-Sysdiagnose?** * מופק כקובץ `.tar.gz`. * כולל העתק של מערכת הלוגים המלאה. * דוחות צריכת סוללה ותצורות רשת. * פלטים מפקודות דיאגנוסטיקה כמו `system_profiler`. * סטטוס תהליכי מערכת ועוד. * **קיצור מקלדת סודי (גלובלי):** * ניתן לייצר Sysdiagnose ברקע מכל מקום: `Cmd + Option + Ctrl + Shift + Period (.)` * מסך המחשב עשוי להבהב לשנייה כאינדיקציה לתחילת האיסוף. * **הפקה מרחוק:** * מנהלי מערכת שעובדים מרחוק (SSH) יכולים להשתמש בטרמינל. * הפקודה: `sudo sysdiagnose`.

4. חדר הבריחה: איתור שורת הלוג הספציפית ("האקדח המעשן") ב-Console

Objective

שימוש ב-Console כדי לדבג בעיית תקשורת בסביבה מנוהלת, ולהוכיח כי פקודת MDM נחסמה על ידי פיירוול ארגוני.

Discussion (Script)

  • עד עכשיו עסקנו בתקלות כלליות.
  • בואו נדבר על תרחיש קלאסי לאיש IT:
  • ה-MDM הארגוני לא מצליח לדחוף אפליקציות או פרופילים למק.
  • משתמשים מתלוננים שמשהו חסר.
  • איש הרשתות בארגון נשבע ש"אצלו הכל פתוח ב-Firewall".
  • איך נוכיח לו שהבעיה ברשת ולא במק?
  • ניכנס לאפליקציית Console.
  • נסנן פעילויות שקשורות לסוכן ה-MDM במק (תהליך ה-mdmclient).
  • מה אנחנו מחפשים?
  • שגיאות של 'Network Connection Lost' או 'Timeout'.
  • בזמן שהמק מנסה לפנות לשרתי אפל (APNs) או לשרת ה-MDM.
  • מציאת "האקדח המעשן":
  • ברגע שנמצא שורת לוג המעידה על חסימה, יש לנו הוכחה ניצחת.
  • ההוכחה מגיעה ישירות מתוך מערכת ההפעלה.
  • זהו ה"חדר בריחה" שלנו - מציאת הרמז שמוביל לסגירת הטיקט.

Demonstration

  1. פתחו שוב את אפליקציית Console.
  2. ודאו שהניטור פעיל:
  3. לחצו על Start במידת הצורך.
  4. בצעו חיפוש ראשוני:
  5. בשורת החיפוש העליונה, הקלידו mdmclient ולחצו על Enter.
  6. שנו את סוג המסנן:
  7. בסרגל החיפוש האפור שמופיע, שנו את סוג המסנן מ-Any ל-Process.
  8. הראו שזה מבודד רק את הלוגים של תהליך ה-MDM.
  9. הוסיפו מילת מפתח משנית:
  10. הקלידו מונח כמו timeout או error.
  11. השאירו את הסינון שלו על "Any".
  12. נתחו את התוצאות:
  13. בחרו באחת השורות שהתקבלו.
  14. הציגו את התוכן המלא של הודעת הלוג בחלונית התחתונה.
  15. הסבירו שכאן מאתרים קודי שגיאה של רשת, בעיות SSL או חסימות.

Instructor Deep-Dive

העמקה טכנית למדריך (לחץ לפתיחה) * **תהליך ה-`mdmclient`:** * זהו ה-Daemon שאחראי על תקשורת מול שרת ה-MDM וה-APNs של אפל. * **חסימות רשת (APNs):** * אם פורט 5223 או 443 חסומים על ידי ה-Firewall הארגוני, יש בעיית חיבור ל-APNs. * כתוצאה מכך, פקודות הפצה והטמעה לא יגיעו למק. * **עוצמת הסינון ב-Console:** * שימוש בחיפוש כפול (Multiple Filters) הוא כלי חזק במיוחד. * חותכים את המידע גם לפי התהליך (mdmclient) וגם לפי טקסט חופשי. * **חיפוש לאחור בטרמינל:** * לאיתור לוג ישן שנשמר בזיכרון הדיסק, השתמשו בפקודה: `log show --predicate 'process == "mdmclient"' --info`