איסוף יומני המערכת של macOS

גרסת כלי הניתוח: 2.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומני מערכת של macOS ב-Google Security Operations באמצעות Bindplane. מערכת macOS משתמשת במערכת הרישום המאוחדת של Apple כדי לתעד אירועים ברמת המערכת, כולל אימות, הפעלת תהליכים, פעילות ליבה והתנהגות אפליקציות. אפשר להעביר את היומנים האלה באמצעות syslog למרכז איסוף מרוחק כדי לבצע ניתוח ומעקב אבטחה מרכזיים.

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

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

  • מופע של Google SecOps.
  • מארח Windows 2016 ואילך או Linux עם systemd.
  • אם מריצים את הסוכן מאחורי שרת proxy, צריך לוודא שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
  • הרשאת אדמין בנקודות הקצה של macOS שיעבירו את היומנים.
  • ‫macOS 10.12 (Sierra) ואילך עם תמיכה ברישום מאוחד ביומן.

קבלת קובץ אימות להטמעת נתונים ב-Google SecOps

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

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

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

התקנת סוכן Bindplane

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

התקנה ב-Windows

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

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

התקנה ב-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
    

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

אפשרויות התקנה נוספות מפורטות במדריך ההתקנה.

הגדרה של סוכן Bindplane להטמעה של Syslog ושליחה אל Google SecOps

  1. גישה לקובץ ההגדרות:

    • מאתרים את הקובץ config.yaml. בדרך כלל, הוא נמצא בספרייה /observiq-otel-collector/ ב-Linux או בספריית ההתקנה ב-Windows.
    • פותחים את הקובץ באמצעות כלי לעריכת טקסט (לדוגמה, nano,‏ vi או Notepad).
  2. עורכים את הקובץ config.yaml באופן הבא:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <PLACEHOLDER_CUSTOMER_ID>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'MACOS'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    
  • מחליפים את היציאה ואת כתובת ה-IP לפי הצורך בתשתית.
  • מחליפים את <PLACEHOLDER_CUSTOMER_ID> במזהה הלקוח בפועל.
  • מעדכנים את /path/to/ingestion-authentication-file.json לנתיב הקובץ שבו נשמר קובץ האימות בקטע קבלת קובץ אימות להעברה ל-Google SecOps.

מפעילים מחדש את סוכן 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"
    

הגדרת העברה של syslog ב-macOS

ב-macOS נעשה שימוש במערכת רישום מאוחדת. כדי להעביר יומנים לסוכן Bindplane באמצעות syslog, צריך להגדיר את שירות syslogd המובנה בכל נקודת קצה של macOS.

אפשרות 1: הגדרת העברה של syslog באמצעות syslog.conf

  1. פותחים את Terminal בנקודת הקצה של macOS.
  2. עורכים את קובץ התצורה של syslog:

    sudo nano /etc/syslog.conf
    
  3. מוסיפים את השורה הבאה בסוף הקובץ כדי להעביר את כל היומנים באמצעות UDP לסוכן Bindplane:

    *.*     @<BINDPLANE_IP_ADDRESS>:514
    
    • מחליפים את <BINDPLANE_IP_ADDRESS> בכתובת ה-IP של המארח של סוכן Bindplane (לדוגמה, 192.168.1.100).
  4. שומרים את הקובץ ויוצאים.

  5. מפעילים מחדש את שירות ה-syslog:

    sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
    sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
    

אפשרות 2: הגדרת העברה של syslog באמצעות asl.conf

  1. פותחים את Terminal בנקודת הקצה של macOS.
  2. עורכים את קובץ ההגדרות של ASL:

    sudo nano /etc/asl.conf
    
  3. מוסיפים את השורה הבאה כדי להעביר את היומנים לשרת syslog מרוחק:

    ? [= Sender kernel] forward <BINDPLANE_IP_ADDRESS>:514
    ? [<= Level notice] forward <BINDPLANE_IP_ADDRESS>:514
    
    • מחליפים את <BINDPLANE_IP_ADDRESS> בכתובת ה-IP של המארח של סוכן Bindplane.
  4. שומרים את הקובץ ויוצאים.

  5. מפעילים מחדש את שירות ה-syslog:

    sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
    sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
    

אימות העברת היומנים

  1. בנקודת הקצה של macOS, יוצרים הודעת יומן בדיקה:

    logger -p user.notice "Test syslog message for Bindplane"
    
  2. במארח של סוכן Bindplane, בודקים את היומנים של הסוכן כדי לראות הודעות נכנסות:

    sudo journalctl -u observiq-otel-collector -f
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
activityIdentifier_label additional.fields ממוזג
backtrace_label additional.fields ממוזג
bootUUID_label additional.fields ממוזג
category_label additional.fields ממוזג
chronicle_log_type_label additional.fields ממוזג
formatString_label additional.fields ממוזג
log_type_label additional.fields ממוזג
machTimestamp_label additional.fields ממוזג
messageType_label additional.fields ממוזג
parentActivityIdentifier_label additional.fields ממוזג
processImageUUID_label additional.fields ממוזג
senderImageUUID_label additional.fields ממוזג
senderProgramCounter_label additional.fields ממוזג
subprocess_label additional.fields ממוזג
subsystem_label additional.fields ממוזג
threadID_label additional.fields ממוזג
traceID_label additional.fields ממוזג
intermediary_host intermediary.hostname מיפוי ישיר
attributes.message metadata.description מיפוי ישיר
description metadata.description מיפוי ישיר
eventMessage metadata.description מיפוי ישיר
timestamp metadata.event_timestamp ניתוח הכתובות שברשימה: ISO8601
has_principal metadata.event_type מיפוי: true → STATUS_UPDATE
has_user metadata.event_type מיפוי: true → USER_UNCATEGORIZED
attributes.process metadata.product_event_type מיפוי ישיר
eventType metadata.product_event_type מיפוי ישיר
attributes.host principal.asset.hostname מיפוי ישיר
hostname principal.asset.hostname מיפוי ישיר
source principal.asset.hostname מיפוי ישיר
senderImagePath principal.file.full_path מיפוי ישיר
attributes.host principal.hostname מיפוי ישיר
hostname principal.hostname מיפוי ישיר
source principal.hostname מיפוי ישיר
command_line principal.process.command_line מיפוי ישיר
processImagePath principal.process.file.full_path מיפוי ישיר
attributes.pid principal.process.pid מיפוי ישיר
processID principal.process.pid מיפוי ישיר
process_id principal.process.pid מיפוי ישיר
userID principal.user.userid מיפוי ישיר
לא רלוונטי metadata.event_type קבוע: USER_UNCATEGORIZED
לא רלוונטי metadata.product_name קבוע: MacOS
לא רלוונטי metadata.vendor_name קבוע: Apple
לא רלוונטי principal.platform קבוע: MAC
eventMessage event.idm.read_only_udm.metadata.description מופה מיומן השינויים
eventType event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
senderImagePath event.idm.read_only_udm.principal.file.full_path מופה מיומן השינויים
processImagePath event.idm.read_only_udm.principal.process.file.full_path מופה מיומן השינויים
userID event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
activityIdentifier event.idm.read_only_udm.additional.fields מופה מיומן השינויים
bootUUID event.idm.read_only_udm.additional.fields מופה מיומן השינויים
category event.idm.read_only_udm.additional.fields מופה מיומן השינויים
formatString event.idm.read_only_udm.additional.fields מופה מיומן השינויים
machTimestamp event.idm.read_only_udm.additional.fields מופה מיומן השינויים
messageType event.idm.read_only_udm.additional.fields מופה מיומן השינויים
parentActivityIdentifier event.idm.read_only_udm.additional.fields מופה מיומן השינויים
processImageUUID event.idm.read_only_udm.additional.fields מופה מיומן השינויים
senderImageUUID event.idm.read_only_udm.additional.fields מופה מיומן השינויים
senderProgramCounter event.idm.read_only_udm.additional.fields מופה מיומן השינויים
subsystem event.idm.read_only_udm.additional.fields מופה מיומן השינויים
threadID event.idm.read_only_udm.additional.fields מופה מיומן השינויים
traceID event.idm.read_only_udm.additional.fields מופה מיומן השינויים
backtrace.frames event.idm.read_only_udm.additional.fields מופה מיומן השינויים
processID event.idm.read_only_udm.principal.process.pid מופה מיומן השינויים
source event.idm.read_only_udm.principal.hostname מופה מיומן השינויים

יומן שינויים

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

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