איסוף יומנים של Microsoft SharePoint (Office 365)

נתמך ב:

במסמך הזה מוסבר איך לאסוף יומנים של Microsoft SharePoint (Office 365) ב-Google Security Operations באמצעות Bindplane.

‫Microsoft SharePoint היא פלטפורמה מבוססת-אינטרנט לשיתוף פעולה שמשתלבת עם Microsoft 361. יומני הביקורת של SharePoint מתעדים את פעילויות המשתמשים, כולל פעולות על קבצים, פעילויות בתיקיות, פעולות שיתוף, פעולות ברשימות ופעולות ניהול של האתר. הגישה ליומנים האלה מתבצעת דרך סוכן ה-SIEM של Microsoft Defender for Cloud Apps, שמאחזר נתוני ביקורת מ-SharePoint Online ומ-OneDrive for Business ומעביר אותם כ-syslog למקלט מקומי.

לפני שמתחילים

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

  • מכונה של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • אם אתם משתמשים בשרת proxy, ודאו שהיציאות של חומת האש פתוחות
  • דייר (tenant) ב-Microsoft 365 עם SharePoint Online
  • רישיון ל-Microsoft Defender for Cloud Apps (כלול ב-Microsoft 365 E5 או כתוסף)
  • תפקיד אדמין גלובלי או אדמין אבטחה בפורטל Microsoft Defender
  • שרת Windows או Linux עם Java 8 ואילך להפעלת סוכן ה-SIEM (יכול להיות אותו מארח כמו Bindplane)
  • הפעלת רישום ביומן ביקורת מאוחד ב-Microsoft 365

הפעלת רישום מאוחד ביומן ביקורת

כדי שאפליקציות Microsoft Defender for Cloud יוכלו לתעד נתוני ביקורת של SharePoint, צריך להפעיל את רישום הביקורת המאוחד בדייר Microsoft 365.

  1. נכנסים לפורטל התאימות של Microsoft Purview.
  2. עוברים אל ביקורת.
  3. אם מופיעה בקשה, לוחצים על התחלת הרישום ביומן של פעילות משתמשים ואדמינים. הערה: אחרי שמפעילים את רישום היומן המאוחד, יכול להיות שיעברו עד 12 שעות לפני שהתוכן יהיה זמין.
  • אפשר גם להפעיל רישום מאוחד ביומן הביקורת באמצעות PowerShell:

    Connect-ExchangeOnline
    Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true
    

קבלת פרטי כניסה ל-Google SecOps בשביל סוכן Bindplane

כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים אחת מהשיטות הבאות:

  • פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
  • פריסות מדור קודם: אפשר להמשיך להשתמש בקובץ האימות של ה-API להעברת נתונים (אפשרות 2) עד שה-API להעברת נתונים יפסיק לפעול ב-20 ביולי 2027.
  1. נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
  2. נכנסים לדף IAM & Admin > Service Accounts.
  3. לוחצים על יצירת חשבון שירות.
  4. מספקים את פרטי ההגדרה הבאים:
    • שם חשבון השירות: מזינים שם לחשבון (לדוגמה, bindplane-ingest).
    • Service account description: מזינים תיאור (לדוגמה, Bindplane agent log ingestion).
  5. לוחצים על Create and continue.
  6. בקטע Grant this service account access to project, לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
  7. לוחצים על המשך ואז על סיום.
  8. לוחצים על חשבון השירות שיצרתם ועוברים לכרטיסייה Keys.
  9. לוחצים על Add key > Create new key.
  10. בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
  11. שומרים את קובץ המפתח בתור ingestion-auth.json בספריית ה-collector של Bindplane (/opt/observiq-otel-collector/ingestion-auth.json ב-Linux או C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json ב-Windows), או מעדכנים את creds_file_path ב-config.yaml כך שיתאים לנתיב שבו שמרתם אותו.
  12. עוברים אל IAM & Admin > Settings ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את כלי הייצוא.

אפשרות 2: הורדה של קובץ האימות להטמעת נתונים (מדור קודם)

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל הגדרות SIEM > סוכני איסוף.
  3. מורידים את קובץ האימות להטמעת נתונים.
  4. שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של Bindplane.

איך מקבלים את מספר הלקוח ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Profile.
  3. מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.

התקנת הסוכן של Bindplane

מתקינים את הסוכן של Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.

התקנת חלונות

  1. פותחים את שורת הפקודה או את PowerShell כאדמין.
  2. מריצים את הפקודה הבאה:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. מחכים שההתקנה תסתיים.

  4. מאמתים את ההתקנה על ידי הרצת:

    sc query observiq-otel-collector
    

    השירות צריך להופיע עם הערך RUNNING.

התקנה ב-Linux

  1. פותחים טרמינל עם הרשאות root או sudo.
  2. מריצים את הפקודה הבאה:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. מחכים שההתקנה תסתיים.

  4. מאמתים את ההתקנה על ידי הרצת:

    sudo systemctl status observiq-otel-collector
    

    השירות צריך להופיע כפעיל (פועל).

מקורות מידע נוספים להתקנה

אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.

הגדרת סוכן Bindplane להטמעת syslog ושליחה ל-Google SecOps

איתור קובץ התצורה

  • ‫Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

עריכת קובץ תצורה

  • מחליפים את כל התוכן של config.yaml בהגדרות הבאות:

    receivers:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/sharepoint:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<CUSTOMER_ID>'
        endpoint: chronicle.googleapis.com
        log_type: SHAREPOINT
        raw_log_field: body
    
    service:
      pipelines:
        logs/sharepoint_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/sharepoint
    

פרמטרים להגדרה

מחליפים את ה-placeholders הבאים:

  • הגדרת הייצוא:

    • ‫<CUSTOMER_ID>: מספר הלקוח ב-Google SecOps שהעתקתם בשלב הקודם
    • ‫creds_file_path: הנתיב המלא לקובץ מפתח JSON של חשבון השירות (אפשרות 1):
      • Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • ‫location: מחליפים את <LOCATION> באזור של מופע Google SecOps (לדוגמה, us,‏ europe או asia-southeast1). ערך זה מתווסף לתחילית chronicle.googleapis.com של הכלי לייצוא. רשימה מלאה של נקודות הקצה האזוריות מופיעה במאמר Regional Endpoints.
    • ‫project: מחליפים את <PROJECT_NUMBER> במספר הפרויקט שמופיע בקטע IAM & Admin > Settings.
    • ‫endpoint: צריך להשאיר את ההגדרה chronicle.googleapis.com.

מייצא API להטמעה מדור קודם

  • אם אתם משתמשים בקובץ האימות להטמעת נתונים מאפשרות 2, החליפו את הבלוק exporters בקוד הבא. מגדירים את creds_file_path לנתיב של קובץ האימות להטמעת נתונים. אם המכונה נמצאת מחוץ לארה"ב, מחליפים את malachiteingestion-pa.googleapis.com בנקודת הקצה האזורית (לדוגמה, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/sharepoint:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<CUSTOMER_ID>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: SHAREPOINT
        raw_log_field: body
    

שמירת קובץ התצורה

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • Linux: מקישים על Ctrl+O, אחר כך על Enter ואז על Ctrl+X
    • Windows: לוחצים על קובץ > שמירה

מפעילים מחדש את הסוכן של Bindplane כדי להחיל את השינויים.

כדי להפעיל מחדש את הסוכן של Bindplane ב-Linux:

  1. מריצים את הפקודה הבאה:

    sudo systemctl restart observiq-otel-collector
    
  2. מוודאים שהשירות פועל:

    sudo systemctl status observiq-otel-collector
    
  3. בודקים אם יש שגיאות ביומנים:

    sudo journalctl -u observiq-otel-collector -f
    

כדי להפעיל מחדש את הסוכן של Bindplane ב-Windows:

  1. בוחרים אחת מהאפשרויות האלה:

    • שורת הפקודה או PowerShell כאדמין:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • מסוף השירותים:
      1. מקישים על Win+R, מקלידים services.msc ומקישים על Enter.
      2. מאתרים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
  2. מוודאים שהשירות פועל:

    sc query observiq-otel-collector
    
  3. בודקים אם יש שגיאות ביומנים:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

הגדרת סוכן SIEM של Microsoft Defender for Cloud Apps להעברת יומני SharePoint

‫Microsoft SharePoint Online הוא שירות ענן ואין לו יכולת מובנית להעברת syslog. כדי להעביר את יומני הביקורת של SharePoint באמצעות syslog, משתמשים בסוכן ה-SIEM של Microsoft Defender for Cloud Apps, שמאחזר התראות ופעילויות מ-Defender for Cloud Apps ומעביר אותן כהודעות syslog (בפורמט CEF) לסוכן Bindplane.

דרישות מוקדמות לסוכן SIEM

  • שרת Windows או Linux (יכול להיות מכונה וירטואלית) עם:

    • ‫Java 8 או גרסה מתקדמת יותר מותקנת
    • ‫Transport Layer Security (TLS) 1.2 ואילך
    • מעבד (CPU):‏ 2 ליבות
    • מקום בכונן: 20GB
    • ‫RAM: ‏2GB

שלב 1: הגדרת סוכן SIEM בפורטל Microsoft Defender

  1. נכנסים לפורטל Microsoft Defender.
  2. לוחצים על Settings.
  3. בוחרים באפשרות אפליקציות בענן.
  4. בקטע System, בוחרים באפשרות SIEM agents.
  5. לוחצים על הוספת סוכן SIEM ובוחרים באפשרות SIEM כללי.
  6. לוחצים על הפעלת האשף.
  7. מזינים את פרטי ההגדרה הבאים:
    • שם: מזינים שם תיאורי (לדוגמה, Chronicle-Bindplane-SharePoint).
    • בחירת פורמט ה-SIEM: בוחרים באפשרות CEF.
  8. לוחצים על הבא.
  9. מזינים את פרטי החיבור הבאים של Syslog:
    • מארח syslog מרוחק: מזינים את כתובת ה-IP או את שם המארח של סוכן Bindplane (לדוגמה, 192.168.1.100).
    • מספר היציאה של Syslog: מזינים 514 (או את היציאה שהוגדרה בסוכן Bindplane config.yaml).
    • פרוטוקול Syslog מרוחק: בוחרים באפשרות UDP (צריך להתאים לסוג המקבל בהגדרות של סוכן Bindplane).
  10. לוחצים על הבא.
  11. מגדירים את סוגי הנתונים לייצוא:
    1. מפעילים את פס ההזזה של פעילויות.
    2. בתפריט הנפתח החל על של פעילויות, מגדירים מסננים שיכללו פעילויות ב-SharePoint:
      1. בוחרים באפשרות האפליקציה שווה ל ובוחרים באפליקציות Microsoft SharePoint Online ו-Microsoft OneDrive for Business.
    3. מפעילים את פס ההזזה של התראות אם רוצים לקבל גם התראות מדיניות שקשורות ל-SharePoint.
  12. לוחצים על עריכה ותצוגה מקדימה של התוצאות כדי לוודא שהמסנן תואם לפעילויות הצפויות.
  13. לוחצים על הבא.
  14. מעתיקים את האסימון שמוצג בדף הסיכום ושומרים אותו בצורה מאובטחת.
  15. לוחצים על סיום.

שלב 2: הורדה והפעלה של קובץ ה-JAR של סוכן SIEM

  1. מורידים את סוכן ה-SIEM ממרכז ההורדות של מיקרוסופט.
  2. מחלצים את קובץ ה-ZIP שהורד בשרת שבו יפעל סוכן ה-SIEM.
  3. מריצים את סוכן ה-SIEM באמצעות הפקודה הבאה:

    java -jar mcas-siemagent-0.87.20-signed.jar --token <TOKEN>
    

מחליפים את <TOKEN> בטוקן שהועתק מהפורטל של Microsoft Defender.

שלב 3: מגדירים את סוכן ה-SIEM כך שיפעל כשירות

כדי לוודא שהעברת היומנים תתבצע באופן רציף, צריך להגדיר את סוכן ה-SIEM כך שיופעל אוטומטית:

Linux:

  • מוסיפים את פקודת ההפעלה אל /etc/rc.local או יוצרים שירות systemd:

    java -jar /opt/mcas-siemagent/mcas-siemagent-0.87.20-signed.jar --token <TOKEN> &
    

Windows:

  • מגדירים משימה מתוזמנת:
    1. פותחים את Task Scheduler (מתזמן המשימות).
    2. יוצרים משימה חדשה עם האפשרות הפעלה גם אם המשתמש מחובר וגם אם לא.
    3. מגדירים את הפעולה להרצת קובץ ה-JAR עם פרמטר האסימון.
    4. מבטלים את הסימון של האפשרות Stop the task if it runs longer than (עצירת המשימה אם היא נמשכת יותר מ-).

שלב 4: מאמתים את החיבור של סוכן ה-SIEM

  1. בפורטל Microsoft Defender, עוברים אל הגדרות > אפליקציות בענן > סוכני SIEM.
  2. מוודאים שהסטטוס של סוכן ה-SIEM הוא מחובר (ירוק).
  3. במארח של סוכן Bindplane, מוודאים שהודעות syslog מתקבלות:

    sudo journalctl -u observiq-otel-collector -f
    
  4. ב-Google SecOps, מחפשים יומנים עם metadata.log_type = "SHAREPOINT" כדי לוודא שהיומנים נבלעו.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
התרחש metadata.event_timestamp מנותח באמצעות מסנן תאריכים בפורמטים "MM/dd/yyyy HH:mm:ss A"‏,"MM/dd/yyyy HH:mm:ss a"‏,"M/d/yyyy HH:mm:ss A"
has_principal metadata.event_type מוגדר כ-"USER_RESOURCE_ACCESS" אם has_principal וגם (has_target_resource או has_target), אחרת מוגדר כ-"STATUS_UPDATE" אם has_principal, אחרת מוגדר כ-"GENERIC_EVENT"
has_target_resource metadata.event_type
has_target metadata.event_type
metadata.product_name metadata.product_name צריך להגדיר את הערך "SHAREPOINT"
EventData metadata.product_version הערך הועתק ישירות
metadata.vendor_name metadata.vendor_name צריך להגדיר את הערך "SHAREPOINT"
נוצר principal.asset.attribute.labels מוזגו תוויות עם המפתח "נוצר" מ-Created והמפתח "שונה לאחרונה" מ-LastModified
LastModified principal.asset.attribute.labels
SamAccountName principal.asset.hostname הערך הועתק ישירות
SamAccountName principal.hostname הערך הועתק ישירות
מסד נתונים principal.process.file.names מוזג ממסד נתונים
UserEmail principal.user.email_addresses המידע מוזג מ-UserEmail אם הוא תואם לביטוי הרגולרי של כתובת אימייל
שם משתמש principal.user.user_display_name הערך הועתק ישירות
EventType security_result.description הערך הועתק ישירות
ספרייה target.file.full_path הערך הועתק ישירות
עלה target.file.names מוזג מ-Leaf
ItemType target.resource.type הערך הועתק ישירות
SecUserURL target.url הערך הועתק ישירות
SecUserRole target.user.attribute.roles התפקיד מוזג עם השם מ-SecUserRole
SecUserEmail target.user.email_addresses מוזג מ-SecUserEmail אם יש התאמה לביטוי הרגולרי של כתובת אימייל
SecGroupName target.user.group_identifiers המיזוג בוצע מ-SecGroupName
SecUserName target.user.user_display_name הערך הועתק ישירות
SecSamAccountName target.user.userid הערך הועתק ישירות

יומן שינויים

צפייה ביומן השינויים של המנתח הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.