איסוף יומני המערכת של 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
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings (הגדרות SIEM) > Collection Agent (סוכן איסוף).
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings (הגדרות SIEM) > Profile (פרופיל).
- מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנה ב-Windows
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות מפורטות במדריך ההתקנה.
הגדרה של סוכן Bindplane להטמעה של Syslog ושליחה אל Google SecOps
גישה לקובץ ההגדרות:
- מאתרים את הקובץ
config.yaml. בדרך כלל, הוא נמצא בספרייה/observiq-otel-collector/ב-Linux או בספריית ההתקנה ב-Windows. - פותחים את הקובץ באמצעות כלי לעריכת טקסט (לדוגמה,
nano,viאו Notepad).
- מאתרים את הקובץ
עורכים את הקובץ
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:
מריצים את הפקודה הבאה:
sudo systemctl restart observiq-otel-collectorמוודאים שהשירות פועל:
sudo systemctl status observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
sudo journalctl -u observiq-otel-collector -f
כדי להפעיל מחדש את סוכן Bindplane ב-Windows:
בוחרים אחת מהאפשרויות האלה:
- שורת הפקודה או PowerShell כאדמין:
net stop observiq-otel-collector && net start observiq-otel-collector- מסוף השירותים:
- מקישים על
Win+R, מקלידיםservices.mscומקישים על Enter. - מחפשים את observIQ OpenTelemetry Collector.
- לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
- מקישים על
מוודאים שהשירות פועל:
sc query observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
הגדרת העברה של syslog ב-macOS
ב-macOS נעשה שימוש במערכת רישום מאוחדת. כדי להעביר יומנים לסוכן Bindplane באמצעות syslog, צריך להגדיר את שירות syslogd המובנה בכל נקודת קצה של macOS.
אפשרות 1: הגדרת העברה של syslog באמצעות syslog.conf
- פותחים את Terminal בנקודת הקצה של macOS.
עורכים את קובץ התצורה של syslog:
sudo nano /etc/syslog.confמוסיפים את השורה הבאה בסוף הקובץ כדי להעביר את כל היומנים באמצעות UDP לסוכן Bindplane:
*.* @<BINDPLANE_IP_ADDRESS>:514- מחליפים את
<BINDPLANE_IP_ADDRESS>בכתובת ה-IP של המארח של סוכן Bindplane (לדוגמה,192.168.1.100).
- מחליפים את
שומרים את הקובץ ויוצאים.
מפעילים מחדש את שירות ה-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
- פותחים את Terminal בנקודת הקצה של macOS.
עורכים את קובץ ההגדרות של ASL:
sudo nano /etc/asl.confמוסיפים את השורה הבאה כדי להעביר את היומנים לשרת syslog מרוחק:
? [= Sender kernel] forward <BINDPLANE_IP_ADDRESS>:514 ? [<= Level notice] forward <BINDPLANE_IP_ADDRESS>:514- מחליפים את
<BINDPLANE_IP_ADDRESS>בכתובת ה-IP של המארח של סוכן Bindplane.
- מחליפים את
שומרים את הקובץ ויוצאים.
מפעילים מחדש את שירות ה-syslog:
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist
אימות העברת היומנים
בנקודת הקצה של macOS, יוצרים הודעת יומן בדיקה:
logger -p user.notice "Test syslog message for Bindplane"במארח של סוכן 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.