איסוף יומנים של מערכת למניעת פריצות (WIPS) אלחוטיות של Cisco

גרסת כלי הניתוח: 1.0

נתמך ב:

במסמך הזה מוסבר איך להטמיע יומנים של Cisco Wireless Intrusion Prevention System ‏ (WIPS) ב-Google Security Operations באמצעות סוכן Bindplane.

המנתח מחלץ צמדי מפתח/ערך מההודעות של Syslog, ואז ממפה את הערכים האלה לשדות של Unified Data Model ‏ (UDM). הוא קובע את סוג האירוע המתאים על סמך נוכחות של מידע על הגורם המבצע, היעד והמשתמש, ומסווג אירועי אבטחה על סמך eventType ושדות אחרים.

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

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

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

קבלת פרטי כניסה ל-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 (ניהול הרשאות גישה (IAM) & אדמין > חשבונות שירות).
  3. לוחצים על יצירת חשבון שירות.
  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 (ניהול הרשאות גישה ואדמין > הגדרות) ומעתיקים את מספר הפרויקט. תצטרכו אותו כדי להגדיר את כלי הייצוא.

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

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

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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Profile (הגדרות 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/cisco_wips:
        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: CISCO_WIPS
        raw_log_field: body
    
    service:
      pipelines:
        logs/cisco_wips_to_chronicle:
          receivers:
            - udplog
          exporters:
            - chronicle/cisco_wips
    

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

מחליפים את ה-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. רשימה מלאה של נקודות הקצה האזוריות מופיעה במאמר Regional Endpoints.
    • ‫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/cisco_wips:
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: '<customer_id>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: CISCO_WIPS
        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"
        

הגדרת מערכת אדפטיבית למניעת חדירות לרשתות אלחוטיות (aWIPS) ב-Cisco Catalyst

  1. נכנסים ל-Cisco Catalyst באמצעות SSH.
  2. מזינים את ההגדרה הגלובלית כדי להפעיל את aWIPS בפרופיל ה-AP:

    configure terminal
    ap profile <profile-name>
    awips
    
  3. הגדרת מרווח הזמן של הגבלת קצב ההעברה של syslog ל-60 שניות:

    awips-syslog throttle period 60
    

הגדרת syslog באמצעות פרופילים של Cisco AP

  1. בפרופיל של הצטרפות לנקודת גישה (באמצעות CLI):

    configure terminal
    ap profile <profile-name>
    syslog host <BINDPLANE_IP>
    syslog level informational
    syslog facility local0
    end
    
  2. מחליפים את <BINDPLANE_IP> בכתובת ה-IP של סוכן Bindplane.

הגדרת syslog ב-Cisco WLC‏ (GUI)

  1. נכנסים לממשק המשתמש של WLC באינטרנט.
  2. עוברים אל ניהול > יומנים > הגדרה.
  3. מזינים את כתובת ה-IP של סוכן Bindplane בשדה כתובת ה-IP של שרת Syslog.
  4. לוחצים על הוספה.
  5. מספקים את פרטי ההגדרה הבאים:
    • Syslog Severity: בוחרים באפשרות Informational.
    • Syslog Facility: בוחרים באפשרות Local Use 0.
  6. לוחצים על אישור.
  7. לוחצים על שמירת ההגדרה.

הגדרת syslog בנקודות גישה באמצעות WLC ‏ (CLI)

  1. מארח syslog של נקודת גישה גלובלית:

    config ap syslog host global <BINDPLANE_IP>
    
  2. מגדירים את המארח הספציפי של יומן המערכת של נקודת הגישה:

    config ap syslog host specific <AP-name> <BINDPLANE_IP>
    
  3. מגדירים את חומרת ה-syslog של נקודת הגישה:

    config ap logging syslog level informational
    
  4. מגדירים את המתקן להודעות AP:

    config logging syslog facility local0
    
  5. מחליפים את <BINDPLANE_IP> בכתובת ה-IP של סוכן Bindplane.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
applicationCategoryData security_result.summary מיפוי ישיר.
applicationSpecificAlarmID target.resource.attribute.labels.applicationSpecificAlarmID הופך לתווית במשאב היעד.
attackerMacAddr target.mac ממופים ישירות.
authEntityId principal.resource.attribute.labels.authEntityId הומרו לתווית במשאב הראשי.
category security_result.category_details ממופים ישירות.
detectingApCount target.resource.attribute.labels.detectingApCount הופך לתווית במשאב היעד.
description metadata.description ממופים ישירות.
displayName principal.user.userid חולץ באמצעות הביטוי הרגולרי host/(?P<user_id>[\\w-]+) מ-displayName אם התבנית תואמת.
eventType metadata.product_event_type ממופים ישירות.
instanceId principal.resource.attribute.labels.instanceId הומרו לתווית במשאב הראשי.
instanceUuid metadata.product_log_id ממופים ישירות.
instanceVersion principal.resource.attribute.labels.instanceVersion הומר לתווית במשאב העיקרי.
macInfo target.resource.attribute.labels.macInfo הומר לתווית במשאב היעד.
notificationDeliveryMechanism target.resource.attribute.labels.notificationDeliveryMechanism, network.ip_protocol הומר לתווית במשאב היעד. אם הערך מכיל את הביטוי snmp (לא תלוי רישיות), הערך של network.ip_protocol מוגדר כ-UDP.
previousSeverity target.resource.attribute.labels.previousSeverity הופך לתווית במשאב היעד. מגדירים את הערך AUTHTYPE_UNSPECIFIED אם הערך של eventType הוא USER_AUTHENTICATION_FAILURE והערך של user_id לא ריק. הועתק מtimestamp ביומן. הערך נקבע על ידי לוגיקת ניתוח שמבוססת על כמה תנאים:
הערך הוא USER_LOGIN אם eventType הוא USER_AUTHENTICATION_FAILURE ו-user_id לא ריק. ‫
NETWORK_CONNECTION אם גם is_target_present וגם is_principal_present הם True. ‫
"STATUS_UPDATE" אם is_principal_present נכון. ‫
"USER_UNCATEGORIZED" אם user_id לא ריק. ‫
"GENERIC_EVENT" אחרת. מקודד באופן קשיח ל-"CISCO_WIPS". מקודד באופן קשיח ל "מערכת למניעת פריצות אלחוטיות (WIPS)". הערך מוטמע בקוד כ-Cisco. הערך שמוגדר הוא UDP אם notificationDeliveryMechanism מכיל snmp (לא תלוי באותיות רישיות). ממופה מ-reportingEntityAddress או מ-source אם הם לא כתובות IP. ממופה מ-reportingEntityAddress או מ-source אם מדובר בכתובות IP. הערך חולץ באמצעות ביטוי רגולרי מ-source אם מדובר בכתובת MAC. הומרו לתווית במשאב הראשי. הומר לתווית במשאב העיקרי.
reportingEntityAddress principal.ip, principal.hostname אם זו כתובת IP, היא ממופה אל principal.ip. אחרת, ממופה אל principal.hostname.
severity security_result.severity המיפוי מתבצע על סמך התנאים הבאים:
'קריטי' אם הערך של severity הוא '0',‏ '1',‏ 'קריטי' או 'גבוה מאוד'. ‫
HIGH אם severity הוא 2,‏ 3,‏ 4 או HIGH.
"MEDIUM" אם הערך של severity הוא "5" או "MEDIUM". ‫
LOW אם severity הוא 6,‏ 7 או LOW.
sigAlertDescription security_result.description מיפוי ישיר.
signatureName target.resource.attribute.labels.signatureName הופך לתווית במשאב היעד.
source principal.hostname, principal.ip, principal.mac אם זו כתובת IP, היא ממופה אל principal.ip. אם זו כתובת MAC, היא ממופה אל principal.mac. אחרת, המיפוי הוא ל-principal.hostname.
srcObjectClassId principal.resource.attribute.labels.srcObjectClassId הומר לתווית במשאב העיקרי.
srcObjectId principal.resource.attribute.labels.srcObjectId הומרו לתווית במשאב הראשי.
subclassName security_result.rule_name מיפוי ישיר. צריך להגדיר את הערך "BLOCK" אם applicationSpecificAlarmID מכיל את הערך "BlockList" (לא תלוי-רישיות) או אם eventType הוא אחד מהערכים הבאים: "SIGNATURE_ATTACK",‏ "MALICIOUS_ROGUE_AP_DETECTED" או "USER_AUTHENTICATION_FAILURE". נקבע על ידי לוגיקת הניתוח על סמך eventType:
"NETWORK_MALICIOUS" אם eventType הוא "MALICIOUS_ROGUE_AP_DETECTED". ‫
"NETWORK_SUSPICIOUS" אם eventType הוא "SIGNATURE_ATTACK". ‫
"AUTH_VIOLATION" אם הערך של eventType הוא "USER_AUTHENTICATION_FAILURE".
timestamp metadata.event_timestamp השדות seconds ו-nanos ממופים ישירות.

יומן שינויים

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

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