איסוף יומנים של Semperis DSP
במאמר הזה מוסבר איך להטמיע יומנים של Semperis Directory Services Protector (DSP) ב-Google Security Operations באמצעות סוכן Bindplane.
Semperis Directory Services Protector (DSP) היא פלטפורמה לזיהוי איומים ולתגובה ב-Active Directory. הפלטפורמה עוקבת אחרי שינויים והתקפות ב-AD, מספקת התרעות בזמן אמת ומתקנת בעיות באופן אוטומטי. המנתח מחלץ שדות מרשומות ביומן של DSP וממפה אותם למודל הנתונים המאוחד (UDM), ומתעד שינויים באובייקטים של AD, אירועי אימות, שינויים ב-DNS ותוצאות אבטחה.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מכונה של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות רשת בין סוכן Bindplane לבין שרת Semperis DSP
- אם השרת פועל מאחורי שרת proxy, צריך לוודא שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
- גישה מורשית למסוף הניהול של Semperis DSP עם הרשאות אדמין
קבלת פרטי כניסה ל-Google SecOps בשביל סוכן Bindplane
כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים באחת מהשיטות הבאות:
- פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
- פריסות קודמות: ממשיכים להשתמש בקובץ האימות להטמעת נתונים (אפשרות 2) עד שה-Ingestion API יופסק ב-20 ביולי 2027.
אפשרות 1: יצירת חשבון שירות ל-Chronicle API (מומלץ)
- נכנסים אל Google Cloud המסוף ובוחרים את Google Cloud הפרויקט שמקושר למופע של Google SecOps.
- נכנסים אל IAM & Admin > Service Accounts (ניהול הרשאות גישה (IAM) & אדמין > חשבונות שירות).
- לוחצים על יצירת חשבון שירות.
- מזינים את פרטי ההגדרה הבאים:
- שם חשבון השירות: מזינים שם לחשבון (לדוגמה,
bindplane-ingest). - תיאור חשבון השירות: מזינים תיאור (לדוגמה,
Bindplane agent log ingestion).
- שם חשבון השירות: מזינים שם לחשבון (לדוגמה,
- לוחצים על Create and continue.
- בקטע Grant this service account access to project לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
- לוחצים על המשך ואז על סיום.
- לוחצים על חשבון השירות שיצרתם ואז עוברים לכרטיסייה Keys.
- לוחצים על Add key > Create new key.
- בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
- שומרים את קובץ המפתח בתור
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כך שיתאים לנתיב שבו שמרתם אותו. - עוברים אל IAM & Admin > Settings ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את הייצוא.
אפשרות 2: הורדת קובץ אימות להטמעת נתונים (גרסה מדור קודם)
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את הסוכן של Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנת חלונות
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietמחכים שההתקנה תסתיים.
מאמתים את ההתקנה על ידי הרצת:
sc query observiq-otel-collectorהשירות אמור להופיע כ-RUNNING.
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shמחכים שההתקנה תסתיים.
מאמתים את ההתקנה על ידי הרצת:
sudo systemctl status observiq-otel-collectorהשירות אמור להופיע כ-active (running).
מקורות מידע נוספים להתקנה
לאפשרויות התקנה נוספות ולפתרון בעיות, עיינו במדריך להתקנת סוכן Bindplane.
הגדרת סוכן Bindplane להטמעת syslog ושליחה אל Google SecOps
מאתרים את קובץ התצורה
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
עריכת קובץ התצורה
מחליפים את כל התוכן של
config.yamlבהגדרות הבאות:receivers: tcplog: listen_address: "0.0.0.0:514" exporters: chronicle/semperis_dsp: 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: SEMPERIS_DSP raw_log_field: body service: pipelines: logs/semperis_dsp: receivers: - tcplog exporters: - chronicle/semperis_dsp
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת המקלט:
-
tcplog: סוג המקלט לפי הפרוטוקול:-
udplogל-UDP syslog -
tcplogל-syslog של TCP -
syslogל-syslog של RFC 3164/5424
-
-
0.0.0.0: כתובת ה-IP להאזנה:0.0.0.0כדי להאזין בכל הממשקים (מומלץ)- כתובת IP ספציפית להאזנה בממשק אחד
-
514: מספר היציאה להאזנה (לדוגמה,514, 1514, 6514)
-
הגדרת הייצוא:
-
<customer_id>: מספר הלקוח מהשלב הקודם -
location: מחליפים את<LOCATION>באזור של המכונה של Google SecOps (לדוגמה,us,europeאוasia-southeast1). המייצא מוסיף את הערך הזה בתחילתchronicle.googleapis.com. רשימה מלאה של נקודות הקצה האזוריות מופיעה במאמר Regional Endpoints. -
project: מחליפים את<PROJECT_NUMBER>במספר הפרויקט שמופיע בקטע IAM & Admin > Settings. -
endpoint: צריך להשאיר את ההגדרהchronicle.googleapis.com. - משנים את
creds_file_pathלנתיב של קובץ המפתח בפורמט JSON של חשבון השירות (אפשרות 1), בהתאם לפלטפורמה:- Linux:
/opt/observiq-otel-collector/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
מייצא API להטמעה מדור קודם
אם משתמשים בקובץ האימות של ההעלאה מאפשרות 2, מחליפים את הבלוק
exportersבבלוק הבא. מגדירים אתcreds_file_pathלנתיב לקובץ האימות של ההעברה, ואם המופע שלכם נמצא מחוץ לארה"ב, מחליפים אתmalachiteingestion-pa.googleapis.comבנקודת הקצה האזורית (לדוגמה,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/semperis_dsp: compression: gzip creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: SEMPERIS_DSP raw_log_field: body
שמירת קובץ התצורה
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- Linux: מקישים על
Ctrl+O, אחר כך עלEnterואז עלCtrl+X. - Windows: לוחצים על קובץ > שמירה.
- Linux: מקישים על
מפעילים מחדש את הסוכן של 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 ב-Semperis DSP
- נכנסים למסוף הניהול של Semperis DSP.
- עוברים אל הגדרות > שילוב SIEM.
- מפעילים את ההעברה של Syslog.
- מזינים את פרטי ההגדרה הבאים:
- מארח: מזינים את כתובת ה-IP של המארח של סוכן Bindplane (לדוגמה,
192.168.1.100). - יציאה: מזינים
514(חייב להיות זהה ליציאת המקלט של Bindplane). - Protocol: בוחרים באפשרות TCP (חייב להתאים לסוג המקלט של Bindplane).
- מארח: מזינים את כתובת ה-IP של המארח של סוכן Bindplane (לדוגמה,
- לוחצים על Save.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| event_type | extensions.auth.type | צריך להגדיר את הערך "SSO" אם ObjectModificationType == "LoginADSM" |
| מארח | intermediary.hostname | הערך הועתק ישירות |
| ObjectModificationType | metadata.description | הערך הועתק ישירות |
| event_type | metadata.event_type | RESOURCE_CREATION אם ObjectModificationType == "CreateObject" ו-OriginatingUsers != ""; RESOURCE_WRITTEN אם ObjectModificationType == "ModifyObject" ו-OriginatingUsers != "" ו-AttributeName מכיל "Password"; RESOURCE_WRITTEN אם ObjectModificationType == "ModifyObject" ו-OriginatingUsers != ""; RESOURCE_DELETION אם ObjectModificationType == "DeleteObject" ו-OriginatingUsers != ""; USER_LOGIN אם ObjectModificationType == "LoginADSM" ו-OriginatingUsers != ""; RESOURCE_WRITTEN אם ObjectModificationType == "OperationRequest" ו-OriginatingUsers != ""; STATUS_UPDATE אם principal_present == "true"; USER_UNCATEGORIZED אם principal_user_present == "true"; אחרת GENERIC_EVENT |
| metadata.product_name | צריך להגדיר את הערך "SEMPERIS_DSP" | |
| metadata.vendor_name | ההגדרה היא SEMPERIS | |
| StringValueFrom | network.dns.answers.data | הערך מועתק ישירות אחרי הניקוי |
| NameNode | network.dns.answers.name | הערך הועתק ישירות |
| Ttl | network.dns.answers.ttl | הערך הועתק ישירות והומר ל-uinteger |
| סוג | network.dns.answers.type | הערך הוא 1 אם Type =~ "DNS_TYPE_A"; 12 אם Type =~ "DNS_TYPE_PTR", מומר ל-uinteger |
| OriginatingServer | principal.asset.hostname | הערך הועתק ישירות |
| ip | principal.asset.ip | הערך מועתק ישירות אחרי האימות והניקוי |
| OriginatingServer | principal.hostname | הערך הועתק ישירות |
| ip | principal.ip | הערך מועתק ישירות אחרי האימות והניקוי |
| DistinguishedName | principal.user.group_identifiers | הערך מוזג ישירות |
| ForestId | principal.user.product_object_id | הערך הועתק ישירות |
| OriginatingUsers | principal.user.userid | הערך מועתק ישירות אם OperationType != "LoginADSM" |
| security_action | security_result.action | הערך הועתק ישירות |
| RequestedAction | security_result.summary | הערך מועתק ישירות אם OperationResult =~ "Granted" או "Denied" |
| AttributeName | target.resource.name | הערך מועתק ישירות אם AttributeName != "" ו-AttributeName != "isDeleted" |
| ClassName | target.resource.resource_subtype | הערך הועתק ישירות |
| OriginatingUsers | target.user.userid | הערך מועתק ישירות אם OperationType == "LoginADSM" |
יומן שינויים
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.