איסוף יומנים של uberAgent
במאמר הזה מוסבר איך להטמיע יומני רישום של uberAgent ב-Google Security Operations באמצעות סוכן Bindplane.
uberAgent היא פלטפורמה לניתוח אבטחת נקודות קצה ולניטור חוויית המשתמש ב-Windows וב-macOS. הוא אוסף נתוני טלמטריה, כולל אירועים של תהליכים, אירועי כניסה, חיבורים לרשת ושימוש באפליקציות בנקודות קצה מפוקחות.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - קישוריות רשת בין סוכן Bindplane לבין נקודות הקצה של uberAgent
- אם מריצים את הסוכן מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
- גישת אדמין למסוף הניהול של uberAgent או לנקודות הקצה שבהן uberAgent מותקן
קבלת קובץ אימות להטמעת נתונים ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
מורידים את קובץ האימות להטמעת נתונים. שומרים את הקובץ בצורה מאובטחת במערכת שבה תתקינו את 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 להעברה של יומנים ושליחה שלהם אל Google SecOps
איתור קובץ התצורה
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
עריכת קובץ התצורה
מחליפים את כל התוכן של
config.yamlבהגדרה הבאה:receivers: filelog: include: - 'C:\uberAgent\logs\*.log' - 'C:\uberAgent\logs\*.csv' start_at: beginning poll_interval: 5s exporters: chronicle/uberagent: compression: gzip creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: UBERAGENT raw_log_field: body ingestion_labels: env: production service: pipelines: logs/uberagent_to_chronicle: receivers: - filelog exporters: - chronicle/uberagent
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת מקלט:
-
include: נתיבים לקובצי יומן של uberAgent:- Windows (מקומי):
C:\uberAgent\logs\*.logו-C:\uberAgent\logs\*.csv - Windows (שיתוף קבצים):
\\SERVER\Share\uberagent-logs\*.log - שינוי הנתיב בהתאם להגדרת פלט הקובץ של uberAgent
- Windows (מקומי):
-
start_at: מגדירים את הערך ל-beginningכדי לקרוא יומנים קיימים, או ל-endכדי לקרוא רק רשומות חדשות poll_interval: באיזו תדירות לבדוק אם יש נתוני יומן חדשים (ברירת מחדל:5s)
-
הגדרות של הכלי לייצוא:
-
uberagent: שם תיאורי של הכלי לייצוא -
creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
<customer_id>: מספר הלקוח מהשלב הקודם endpoint: Regional endpoint URL:- ארה"ב:
malachiteingestion-pa.googleapis.com - אירופה:
europe-malachiteingestion-pa.googleapis.com - אסיה:
asia-southeast1-malachiteingestion-pa.googleapis.com - רשימה מלאה מופיעה במאמר בנושא נקודות קצה אזוריות.
- ארה"ב:
-
UBERAGENT: סוג היומן בדיוק כמו שהוא מופיע ב-Chronicle -
ingestion_labels: תוויות אופציונליות בפורמט YAML (לדוגמה,env: production)
-
הגדרת צינור עיבוד נתונים:
-
uberagent_to_chronicle: שם תיאורי של צינור העיבוד
-
שמירת קובץ ההגדרות
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- 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"
- מקישים על
הגדרת פלט קבצים של uberAgent
uberAgent תומך במספר קצוות עורפיים של פלט. כדי לייצא נתונים כקבצים לאיסוף על ידי סוכן Bindplane:
- פותחים את קובץ ההגדרות של uberAgent (
uberAgent.conf) בנקודת הקצה או באמצעות Group Policy. הגדרת מקלט פלט מבוסס-קובץ:
[Receiver] Name = FileOutput Type = File Path = C:\uberAgent\logs\מגדירים את המדדים ואת סוגי המקורות לייצוא:
- תהליך: אירועי התחלה/עצירה של תהליך, שימוש במשאבים.
- כניסה: אירועי כניסה/יציאה של משתמשים.
- רשת: אירועים שקשורים לחיבור לרשת.
- אפליקציה: שימוש באפליקציה ושגיאות.
שומרים את ההגדרה ומפעילים מחדש את שירות uberAgent.
מוודאים שקבצי היומן נוצרים בספריית הפלט שהוגדרה.
מוודאים שיש לסוכן Bindplane הרשאות קריאה בספרייה ובקבצים של היומן.
טבלת מיפוי UDM
| שדה היומן | מיפוי UDM | לוגיקה |
|---|---|---|
| SessionRpLatencyMs2, SessionHRes, SessionVRes, SessionColorDepth, SessionClientPlatform, SessionClientVersion, SessionClientOsLanguage, SessionPublishedName, SessionPublishedAppsCtx, SessionAppStateCtx, SessionEncryptionCtx, SessionClientTypeCtx, SessionBrokerDnsVmw, SessionBrokerUrlVmw, SessionBrokerTunneledVmw, SessionBrokerTunnelUrlVmw, SessionBrokerRemoteIpVmw, SessionBrokerUserVmw, SessionBrokerDomainVmw, SessionClientTimezoneVmw, SessionClientIdVmw, SessionTypeVmw, SessionBrokerType, SessionFgAppId, SessionFgAppVersion, SessionFgProcessName, SessionFgProcessId, SessionFgBrowserType, SessionFgBrowserActiveTabHost, SessionFgWindowTitle, SessionClientHwIdCtx2, SessionRoundTripTimeMs, SessionFps, SessionTransportProtocols, SessionProcessCount, SessionIOMB, SessionCPUTimeMs, SessionConnectionState, SessionUser, SessionIOCount, SessionNetKBPS, SessionWorkingSetMB, SessionCPUUsagePercent, SessionIOPS, SessionClientName, SessionIOLatencyMs, PowerSupportsS3, IsBatteryPresent, PowerSupportsS1, PowerSupportsS2, PowerSupportsS5, CPUMaxMhz, BaseboardSerial, CtxMachineCatalogName, AdDomainDns, HwHypervisorVendor, OsBuild, HwBiosVersion, PowerSupportsS4, HwIsVirtualMachine, IsUpsPresent, PowerSupportsConnectedStandby, OsInstallDate, Sourcetype, uberagent_index_name, data_stream.namespace, data_stream.dataset, data_stream.type, data_stream.subset, CPUCoresLogical, AdOu, AdDomainNetBios, logstash_pipeline, AdSite, CtxFarmName, CPUSockets, OsSpName, OsName, OsType, OsUpdateBuildRevision, ComputerNameCanonical, ComputerNameDn, CtxDeliveryGroupName, tags, user_agent.original | additional.fields | המידע מוזג כצמדים של מפתח/ערך מהשדות שמופיעים ברשימה |
| metadata.event_type | הערך שמוגדר הוא STATUS_UPDATE אם has_principal הוא true ו-has_target הוא false, NETWORK_CONNECTION אם שניהם true, GENERIC_EVENT בכל מקרה אחר | |
| SessionGUID | metadata.product_log_id | הערך הועתק ישירות |
| user_agent.original | network.http.parsed_user_agent | הומר למחרוזת user agent מנותחת |
| user_agent.original | network.http.user_agent | הערך הועתק ישירות |
| SessionTransportProtocols | network.ip_protocol | מגדירים ל-UDP אם יש התאמה ל- (?i)udp, ל-TCP אם יש התאמה ל- (?i)tcp |
| SessionID | network.session_id | הערך הועתק ישירות |
| SessionClientUserDomain | principal.administrative_domain | הערך הועתק ישירות |
| CPUCoresPhysical, RAMSizeGB, CPUName, HwManufacturer, OsArchitecture, BIOSSerial, HwModel | principal.asset.hardware | מוזג לאובייקט חומרה |
| SessionClientDomain, host | principal.asset.hostname | הערך מ-SessionClientDomain אם הוא לא ריק, אחרת host |
| prin_ip, SessionClientIp, system_ip | principal.asset.ip | הערך מ-prin_ip אם הוא לא ריק, אחרת SessionClientIp, אחרת system_ip |
| SessionClientDomain, host | principal.hostname | הערך מ-SessionClientDomain אם הוא לא ריק, אחרת host |
| prin_ip, SessionClientIp, system_ip | principal.ip | הערך מ-prin_ip אם הוא לא ריק, אחרת SessionClientIp, אחרת system_ip |
| SessionClientMac | principal.mac | הערך מ-SessionClientMac, עם החלפה של '-' ב-':', באותיות קטנות |
| SessionClientPlatform | principal.platform | מגדירים WINDOWS אם יש התאמות ל-windows (?i) |
| SessionClientVersion | principal.platform_version | הגדרה לערך אם יש התאמה ל-windows (?i) |
| SessionUser, SessionClientUser | principal.user.user_display_name | הערך מ-SessionUser אם הוא לא ריק, אחרת הערך מ-SessionClientUser |
| SessionBrokerRemoteIpVmw | target.ip | הערך הועתק ישירות |
| SessionBrokerUserVmw | target.user.user_display_name | הערך הועתק ישירות |
| SessionClientIdVmw | target.user.userid | הערך הועתק ישירות |
| metadata.product_name | הערך הוא UBERAGENT | |
| metadata.vendor_name | הערך הוא UBERAGENT |
שנה רישום
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.