איסוף יומני ArcSight CEF

גרסת המנתח: 34.0

נתמך ב:

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

‫ArcSight (עכשיו חלק מ-OpenText) משתמש ב-Common Event Format ‏(CEF) כדי לנרמל אירועי אבטחה ממקורות מרובים. ‫ArcSight SmartConnector אוסף אירועים ומעביר אותם בפורמט CEF דרך syslog לצרכנים במורד הזרם, כולל פלטפורמות SIEM.

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

חשוב לוודא שיש לכם את הדברים הבאים:

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

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

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

  • פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
  • פריסות קודמות: ממשיכים להשתמש בקובץ האימות להטמעת נתונים (אפשרות 2) עד שה-Ingestion API יופסק ב-20 ביולי 2027.
  1. נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
  2. נכנסים לדף IAM & Admin > Service Accounts.
  3. לוחצים על Create service account.
  4. מזינים את פרטי ההגדרה הבאים:
    • Service account name: מזינים שם לחשבון (לדוגמה, bindplane-ingest).
    • Service account description: מזינים תיאור (לדוגמה, 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 בספריית Bindplane collector (/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 ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את הייצוא.

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

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

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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל הגדרות > ניהול > פרופיל. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פרופיל.
  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:
      udplog:
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/arcsight_cef:
        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: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: chronicle.googleapis.com
        log_type: ARCSIGHT_CEF
        raw_log_field: body
    
    service:
      pipelines:
        logs/arcsight_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/arcsight_cef
    

פרמטרים להגדרה

מחליפים את ה-placeholders הבאים:

  • הגדרת המקלט:

    • ‫listen_address: כתובת ה-IP והיציאה להאזנה:
      • ‫0.0.0.0 כדי להאזין בכל הממשקים (מומלץ)
      • יציאה 514 היא יציאת syslog הרגילה (נדרש root ב-Linux; צריך להשתמש ב-1514 ללא 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.

מייצא API להטמעה מדור קודם

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

    exporters:
      chronicle/arcsight_cef:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: ARCSIGHT_CEF
        raw_log_field: body
    

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

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • 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"
        

הורדת ArcSight SmartConnector

  1. נכנסים לפורטל התמיכה של OpenText.
  2. מוצאים ומורידים את הגרסה העדכנית של ArcSight SmartConnector ל-Linux.
  3. דוגמה לשם קובץ: ArcSight-Connector-Linux64-8.4.0.8499.0.bin.

התקנת ArcSight SmartConnector

  1. מעלים את הקובץ .bin לשרת של SmartConnector:

    scp ArcSight-Connector-Linux64-8.4.0.8499.0.bin user@your-smartconnector-host:/tmp
    
  2. נכנסים לשרת SmartConnector באמצעות SSH ומריצים את הפקודה:

    cd /tmp
    chmod +x ArcSight-Connector-Linux64-8.4.0.8499.0.bin
    ./ArcSight-Connector-Linux64-8.4.0.8499.0.bin
    
  3. פועלים לפי ההוראות של מנהל ההתקנה האינטראקטיבי:

    • בוחרים את ספריית ההתקנה (לדוגמה, /opt/arcsight/connectors/current).
    • מאשרים את הרישיון.
    • כשמופיעה בקשה, לוחצים על התקנת המחבר.

הגדרת ArcSight SmartConnector לשליחת CEF ל-syslog

  1. ב-SmartConnector host, מפעילים את אשף היעד:

    cd /opt/arcsight/connectors/current/bin
    ./arcsight connectors
    
  2. באשף, מבצעים את הפעולות הבאות:

    • לוחצים על הוספת יעד.
    • בוחרים באפשרות CEF Syslog.
  3. ממלאים את פרטי ההגדרה הבאים:

    • מארח/IP: מזינים את כתובת ה-IP של סוכן Bindplane.
    • יציאה: מזינים את מספר היציאה של סוכן Bindplane (לדוגמה, 514).
    • פרוטוקול: בוחרים באפשרות UDP.
  4. מסיימים את ההגדרה ומפעילים מחדש את המחבר:

    ./arcsight agents
    
  5. מריצים בדיקת קישוריות (מחפשים את: Successfully connected to syslog: X.X.X.X:514):

    tail -f /opt/arcsight/connectors/current/logs/agent.log
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM Logic (פונקציה לוגית)
פעולה security_result.action_details ממופה ישירות מהשדה act.
agt principal.ip ממופה ישירות מהשדה agt.
agt principal.asset.ip ממופה ישירות מהשדה agt.
אפליקציה network.application_protocol ממופה ישירות מהשדה app.
אומנות metadata.event_timestamp.seconds ממופה ישירות מהשדה art.
cs2 additional.fields.value.string_value ממופה ישירות מהשדה cs2 כשהערך של cs2Label הוא EventlogCategory.
cs2Label additional.fields.key ממופה ישירות מהשדה cs2Label כשהערך שלו הוא EventlogCategory.
cs3 additional.fields.value.string_value ממופה ישירות מהשדה cs3 כשהערך של cs3Label הוא Process ID.
cs3Label additional.fields.key ממופה ישירות מהשדה cs3Label כשהערך שלו הוא Process ID.
cs5 additional.fields.value.string_value ממופה ישירות מהשדה cs5 כשהערך של cs5Label הוא Authentication Package Name.
cs5Label additional.fields.key ממופה ישירות מהשדה cs5Label כשהערך שלו הוא Authentication Package Name.
cs6 additional.fields.value.string_value ממופה ישירות מהשדה cs6 כשהערך של cs6Label הוא Logon GUID.
cs6Label additional.fields.key ממופה ישירות מהשדה cs6Label כשהערך שלו הוא Logon GUID.
dhost about.hostname ממופה ישירות מהשדה dhost.
dhost target.hostname ממופה ישירות מהשדה dhost.
dntdom about.administrative_domain ממופה ישירות מהשדה dntdom.
dntdom target.administrative_domain ממופה ישירות מהשדה dntdom.
dproc about.process.command_line ממופה ישירות מהשדה dproc.
dproc target.process.command_line ממופה ישירות מהשדה dproc.
dst principal.ip ממופה ישירות מהשדה dst.
dst principal.asset.ip ממופה ישירות מהשדה dst.
dst target.ip ממופה ישירות מהשדה dst.
duid target.user.userid ממופה ישירות מהשדה duid.
duser target.user.user_display_name ממופה ישירות מהשדה duser.
dvc about.ip ממופה ישירות מהשדה dvc.
dvchost about.hostname ממופה ישירות מהשדה dvchost.
eventId additional.fields.value.string_value ממופה ישירות מהשדה eventId.
externalId metadata.product_log_id ממופה ישירות מהשדה externalId.
fname additional.fields.value.string_value ממופה ישירות מהשדה fname.
msg metadata.description ממופה ישירות מהשדה msg.
proto network.ip_protocol ממופה ישירות מהשדה proto. תרגום שמות של פרוטוקולים לקבועים המתאימים (למשל, tcp ל-TCP).
rt metadata.event_timestamp.seconds ממופה ישירות מהשדה rt.
shost about.hostname ממופה ישירות מהשדה shost.
shost principal.hostname ממופה ישירות מהשדה shost.
src principal.ip ממופה ישירות מהשדה src.
src principal.asset.ip ממופה ישירות מהשדה src.
src target.ip ממופה ישירות מהשדה src.
sproc principal.process.command_line ממופה ישירות מהשדה sproc.
spt principal.port ממופה ישירות מהשדה spt.
spt target.port ממופה ישירות מהשדה spt.
additional.EventRecordID additional.fields.value.string_value ממופה ישירות מהשדה ad.EventRecordID.
additional.ThreadID additional.fields.value.string_value ממופה ישירות מהשדה ad.ThreadID.
additional.Opcode additional.fields.value.string_value ממופה ישירות מהשדה ad.Opcode.
additional.ProcessID additional.fields.value.string_value ממופה ישירות מהשדה ad.ProcessID.
additional.TargetDomainName additional.fields.value.string_value ממופה ישירות מהשדה ad.TargetDomainName.
additional.Version additional.fields.value.string_value ממופה ישירות מהשדה ad.Version.
deviceExternalId about.asset.hardware.serial_number ממופה ישירות מהשדה deviceExternalId.
deviceInboundInterface additional.fields.value.string_value ממופה ישירות מהשדה deviceInboundInterface.
deviceOutboundInterface additional.fields.value.string_value ממופה ישירות מהשדה deviceOutboundInterface.
PanOSConfigVersion security_result.detection_fields.value ממופה ישירות מהשדה PanOSConfigVersion.
PanOSContentVersion security_result.detection_fields.value ממופה ישירות מהשדה PanOSContentVersion.
PanOSDGHierarchyLevel1 security_result.detection_fields.value ממופה ישירות מהשדה PanOSDGHierarchyLevel1.
PanOSDestinationLocation target.location.country_or_region ממופה ישירות מהשדה PanOSDestinationLocation.
PanOSRuleUUID metadata.product_log_id ממופה ישירות מהשדה PanOSRuleUUID.
PanOSThreatCategory security_result.category_details ממופה ישירות מהשדה PanOSThreatCategory.
PanOSThreatID security_result.threat_id ממופה ישירות מהשדה PanOSThreatID.
about.asset.asset_id נוצר על ידי שרשור של Palo Alto Networks., שם הספק (LF) והשדה deviceExternalId.
extensions.auth.type מגדירים את הערך AUTHTYPE_UNSPECIFIED אם השדה event_name מכיל את הערך logged on.
metadata.description אם השדה description מכיל את הערך by ואחריו כתובת IP, כתובת ה-IP נשלפת וממופה ל-principal.ip ול-principal.asset.ip.
metadata.event_type נקבע על סמך סדרה של בדיקות מותנות בשדות שונים, כולל event_name, principal_*, target_* ו-device_event_class_id. הלוגיקה קובעת את סוג האירוע המתאים ביותר על סמך המידע הזמין.
metadata.log_type הגדרת הערך ARCSIGHT_CEF.
metadata.product_event_type נוצר על ידי שרשור של \[, the device_event_class_id field, \] - והשדה name.
metadata.product_name צריך להגדיר את הערך NGFW אם השדה product_name הוא LF.
principal.asset.ip אם השדה description מכיל את הערך by ואחריו כתובת IP, כתובת ה-IP נשלפת וממופה ל-principal.ip ול-principal.asset.ip.
principal.ip אם השדה description מכיל את הערך by ואחריו כתובת IP, כתובת ה-IP נשלפת וממופה ל-principal.ip ול-principal.asset.ip.
security_result.action צריך להגדיר את הערך ALLOW אם השדה act הוא alert, אחרת צריך להגדיר את הערך BLOCK.
security_result.severity הגדרת הערך HIGH אם השדה sev גדול מ-7 או שווה לו, אחרת הגדרת הערך LOW.
PanOSFileType event.idm.read_only_udm.target.file.mime_type מופה מיומן השינויים
PanOSEmailSubject event.idm.read_only_udm.network.email.subject מופה מיומן השינויים
PanOSNSSAINetworkSliceType event.idm.read_only_udm.additional.fields מופה מיומן השינויים
PanOSURLCounter event.idm.read_only_udm.additional.fields מופה מיומן השינויים
PanOSReportID event.idm.read_only_udm.additional.fields מופה מיומן השינויים
PanOSDGHierarchyLevel2 event.idm.read_only_udm.additional.fields מופה מיומן השינויים
PanOSVirtualSystemName event.idm.read_only_udm.additional.fields מופה מיומן השינויים
PanOSSigFlags event.idm.read_only_udm.additional.fields מופה מיומן השינויים
PanOSPartialHash event.idm.read_only_udm.additional.fields מופה מיומן השינויים
version event.idm.read_only_udm.additional.fields מופה מיומן השינויים
cn3 network.duration.seconds מופה מיומן השינויים
PanOSTenantID additional.fields מופה מיומן השינויים
cn3 additional.fields מופה מיומן השינויים
PanOSCortexDataLakeTenantID additional.fields מופה מיומן השינויים
target_user target.user.userid מופה מיומן השינויים
principal_ip principal.ip מופה מיומן השינויים
PanOSStage", "PanOSConnectionError", and "PanOSEventDetails additional.fields מופה מיומן השינויים
outcome security_result.action_details מופה מיומן השינויים
PanOSDescription metadata.description מופה מיומן השינויים
PanOSSourceUser principal.user.userid מופה מיומן השינויים
app target.application מופה מיומן השינויים
flexString2", "PanOSFileHash", and "filePath additional.fields מופה מיומן השינויים
threat_name security_result.threat_name מופה מיומן השינויים
principal_ip1 principal.ip מופה מיומן השינויים
metadata.event_type NETWORK_CONNECTION מופה מיומן השינויים
deviceOutboundInterface", "deviceInboundInterface additional.fields מופה מיומן השינויים
query additional fields מופה מיומן השינויים

יומן שינויים

הצגת יומן השינויים של המנתח הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.