איסוף יומני 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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Collection Agents.
  3. מורידים את קובץ האימות להטמעת נתונים. שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.

איך מוצאים את מספר הלקוח ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
  3. מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.

התקנת סוכן Bindplane

כדי להתקין את סוכן Bindplane במערכת ההפעלה Windows, פועלים לפי ההוראות הבאות.

התקנה ב-Windows

  1. פותחים את שורת הפקודה או את PowerShell כאדמין.
  2. מריצים את הפקודה הבאה:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    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
    • ‫start_at: מגדירים את הערך beginning כדי לקרוא יומנים קיימים, או end כדי לקרוא רק רשומות חדשות
    • ‫poll_interval: באיזו תדירות לבדוק אם יש נתוני יומן חדשים (ברירת מחדל: 5s)
  • הגדרת כלי הייצוא:

    • ‫pharos: שם תיאורי של הכלי לייצוא
    • ‫creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:
      • ‫Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • ‫<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:

  1. בוחרים אחת מהאפשרויות האלה:

    • שורת הפקודה או PowerShell כאדמין:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • מסוף השירותים:
      1. מקישים על Win+R, מקלידים services.msc ומקישים על Enter.
      2. מחפשים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
  2. מוודאים שהשירות פועל:

    sc query observiq-otel-collector
    
  3. בודקים אם יש שגיאות ביומנים:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

ייצוא של יומני פעילות ההדפסה ב-Pharos

‫Pharos Blueprint Enterprise מאחסן נתונים של משימות הדפסה במסד נתונים של SQL Server. צריך לייצא את הנתונים לקובצי CSV שסוכן Bindplane יכול לקרוא.

ייצוא נתוני הפעילות של הדפסה ממסד נתונים מסוג SQL של Pharos

  1. בשרת Pharos Blueprint, מתחברים למסד הנתונים של Pharos SQL באמצעות SQL Server Management Studio או כלי שורת פקודה.
  2. ייצוא רשומות של פעילות הדפסה באמצעות שאילתת 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
    
  3. אפשר לתזמן את הפעלת הפקודה הזו במרווחי זמן קבועים (לדוגמה, כל שעה) באמצעות מתזמן המשימות של Windows, כדי שהסוכן של Bindplane יאסוף באופן רציף קובצי ייצוא חדשים.

אפשרות חלופית: ייצוא דוחות ממסוף האדמין של Blueprint

  1. פותחים את מסוף Pharos Blueprint Administrator.
  2. עוברים אל תובנות > דוחות.
  3. בוחרים את סוג הדוח הרצוי (לדוגמה, פעילות הדפסה, פעילות משתמש, פעילות מכשיר).
  4. מגדירים את טווח התאריכים והמסננים.
  5. מייצאים את הדוח כקובץ 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.