איסוף יומנים של מתג Huawei

נתמך ב:

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

מתגי רשת ארגוניים של Huawei יוצרים הודעות syslog לאירועי ממשק, אימות, spanning tree ושינויים בהגדרות. היומנים הם בפורמט syslog סטנדרטי, והם כוללים את המאפיינים העיקריים של הרשת ושל היעד, את זהות המשתמש, את המטא-נתונים של התהליך ואת פרטי תוצאות האבטחה.

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

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

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

קבלת פרטי כניסה ל-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. מזינים את פרטי ההגדרה הבאים:
    • Service account name: מזינים שם לחשבון (לדוגמה, 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 בספריית 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 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
    

    השירות אמור להופיע כ-active (running).

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

לאפשרויות התקנה נוספות ולפתרון בעיות, עיינו במדריך להתקנת סוכן 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/huawei_switch:
        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: HUAWEI_SWITCH
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/huawei_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/huawei_switch
    

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

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

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

    • ‫udplog: סוג המקלט לפי הפרוטוקול:
      • ‫udplog ל-UDP syslog
      • ‫tcplog ל-syslog של TCP
    • ‫0.0.0.0: כתובת ה-IP להאזנה:
      • 0.0.0.0 כדי להאזין בכל הממשקים (מומלץ)
      • כתובת IP ספציפית להאזנה בממשק אחד
    • ‫514: מספר היציאה להאזנה (לדוגמה, 514, ‏ 1514, ‏ 6514)
  • הגדרת הייצוא:

    • ‫huawei_switch: שם תיאורי של המייצא
    • ‫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>: מספר הלקוח מהשלב הקודם
    • ‫location: מחליפים את <LOCATION> באזור של מופע Google SecOps (לדוגמה, us,‏ europe או asia-southeast1). ערך זה מתווסף לתחילית chronicle.googleapis.com של הכלי לייצוא. רשימה מלאה של נקודות הקצה האזוריות מופיעה במאמר Regional Endpoints.
    • ‫project: מחליפים את <PROJECT_NUMBER> במספר הפרויקט שמופיע בקטע IAM & Admin > Settings.
    • ‫endpoint: משאירים את הערך chronicle.googleapis.com.
    • ‫HUAWEI_SWITCH: סוג היומן בדיוק כמו שהוא מופיע ב-Chronicle
    • ‫ingestion_labels: תוויות אופציונליות בפורמט YAML (לדוגמה, env: production)
  • הגדרת צינור עיבוד נתונים:

    • ‫huawei_to_chronicle: שם תיאורי לצינור עיבוד הנתונים

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

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

    exporters:
      chronicle/huawei_switch:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: HUAWEI_SWITCH
        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 של Huawei Switch

  1. מתחברים למתג של Huawei באמצעות SSH או מסוף.
  2. נכנסים לתצוגת המערכת:

    system-view
    
  3. אם מרכז המידע עדיין לא מופעל, מפעילים אותו:

    info-center enable
    
  4. מגדירים את מארח ה-syslog כך שיצביע על סוכן Bindplane:

    info-center loghost <BINDPLANE_AGENT_IP>
    
    • מחליפים את <BINDPLANE_AGENT_IP> בכתובת ה-IP של המארח של סוכן Bindplane.
  5. (אופציונלי) מגדירים את רמת החומרה והמתקן:

    info-center loghost <BINDPLANE_AGENT_IP> facility local7 level informational
    
  6. מאשרים את ההגדרה:

    commit
    
  7. מאמתים את ההגדרות:

    display info-center
    
  8. כדי לוודא שהודעות syslog מתקבלות, בודקים את יומן הפעילות של סוכן Bindplane.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
AuthenticationMethod_label additional.fields ממוזג
Command_label additional.fields ממוזג
DeviceType_label additional.fields ממוזג
Flapping_port_1_label additional.fields ממוזג
Flapping_port_label additional.fields ממוזג
InfoID_label additional.fields ממוזג
Interface_label additional.fields ממוזג
Task_label additional.fields ממוזג
VLANID_label additional.fields ממוזג
accept_label additional.fields ממוזג
alarmID_label additional.fields ממוזג
assistant_name_label additional.fields ממוזג
body_label additional.fields ממוזג
clearType_label additional.fields ממוזג
content_type_label additional.fields ממוזג
event_identifier_label additional.fields ממוזג
facilityName_label additional.fields ממוזג
facility_label additional.fields ממוזג
frag_index_label additional.fields ממוזג
original_port_label additional.fields ממוזג
port_2_label additional.fields ממוזג
service_flapping_port1_label additional.fields ממוזג
service_flapping_port2_label additional.fields ממוזג
service_original_port_label additional.fields ממוזג
severity_label additional.fields ממוזג
vlan_id_label additional.fields ממוזג
has_principal extensions.auth.type מיפוי: true → AUTHTYPE_UNSPECIFIED
hostname intermediary.hostname מיפוי ישיר
raw_hostname intermediary.hostname מיפוי ישיר
desc metadata.description מיפוי ישיר
logfile_description metadata.description מיפוי ישיר
service_mac_description metadata.description מיפוי ישיר
temp_description metadata.description מיפוי ישיר
raw_syslog_timestamp metadata.event_timestamp נותח בתור MMM d yyyy HH:mm:ss
syslog_timestamp metadata.event_timestamp ניתוח הכתובות שברשימה: MMM dd yyyy HH:mm:ss.SSS
has_principal metadata.event_type מיפוי: true ← USER_LOGOUT, true ← STATUS_UPDATE, true ← NETWORK_CONNECTION
has_user metadata.event_type מיפוי: true → USER_UNCATEGORIZED
cid metadata.product_log_id מיפוי ישיר
temp_cid metadata.product_log_id מיפוי ישיר
temp_service metadata.product_log_id מיפוי ישיר
UserType network.application_protocol מיפוי: (?i)SSH → SSH
Method network.http.method מיפוי ישיר
SessionId network.session_id מיפוי ישיר
devid principal.asset.asset_id מיפוי ישיר
SourceAddress principal.asset.ip ממוזג
host principal.asset.ip מיפוי: ^(?:[0-9]{1,3}[.]){3}[0-9]{1,3}$ → host
Ip principal.ip ממוזג
RemoteIp principal.ip ממוזג
SourceAddress principal.ip ממוזג
host principal.ip מיפוי: ^(?:[0-9]{1,3}[.]){3}[0-9]{1,3}$ → host
MacAddress principal.mac ממוזג
mac_address principal.mac ממוזג
cmd principal.process.command_line מיפוי ישיר
ProcessId principal.process.pid מיפוי ישיר
VpnName principal.resource.name מיפוי ישיר
temp_oid principal.resource.product_object_id מיפוי ישיר
User principal.user.userid מיפוי ישיר
UserName principal.user.userid מיפוי ישיר
Reason security_result.description מיפוי ישיר
severityName security_result.severity מיפוי: warning → MEDIUM
severityName security_result.severity_details מיפוי ישיר
state security_result.severity_details מיפוי ישיר
DestAddress target.asset.ip ממוזג
DestAddress target.ip ממוזג
Destination target.ip ממוזג
LocalIp target.ip ממוזג
temp_security target.resource.name מיפוי ישיר
tty_type target.resource.name מיפוי ישיר
Url target.url מיפוי ישיר
לא רלוונטי extensions.auth.type קבוע: AUTHTYPE_UNSPECIFIED
לא רלוונטי metadata.event_type קבוע: USER_LOGOUT
לא רלוונטי metadata.product_name קבוע: HUAWEI_SWITCH
לא רלוונטי metadata.vendor_name קבוע: HUAWEI_SWITCH
לא רלוונטי network.application_protocol קבוע: SSH
לא רלוונטי security_result.severity קבוע: MEDIUM
UserAddress event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
LocalAddress event.idm.read_only_udm.target.ip וגם event.idm.read_only_udm.target.asset.ip מופה מיומן השינויים
FailedReason event.idm.read_only_udm.security_result.description מופה מיומן השינויים
VPNInstanceName event.idm.read_only_udm.target.resource.name מופה מיומן השינויים
event_hostname event.idm.read_only_udm.target.hostname וגם event.idm.read_only_udm.target.asset.hostname מופה מיומן השינויים
desc_input event.idm.read_only_udm.metadata.description מופה מיומן השינויים
event_type_value event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
event_identifier_value event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
UserType event.idm.read_only_udm.additional.fields מופה מיומן השינויים
event_type event.idm.read_only_udm.additional.fields מופה מיומן השינויים
ServiceType event.idm.read_only_udm.target.application מופה מיומן השינויים
IPADDRESS event.idm.read_only_udm.principal.ip וגם event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
InterfaceName event.idm.read_only_udm.additional.fields מופה מיומן השינויים
TrapThreshold event.idm.read_only_udm.additional.fields מופה מיומן השינויים
BandWidthUsage event.idm.read_only_udm.additional.fields מופה מיומן השינויים
UserName event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
SourceAddress event.idm.read_only_udm.principal.ip מופה מיומן השינויים
SourceAddress event.idm.read_only_udm.principal.asset.ip מופה מיומן השינויים
DestAddress event.idm.read_only_udm.target.ip מופה מיומן השינויים
DestAddress event.idm.read_only_udm.target.asset.ip מופה מיומן השינויים
Method event.idm.read_only_udm.network.http.method מופה מיומן השינויים
SessionId event.idm.read_only_udm.network.session_id מופה מיומן השינויים
Url event.idm.read_only_udm.target.url מופה מיומן השינויים
FragIndex event.idm.read_only_udm.additional.fields מופה מיומן השינויים
Accept event.idm.read_only_udm.additional.fields מופה מיומן השינויים
ContentType event.idm.read_only_udm.additional.fields מופה מיומן השינויים
Body event.idm.read_only_udm.additional.fields מופה מיומן השינויים
AssistantName event.idm.read_only_udm.additional.fields מופה מיומן השינויים
raw_syslog_timestamp event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
raw_hostname event.idm.read_only_udm.intermediary.hostname מופה מיומן השינויים
mac_address event.idm.read_only_udm.principal.mac מופה מיומן השינויים
temp_oid event.idm.read_only_udm.principal.resource.product_object_id מופה מיומן השינויים
severity event.idm.read_only_udm.additional.fields מופה מיומן השינויים
facility event.idm.read_only_udm.additional.fields מופה מיומן השינויים
facilityName event.idm.read_only_udm.additional.fields מופה מיומן השינויים
severityName event.idm.read_only_udm.security_result.severity_details מופה מיומן השינויים
severityName event.idm.read_only_udm.security_result.severity מופה מיומן השינויים
DeviceType event.idm.read_only_udm.additional.fields מופה מיומן השינויים
syslog_timestamp event.idm.read_only_udm.metadata.event_timestamp מופה מיומן השינויים
devid event.idm.read_only_udm.principal.asset.asset_id מופה מיומן השינויים

יומן שינויים

צפייה ביומן השינויים של כלי הניתוח הזה

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