איסוף יומני Preempt

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומני Preempt ב-Google Security Operations באמצעות סוכן Bindplane.

‫Preempt Security היא פלטפורמה לזיהוי איומים על זהויות ולתגובה להם, שיוצרת התראות אבטחה על איומים ב-Active Directory, כולל התנהגות חריגה באימות, הסלמת הרשאות (privilege escalation) ותנועה רוחבית. הוא מייצא יומנים בפורמט CEF (פורמט אירועים נפוץ) באמצעות syslog.

לפני שמתחילים

חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:

  • מופע של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • קישוריות רשת בין סוכן Bindplane לבין שרת Preempt
  • אם מריצים את הסוכן מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
  • גישה מיוחדת למסוף הניהול של Preempt עם הרשאות אדמין

קבלת פרטי כניסה ל-Google SecOps בשביל סוכן Bindplane

כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים אחת מהשיטות הבאות:

  • פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
  • פריסות מדור קודם: אפשר להמשיך להשתמש בקובץ האימות של ה-API להעברת נתונים (אפשרות 2) עד שה-API להעברת נתונים יפסיק לפעול ב-20 ביולי 2027.
  1. נכנסים אל Google Cloud המסוף ובוחרים את Google Cloud הפרויקט שמקושר למופע של Google SecOps.
  2. נכנסים לדף IAM & Admin > Service Accounts.
  3. לוחצים על Create service account.
  4. מזינים את פרטי ההגדרה הבאים:
    • שם חשבון השירות: מזינים שם לחשבון (לדוגמה, bindplane-ingest).
    • תיאור חשבון השירות: מזינים תיאור (לדוגמה, Bindplane agent log ingestion).
  5. לוחצים על Create and continue.
  6. בקטע Grant this service account access to project לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
  7. לוחצים על המשך ואז על סיום.
  8. לוחצים על חשבון השירות שיצרתם ועוברים לכרטיסייה Keys.
  9. לוחצים על Add key > Create new key.
  10. בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
  11. שומרים את קובץ המפתח בתור 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 כך שיתאים לנתיב שבו שמרתם אותו.
  12. עוברים אל IAM & Admin > Settings (ניהול הרשאות גישה ואדמין > הגדרות) ומעתיקים את מספר הפרויקט. תצטרכו אותו כדי להגדיר את הייצוא.

אפשרות 2: הורדת קובץ אימות להטמעת נתונים (גרסה מדור קודם)

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

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

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

התקנת הסוכן של Bindplane

מתקינים את הסוכן של Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.

התקנת חלונות

  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.

התקנה ב-Linux

  1. פותחים טרמינל עם הרשאות root או sudo.
  2. מריצים את הפקודה הבאה:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. מחכים שההתקנה תסתיים.

  4. מאמתים את ההתקנה על ידי הרצת:

    sudo systemctl status observiq-otel-collector
    

    השירות צריך להופיע כפעיל (פועל).

מקורות מידע נוספים להתקנה

לאפשרויות התקנה נוספות ולפתרון בעיות, עיינו במדריך להתקנת סוכן Bindplane.

הגדרה של סוכן Bindplane לקליטת syslog ושליחה ל-Google SecOps

איתור קובץ התצורה

  • ‫Linux:

    sudo nano /opt/observiq-otel-collector/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

עריכת קובץ התצורה

  • מחליפים את כל התוכן של config.yaml בהגדרה הבאה:

    receivers:
      tcplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/preempt:
        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: '<CREDS_FILE_PATH>'
        customer_id: '<CUSTOMER_ID>'
        endpoint: chronicle.googleapis.com
        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. אם הפריסה של Preempt מעבירה נתונים דרך UDP, צריך להשתמש ב-udplog.
    • ‫0.0.0.0:514: האזנה לכל הממשקים ביציאה 514. אם צריך, משנים את היציאה (לדוגמה, 1514 ל-Linux שאינו root).
  • הגדרת כלי הייצוא:

    • ‫<CREDS_FILE_PATH>: הנתיב המלא לקובץ מפתח JSON של חשבון השירות (אפשרות 1):
      • ‫Linux: /opt/observiq-otel-collector/ingestion-auth.json
      • ‫Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • ‫<CUSTOMER_ID>: מספר הלקוח משלב קבלת מספר הלקוח ב-Google SecOps.
    • ‫location: מחליפים את <LOCATION> באזור של המכונה של Google SecOps (לדוגמה, us,‏ europe או asia-southeast1). המייצא מוסיף את הערך הזה בתחילת chronicle.googleapis.com. לרשימה המלאה, ראו נקודות קצה אזוריות.
    • ‫project: מחליפים את <PROJECT_NUMBER> במספר הפרויקט שמופיע בקטע IAM & Admin > Settings.
    • ‫endpoint: משאירים את הערך chronicle.googleapis.com.

כלי לייצוא נתונים מ-Legacy ingestion API

  • אם אתם משתמשים בקובץ האימות להטמעת נתונים מאפשרות 2, החליפו את הבלוק exporters בקוד הבא. מגדירים את creds_file_path לנתיב של קובץ האימות להטמעת נתונים. אם המכונה נמצאת מחוץ לארה"ב, מחליפים את malachiteingestion-pa.googleapis.com בנקודת הקצה האזורית (לדוגמה, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/preempt:
        compression: gzip
        creds_file_path: '<CREDS_FILE_PATH>'
        customer_id: '<CUSTOMER_ID>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: PREEMPT
        raw_log_field: body
        ingestion_labels:
          env: production
    

שמירת קובץ התצורה

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • Linux: מקישים על Ctrl+O, אחר כך על Enter ואז על Ctrl+X
    • ‫Windows: לוחצים על קובץ > שמירה.

מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.

  • כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:

    sudo systemctl restart observiq-otel-collector
    
    1. מוודאים שהשירות פועל:

      sudo systemctl status observiq-otel-collector
      
    2. בודקים אם יש שגיאות ביומנים:

      sudo journalctl -u observiq-otel-collector -f
      
  • כדי להפעיל מחדש את הסוכן של Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:

    • שורת הפקודה או PowerShell כאדמין:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • מסוף השירותים:

      1. לוחצים על Win+R, מקלידים services.msc ולוחצים על Enter.
      2. מאתרים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
      4. מוודאים שהשירות פועל:

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

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

הגדרת העברת syslog של Preempt

  1. נכנסים למסוף הניהול של Preempt.
  2. עוברים אל הגדרות > שילוב SIEM.
  3. מפעילים העברה של syslog.
  4. מספקים את פרטי ההגדרה הבאים:
    • פרוטוקול: בוחרים באפשרות TCP (חייב להיות זהה להגדרת המקלט של סוכן Bindplane).
    • פורמט: בוחרים באפשרות CEF.
    • כתובת שרת Syslog: מזינים את כתובת ה-IP של המארח של סוכן Bindplane (לדוגמה, 192.168.1.100).
    • יציאה: מזינים 514 (חייבת להתאים ליציאת המקלט של סוכן Bindplane).
  5. בוחרים את סוגי האירועים שרוצים להעביר:
    • התראות
    • הפרות מדיניות
    • אירועי אימות חריגים
  6. לוחצים על שמירה או על החלה.
  7. כדי לוודא שהיומנים נשלחים, בודקים את היומנים של סוכן 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.