איסוף יומנים של מערכת למניעת פריצות (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: יצירת חשבון שירות ל-Chronicle API (מומלץ)
- נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
- נכנסים אל IAM & Admin > Service Accounts (ניהול הרשאות גישה (IAM) & אדמין > חשבונות שירות).
- לוחצים על יצירת חשבון שירות.
- מזינים את פרטי ההגדרה הבאים:
- Service account name: מזינים שם לחשבון (לדוגמה,
bindplane-ingest). - תיאור חשבון השירות: מזינים תיאור (לדוגמה,
Bindplane agent log ingestion).
- Service account name: מזינים שם לחשבון (לדוגמה,
- לוחצים על Create and continue.
- בקטע Grant this service account access to project לוחצים על Select a role ובוחרים באפשרות Chronicle Editor.
- לוחצים על המשך ואז על סיום.
- לוחצים על חשבון השירות שיצרתם ואז עוברים לכרטיסייה Keys.
- לוחצים על Add key > Create new key.
- בוחרים באפשרות JSON ולוחצים על Create. קובץ המפתח יורד למחשב.
- שומרים את קובץ המפתח בשם
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כך שיתאים לנתיב שבו שומרים את הקובץ. - עוברים אל IAM & Admin > Settings (ניהול הרשאות גישה ואדמין > הגדרות) ומעתיקים את מספר הפרויקט. תצטרכו אותו כדי להגדיר את כלי הייצוא.
אפשרות 2: הורדה של קובץ האימות להטמעת נתונים (מדור קודם)
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות SIEM > סוכני איסוף.
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת הסוכן של Bindplane
מתקינים את הסוכן של Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנת חלונות
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietמחכים שההתקנה תסתיים.
מאמתים את ההתקנה על ידי הרצת:
sc query observiq-otel-collectorהשירות צריך להופיע עם הערך RUNNING.
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shמחכים שההתקנה תסתיים.
מאמתים את ההתקנה על ידי הרצת:
sudo systemctl status observiq-otel-collectorהשירות צריך להופיע כפעיל (פועל).
מקורות מידע נוספים להתקנה
לאפשרויות התקנה נוספות ולפתרון בעיות, עיינו במדריך להתקנת סוכן Bindplane.
הגדרה של סוכן Bindplane לקליטת syslog ושליחה ל-Google SecOps
מאתרים את קובץ התצורה
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
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
- Linux:
-
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: לוחצים על קובץ > שמירה
- Linux: מקישים על
מפעילים מחדש את הסוכן של Bindplane כדי להחיל את השינויים.
כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:
sudo systemctl restart observiq-otel-collectorמוודאים שהשירות פועל:
sudo systemctl status observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
sudo journalctl -u observiq-otel-collector -f
כדי להפעיל מחדש את הסוכן של Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:
שורת הפקודה או PowerShell כאדמין:
net stop observiq-otel-collector && net start observiq-otel-collectorמסוף השירותים:
- לוחצים על
Win+R, מקלידיםservices.mscולוחצים על Enter. - מאתרים את observIQ OpenTelemetry Collector.
- לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
מוודאים שהשירות פועל:
sc query observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- לוחצים על
הגדרת מערכת אדפטיבית למניעת חדירות לרשתות אלחוטיות (aWIPS) ב-Cisco Catalyst
- נכנסים ל-Cisco Catalyst באמצעות SSH.
מזינים את ההגדרה הגלובלית כדי להפעיל את aWIPS בפרופיל ה-AP:
configure terminal ap profile <profile-name> awipsהגדרת מרווח הזמן של הגבלת קצב ההעברה של syslog ל-60 שניות:
awips-syslog throttle period 60
הגדרת syslog באמצעות פרופילים של Cisco AP
בפרופיל של הצטרפות לנקודת גישה (באמצעות CLI):
configure terminal ap profile <profile-name> syslog host <BINDPLANE_IP> syslog level informational syslog facility local0 endמחליפים את
<BINDPLANE_IP>בכתובת ה-IP של סוכן Bindplane.
הגדרת syslog ב-Cisco WLC (GUI)
- נכנסים לממשק המשתמש של WLC באינטרנט.
- עוברים אל ניהול > יומנים > הגדרה.
- מזינים את כתובת ה-IP של סוכן Bindplane בשדה כתובת ה-IP של שרת Syslog.
- לוחצים על הוספה.
- מספקים את פרטי ההגדרה הבאים:
- Syslog Severity: בוחרים באפשרות Informational.
- Syslog Facility: בוחרים באפשרות Local Use 0.
- לוחצים על אישור.
- לוחצים על שמירת ההגדרה.
הגדרת syslog בנקודות גישה באמצעות WLC (CLI)
מארח syslog של נקודת גישה גלובלית:
config ap syslog host global <BINDPLANE_IP>מגדירים את המארח הספציפי של יומן המערכת של נקודת הגישה:
config ap syslog host specific <AP-name> <BINDPLANE_IP>מגדירים את חומרת ה-syslog של נקודת הגישה:
config ap logging syslog level informationalמגדירים את המתקן להודעות AP:
config logging syslog facility local0מחליפים את
<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.