איסוף יומני Pharos
במאמר הזה מוסבר איך להטמיע יומנים של Pharos ב-Google Security Operations באמצעות Bindplane.
Pharos היא פלטפורמה לניהול הדפסות שמותקנת בשרתים מקומיים, ומאפשרת לעקוב אחרי פעולות הדפסה בסביבות ארגוניות, לשלוט בהן ולבצע בהן ביקורת. ב-Pharos Blueprint Enterprise נשמרים נתונים של משימות הדפסה, פעילות משתמשים ואירועים במכשירים במסד נתונים של SQL Server.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- Windows Server 2016 ואילך
- קישוריות רשת בין סוכן Bindplane לבין שרת Pharos Blueprint
- אם מריצים מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
- הרשאת אדמין לשרת Pharos Blueprint
- גישה למסד הנתונים של Pharos SQL Server או למסוף הדיווח של Blueprint Administrator
קבלת קובץ אימות להטמעת נתונים ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents.
מורידים את קובץ האימות להטמעת נתונים. שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
כדי להתקין את סוכן Bindplane במערכת ההפעלה Windows, פועלים לפי ההוראות הבאות.
התקנה ב-Windows
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sc query observiq-otel-collector
השירות צריך להופיע עם הערך RUNNING.
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.
הגדרה של סוכן Bindplane להטמעה של יומנים ושליחה שלהם אל Google SecOps
איתור קובץ ההגדרות
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
עריכת קובץ ההגדרות
מחליפים את כל התוכן של
config.yamlבהגדרה הבאה:receivers: filelog: include: - 'C:\Pharos\Exports\*.csv' start_at: beginning poll_interval: 5s exporters: chronicle/pharos: 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: PHAROS raw_log_field: body ingestion_labels: env: production service: pipelines: logs/pharos_to_chronicle: receivers: - filelog exporters: - chronicle/pharos
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת מקלט:
-
include: הנתיבים לקובצי הייצוא של Pharos:- Windows:
C:\Pharos\Exports\*.csv - שינוי הנתיב בהתאם למקום שבו מייצאים דוחות על פעילות הדפסה ב-Pharos
- Windows:
-
start_at: מגדירים את הערךbeginningכדי לקרוא יומנים קיימים, אוendכדי לקרוא רק רשומות חדשות -
poll_interval: באיזו תדירות לבדוק אם יש נתוני יומן חדשים (ברירת מחדל:5s)
-
הגדרת כלי הייצוא:
-
pharos: שם תיאורי של הכלי לייצוא -
creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:- Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Windows:
-
<customer_id>: מספר הלקוח מהשלב הקודם -
endpoint: כתובת ה-URL של נקודת הקצה האזורית:- ארה"ב:
malachiteingestion-pa.googleapis.com - אירופה:
europe-malachiteingestion-pa.googleapis.com - אסיה:
asia-southeast1-malachiteingestion-pa.googleapis.com - רשימה מלאה מופיעה במאמר בנושא נקודות קצה אזוריות.
- ארה"ב:
-
PHAROS: סוג היומן בדיוק כמו שהוא מופיע ב-Chronicle -
ingestion_labels: תוויות אופציונליות בפורמט YAML (לדוגמה,env: production)
-
הגדרת צינור עיבוד נתונים:
-
pharos_to_chronicle: שם תיאורי של צינור העיבוד
-
שמירת קובץ ההגדרות
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- Windows: לוחצים על קובץ > שמירה.
מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.
כדי להפעיל מחדש את סוכן 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"
ייצוא של יומני פעילות ההדפסה ב-Pharos
Pharos Blueprint Enterprise מאחסן נתונים של משימות הדפסה במסד נתונים של SQL Server. צריך לייצא את הנתונים לקובצי CSV שסוכן Bindplane יכול לקרוא.
ייצוא נתוני הפעילות של הדפסה ממסד נתונים מסוג SQL של Pharos
- בשרת Pharos Blueprint, מתחברים למסד הנתונים של Pharos SQL באמצעות SQL Server Management Studio או כלי שורת פקודה.
ייצוא רשומות של פעילות הדפסה באמצעות שאילתת SQL:
sqlcmd -S <sql_server> -d Pharos -Q "SELECT * FROM PrintJobLog WHERE JobDate >= DATEADD(day, -1, GETDATE())" -o "C:\Pharos\Exports\pharos_print_jobs.csv" -s "," -Wאפשר לתזמן את הפעלת הפקודה הזו במרווחי זמן קבועים (לדוגמה, כל שעה) באמצעות מתזמן המשימות של Windows, כדי שהסוכן של Bindplane יאסוף באופן רציף קובצי ייצוא חדשים.
אפשרות חלופית: ייצוא דוחות ממסוף האדמין של Blueprint
- פותחים את מסוף Pharos Blueprint Administrator.
- עוברים אל תובנות > דוחות.
- בוחרים את סוג הדוח הרצוי (לדוגמה, פעילות הדפסה, פעילות משתמש, פעילות מכשיר).
- מגדירים את טווח התאריכים והמסננים.
מייצאים את הדוח כקובץ CSV לספריית הייצוא (לדוגמה, C:\Pharos\Exports).
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| msg.Building, msg.DataSource, msg.FactSubType, msg.FactType, msg.JobId, msg.JobName, msg.JobTimeutc, msg.PostalCode, msg.VpnConnected, mtd.customer, mtd.slt.node, mtd.slt.pipeline, mtd.source.database, mtd.timestamp.producer_process | additional.fields | מוזג עם Building_label אם msg.Building לא ריק, datasource_label אם msg.DataSource לא ריק, factsubtype_label אם msg.FactSubType לא ריק, facttype_label אם msg.FactType לא ריק, jobid_label אם msg.JobId לא ריק, jobname_label אם msg.JobName לא ריק, jobtimeutc_label אם msg.JobTimeutc לא ריק, postalcode_label אם msg.PostalCode לא ריק, vpnconnected_label אם msg.VpnConnected לא ריק, customer_label אם mtd.customer לא ריק, node_label אם mtd.slt.node לא ריק, pipeline_label אם mtd.slt.pipeline לא ריק, database_label אם mtd.source.database לא ריק, producer_process_label אם mtd.timestamp.producer_process לא ריק, |
| metadata.event_type | הערך הוא STATUS_UPDATE אם has_principal הוא true, אחרת GENERIC_EVENT | |
| msg.Application | principal.application | הערך מועתק ישירות אם הוא לא ריק |
| msg.HostName | principal.asset.hostname | הערך מועתק ישירות אם הוא לא ריק |
| msg.IPAddress | principal.asset.ip | הערך מועתק ישירות אם הוא לא נמצא ברשימה ['', 'Unknown'] |
| msg.City | principal.location.city | הערך מועתק ישירות אם הוא לא נמצא ברשימה ['', 'Unknown'] |
| msg.Country | principal.location.country_or_region | הערך מועתק ישירות אם הוא לא נמצא ברשימה ['', 'Unknown'] |
| msg.State | principal.location.state | הערך מועתק ישירות אם הוא לא נמצא ברשימה ['', 'Unknown'] |
| msg.HostName | principal.hostname | הערך מועתק ישירות אם הוא לא ריק |
| msg.IPAddress | principal.ip | הערך מועתק ישירות אם הוא לא נמצא ברשימה ['', 'Unknown'] |
| msg.UserDisplayName | principal.user.user_display_name | הערך מועתק ישירות אם הוא לא ריק |
| mtd.source.host | src.hostname | הערך מועתק ישירות אם הוא לא ריק |
| mtd.source.port | src.port | הערך מועתק ישירות אם הוא לא נמצא ב- ["", "n/a"] |
| mtd.source.type | src.resource.attribute.labels | אם הוא לא ריק, הוא ימוזג עם sourcetype_label |
| metadata.product_name | הוגדר כ-'PHAROS' | |
| metadata.vendor_name | הוגדר כ-'PHAROS' |
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.