איסוף יומני Preempt
במאמר הזה מוסבר איך להטמיע יומני Preempt ב-Google Security Operations באמצעות סוכן Bindplane.
Preempt Security היא פלטפורמה לזיהוי איומים על זהויות ולתגובה לאיומים כאלה. הפלטפורמה יוצרת התרעות אבטחה על איומים ב-Active Directory, כולל התנהגות חריגה של אימות, הסלמת הרשאות ותנועה לרוחב. הוא מייצא יומנים בפורמט CEF (Common Event Format) דרך syslog.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות לרשת בין סוכן Bindplane לבין שרת Preempt
- אם מריצים מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
- גישה מיוחדת למסוף הניהול של Preempt עם הרשאות אדמין
קבלת קובץ אימות להטמעת נתונים ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents.
- מורידים את קובץ האימות להטמעת נתונים.
שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנה ב-Windows
- פותחים את שורת הפקודה או את 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השירות צריך להופיע כפעיל (פועל).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן 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/preempt: compression: gzip creds_file_path: '<CREDS_FILE_PATH>' customer_id: '<CUSTOMER_ID>' endpoint: <REGION_ENDPOINT> log_type: PREEMPT raw_log_field: body ingestion_labels: env: production service: pipelines: logs/preempt_to_chronicle: receivers: - tcplog exporters: - chronicle/preempt
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת מקלט:
-
tcplog: מקבל syslog דרך TCP. משתמשים ב-udplogאם פריסת Preempt מעבירה נתונים באמצעות UDP. -
0.0.0.0:514: האזנה בכל הממשקים ביציאה 514. אם צריך, משנים את היציאה (לדוגמה,1514ל-Linux שאינו root).
-
הגדרת כלי הייצוא:
-
<CREDS_FILE_PATH>: הנתיב המלא לקובץ האימות להטמעת נתונים:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
<CUSTOMER_ID>: מספר הלקוח משלב קבלת מספר הלקוח ב-Google SecOps. -
<REGION_ENDPOINT>: כתובת ה-URL של נקודת הקצה האזורית:- ארה"ב:
malachiteingestion-pa.googleapis.com - אירופה:
europe-malachiteingestion-pa.googleapis.com - אסיה:
asia-southeast1-malachiteingestion-pa.googleapis.com - רשימה מלאה מופיעה במאמר בנושא נקודות קצה אזוריות.
- ארה"ב:
-
שמירת קובץ ההגדרות
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- 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 עם קדימות
- נכנסים למסוף הניהול של Preempt.
- עוברים אל הגדרות > שילוב SIEM.
- מפעילים העברה של syslog.
- מספקים את פרטי ההגדרה הבאים:
- פרוטוקול: בוחרים באפשרות TCP (חייב להיות זהה להגדרת המקלט של סוכן Bindplane).
- פורמט: בוחרים באפשרות CEF.
- כתובת שרת Syslog: מזינים את כתובת ה-IP של המארח של סוכן Bindplane (לדוגמה,
192.168.1.100). - יציאה: מזינים
514(חייב להיות זהה ליציאת המקלט של סוכן Bindplane).
- בוחרים את סוגי האירועים להעברה:
- התראות
- הפרות מדיניות
- אירועי אימות חריגים
- לוחצים על שמירה או על החלה.
- כדי לוודא שהיומנים נשלחים, בודקים את היומנים של סוכן Bindplane.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| event_id, _target | metadata.event_type | הערך הוא SCAN_NETWORK אם _target לא ריק ו-event_id הוא SUSPICIOUS_DOMAIN_ACTIVITY; USER_UNCATEGORIZED אם _target לא ריק ו-event_id הוא UNUSUAL_ENDPOINT_ACCESS, UNUSUAL_ACTIVITY או UNUSUAL_ENDPOINT_USE; NETWORK_UNCATEGORIZED אם event_id הוא APPLIANCE_CONNECTIVITY_FAILURE; אחרת, הערך הוא GENERIC_EVENT. |
| event_id | metadata.product_event_type | הערך הועתק ישירות |
| גרסה | metadata.product_version | הערך הועתק ישירות |
| cs1 | metadata.url_back_to_product | הערך מ-cs1 אם cs1Label == "incidentLink" |
| network.ip_protocol | הגדרה כ-TCP אם event_id == "APPLIANCE_CONNECTIVITY_FAILURE" | |
| dhost, host | principal.hostname | ערך מ-dhost אם dhost לא ריק ולא כתובת IP, אחרת מ-host אם host לא ריק ולא כתובת IP |
| dhost, host | principal.ip | ערך מ-dhost אם dhost הוא IP, אחרת מ-host אם host הוא IP |
| description, event_name, act, cs5, cs2, externalId, cn2 | security_result.description | אם התיאור לא ריק, הערך הוא מהתיאור. אחרת, הערך הוא שרשור של event_name, act, status מ-cs5 אם cs5Label == "status" או מ-cs2 אם cs2Label == "status", IncidentID מ-externalId, CompromisedEntities מ-cn2 |
| cs1 | security_result.rule_name | הערך מ-cs1 אם cs1Label == "ruleName" |
| severity | security_result.severity | הערך שהומר ממספר שלם: HIGH אם הערך גדול מ-7, MEDIUM אם הערך גדול מ-4, LOW אם הערך גדול מ-2, INFORMATIONAL אם הערך גדול מ-0, אחרת UNKNOWN_SEVERITY; או הערך LOW אם cat == "Policy Log" ו-severity == "INFO" |
| severity | security_result.severity_details | הערך הועתק ישירות |
| act, event_name | security_result.summary | הערך מהפרמטר act אם הוא לא ריק, אחרת הערך מהפרמטר event_name |
| destinationServiceName | target.application | הערך מ-destinationServiceName אם event_id == "APPLIANCE_CONNECTIVITY_FAILURE" |
| shost | target.hostname | הערך הועתק ישירות |
| src, dst | target.ip | הערך מ-src, או מ-dst אם event_id == "APPLIANCE_CONNECTIVITY_FAILURE" |
| suser | target.user.userid | הערך הועתק ישירות |
| ספק | metadata.vendor_name | הערך מהספק אם הוא לא ריק, אחרת הערך הוא PreemptSecurity |
| מוצר | metadata.product_name | הערך מהמוצר אם הוא לא ריק, אחרת הערך הוא PBF |
יומן שינויים
צפייה ביומן השינויים של מנתח התוכן הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.