איסוף יומנים של Imperva FlexProtect
במאמר הזה מוסבר איך להטמיע יומנים של Imperva FlexProtect ב-Google Security Operations באמצעות סוכן Bindplane.
המנתח מחלץ שדות מיומני syslog בפורמט Imperva FlexProtect ב-CEF (פורמט אירועים נפוץ) עם תוספי מפתח/ערך. הוא משתמש ב-grok או ב-kv כדי לנתח את הודעת ה-CEF, ואז ממפה את הערכים האלה למודל הנתונים המאוחד (UDM). בנוסף, הוא מגדיר ערכי ברירת מחדל של מטא-נתונים למקור ולסוג האירוע. Imperva FlexProtect מאפשר פריסה גמישה של פתרונות האבטחה של Imperva (SecureSphere, Cloud WAF, Bot Protection) בסביבות ענן היברידיות.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- מארח עם Windows 2016 ואילך או Linux עם
systemd - אם השרת פועל מאחורי שרת proxy, צריך לוודא שהיציאות של חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane.
- גישה עם הרשאות למסוף הניהול של Imperva FlexProtect או למסופים של מוצרים ספציפיים
קבלת פרטי כניסה ל-Google SecOps עבור סוכן Bindplane
כדי לאמת את סוכן Bindplane ב-Google SecOps, בוחרים באחת מהשיטות הבאות:
- פריסות חדשות: משתמשים ב-Chronicle API (אפשרות 1).
- פריסות מדור קודם: אפשר להמשיך להשתמש בקובץ האימות של ה-API להעברת נתונים (אפשרות 2) עד שה-API להעברת נתונים יפסיק לפעול ב-20 ביולי 2027.
אפשרות 1: יצירת חשבון שירות עבור Chronicle API (מומלץ)
- נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
- נכנסים לדף IAM & Admin > Service Accounts.
- לוחצים על Create service account.
- מספקים את פרטי ההגדרה הבאים:
- שם חשבון השירות: מזינים שם לחשבון (לדוגמה,
bindplane-ingest). - Service account description: מזינים תיאור (לדוגמה,
Bindplane agent log ingestion).
- שם חשבון השירות: מזינים שם לחשבון (לדוגמה,
- לוחצים על 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 ומעתיקים את הערך של Project number. תצטרכו אותו כדי להגדיר את הייצוא.
אפשרות 2: הורדה של קובץ האימות להטמעת נתונים (מדור קודם)
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
- מורידים את קובץ האימות להטמעת נתונים.
- שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings (הגדרות SIEM) > Profile (פרופיל).
- מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את הסוכן של Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנת חלונות
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
מקורות מידע נוספים להתקנה
לאפשרויות התקנה נוספות, קראו את מדריך ההתקנה של סוכן Bindplane.
הגדרה של סוכן Bindplane להטמעה של Syslog ושליחה אל Google SecOps
ניגשים לקובץ התצורה:
- מאתרים את הקובץ
config.yaml. בדרך כלל, הוא נמצא בספרייה/opt/observiq-otel-collector/ב-Linux או בספריית ההתקנה ב-Windows. - פותחים את הקובץ באמצעות כלי לעריכת טקסט (לדוגמה,
nano,viאו פנקס הרשימות).
- מאתרים את הקובץ
עורכים את הקובץ
config.yamlבאופן הבא:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: 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 # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <CUSTOMER_ID> endpoint: chronicle.googleapis.com # Add optional ingestion labels for better organization log_type: 'IMPERVA_FLEXPROTECT' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels- מחליפים את היציאה ואת כתובת ה-IP לפי הצורך בתשתית שלכם.
- מחליפים את
<LOCATION>באזור של מכונת Google SecOps (לדוגמה,us,europeאוasia-southeast1). המייצא מוסיף את הערך הזה בתחילתchronicle.googleapis.com. - מחליפים את
<PROJECT_NUMBER>במספר הפרויקט שמופיע בקטע IAM & Admin > Settings. - מחליפים את
<CUSTOMER_ID>במספר הלקוח בפועל. - מעדכנים את
/path/to/ingestion-authentication-file.jsonלנתיב הקובץ שבו נשמר קובץ המפתח של חשבון השירות (אפשרות 1) בשלב 1.
כלי לייצוא נתונים מ-Legacy ingestion API
אם משתמשים בקובץ האימות של ההעלאה מאפשרות 2, מחליפים את הבלוק
exportersבבלוק הבא. מגדירים אתcreds_file_pathלנתיב של קובץ האימות להטמעת נתונים. אם המכונה נמצאת מחוץ לארה"ב, מחליפים אתmalachiteingestion-pa.googleapis.comבנקודת הקצה האזורית (לדוגמה,europe-malachiteingestion-pa.googleapis.com).exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <CUSTOMER_ID> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'IMPERVA_FLEXPROTECT' raw_log_field: body ingestion_labels:
מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.
כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:
sudo systemctl restart observiq-otel-collectorכדי להפעיל מחדש את הסוכן של Bindplane ב-Windows, אפשר להשתמש במסוף Services או להזין את הפקודה הבאה:
net stop observiq-otel-collector && net start observiq-otel-collector
הגדרת העברת Syslog ב-Imperva FlexProtect
לרכיב SecureSphere (בענן או מקומי)
- נכנסים ל-Imperva SecureSphere Management Console.
- עוברים אל Configuration (הגדרה) > Action Sets (קבוצות פעולות).
- כדי ליצור קבוצת פעולות חדשה, לוחצים על הוספה.
לוחצים על הוספת פעולה ומזינים את פרטי ההגדרה הבאים:
- שם: מזינים שם תיאורי (לדוגמה,
Google SecOps Syslog). - Action Type (סוג הפעולה): בוחרים באפשרות Syslog.
- Host: מזינים את כתובת ה-IP של הסוכן של Bindplane.
- יציאה: מזינים את מספר היציאה של סוכן Bindplane (ברירת המחדל היא 514).
- פרוטוקול: בוחרים באפשרות UDP או TCP.
- רמת היומן של Syslog: בוחרים באפשרות DEBUG.
- Syslog Facility: בוחרים באפשרות LOCAL0.
- פורמט: בוחרים באפשרות CEF (פורמט אירועים נפוץ).
- שם: מזינים שם תיאורי (לדוגמה,
שומרים את הגדרות הפעולה ומחילים אותן על מדיניות האבטחה הרלוונטית.
לרכיב Cloud WAF/Incapsula
- נכנסים למסוף Imperva Cloud.
- עוברים אל Logs (יומנים) > Log Setup (הגדרת יומנים).
- הגדרת יעד ל-syslog:
- Host: מזינים את כתובת ה-IP של הסוכן של Bindplane.
- יציאה: מזינים את מספר היציאה של סוכן Bindplane (ברירת המחדל היא 514).
- פרוטוקול: בוחרים באפשרות UDP או TCP.
- פורמט: בוחרים באפשרות CEF.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| פעולה | read_only_udm.security_result.action_details | ממופה ישירות מהשדה act. |
| אפליקציה | read_only_udm.network.application_protocol | ממופה ישירות מהשדה app. |
| ccode | read_only_udm.principal.location.country_or_region | ממופה ישירות מהשדה ccode. |
| cicode | read_only_udm.principal.location.city | ממופה ישירות מהשדה cicode. |
| cn1 | read_only_udm.network.http.response_code | ממופה ישירות מהשדה cn1 אחרי המרה למספר שלם. |
| cs1 | read_only_udm.additional.fields.value.string_value | ממופה ישירות מהשדה cs1. |
| cs2 | read_only_udm.additional.fields.value.string_value | ממופה ישירות מהשדה cs2. |
| cs3 | read_only_udm.additional.fields.value.string_value | ממופה ישירות מהשדה cs3. |
| cs4 | read_only_udm.additional.fields.value.string_value | ממופה ישירות מהשדה cs4. |
| cs5 | read_only_udm.additional.fields.value.string_value | ממופה ישירות מהשדה cs5. |
| cs6 | read_only_udm.additional.fields.value.string_value | ממופה ישירות מהשדה cs6. |
| cs7 | read_only_udm.additional.fields.value.string_value | ממופה ישירות מהשדה cs7. |
| cs8 | read_only_udm.additional.fields.value.string_value | ממופה ישירות מהשדה cs8. |
| cs9 | read_only_udm.additional.fields.value.string_value | ממופה ישירות מהשדה cs9. |
| cpt | read_only_udm.principal.port | ממופה ישירות מהשדה cpt אחרי המרה למספר שלם. |
| לקוח/ה | read_only_udm.principal.user.user_display_name | ממופה ישירות מהשדה Customer. |
| deviceExternalId | read_only_udm.about.asset.asset_id | הערך נגזר על ידי שרשור של "Incapsula.SIEMintegration:" עם השדה deviceExternalId. |
| deviceFacility | read_only_udm.principal.location.city | ממופה ישירות מהשדה deviceFacility. |
| dproc | read_only_udm.target.process.command_line | ממופה ישירות מהשדה dproc. |
| מקש End | read_only_udm.security_result.detection_fields.value | ממופה ישירות מהשדה end. |
| fileId | read_only_udm.network.session_id | ממופה ישירות מהשדה fileId. |
| filePermission | read_only_udm.about.resource.attribute.permissions.name | ממופה ישירות מהשדה filePermission. |
| ב- | read_only_udm.network.received_bytes | ממופה ישירות מהשדה in. |
| qstr | read_only_udm.security_result.detection_fields.value | ממופה ישירות מהשדה qstr. |
| בקשה | read_only_udm.target.url | ממופה ישירות מהשדה request. |
| requestClientApplication | read_only_udm.network.http.user_agent | ממופה ישירות מהשדה requestClientApplication. |
| requestMethod | read_only_udm.network.http.method | ממופה ישירות מהשדה requestMethod. |
| siteid | read_only_udm.security_result.detection_fields.value | ממופה ישירות מהשדה siteid. |
| SIP | read_only_udm.target.ip | ממופה ישירות מהשדה sip. |
| sourceServiceName | read_only_udm.principal.application | ממופה ישירות מהשדה sourceServiceName. |
| spt | read_only_udm.target.port | ממופה ישירות מהשדה spt אחרי המרה למספר שלם. |
| src | read_only_udm.principal.ip | ממופה ישירות מהשדה src. |
| התחלה | read_only_udm.security_result.detection_fields.value | ממופה ישירות מהשדה start. |
| suid | read_only_udm.principal.user.userid | ממופה ישירות מהשדה suid. |
| ver | read_only_udm.network.tls.version | ממופה ישירות מהשדה ver. |
| read_only_udm.about.asset.asset_id | הערך נגזר על ידי שרשור של "Incapsula.SIEMintegration:" עם השדה deviceExternalId. |
|
| read_only_udm.additional.fields.key | הערך נקבע על ידי לוגיקת המנתח על סמך תווית השדה, לדוגמה: – cs1Label ממפה אל "Cap Support" – cs2Label ממפה אל "Javascript Support" – cs3Label ממפה אל "CO Support" – cs4Label ממפה אל "VID" – cs5Label ממפה אל "clappsig" – cs6Label ממפה אל "clapp" – cs7Label ממפה אל "latitude" – cs8Label ממפה אל "longitude" – cs9Label ממפה אל "Rule name" |
|
| read_only_udm.metadata.event_timestamp.nanos | ממופה ישירות מהשדה collection_time.nanos. |
|
| read_only_udm.metadata.event_timestamp.seconds | ממופה ישירות מהשדה collection_time.seconds. |
|
| read_only_udm.metadata.event_type | הערך נקבע על סמך הנוכחות של השדות src ו-sip: – אם שניהם קיימים, הערך מוגדר כ-"NETWORK_HTTP". – אם רק src קיים, הערך מוגדר כ-"USER_UNCATEGORIZED". – אחרת, הערך הוא GENERIC_EVENT. |
|
| read_only_udm.metadata.product_event_type | הערך נגזר על ידי שרשור של "[", הערך המספרי משדה הכותרת של CEF באינדקס 4, "] - ", ותיאור הטקסט משדה הכותרת של CEF באינדקס 4. | |
| read_only_udm.metadata.product_name | הערך מוגדר באופן סטטי כ-SIEMintegration. | |
| read_only_udm.metadata.product_version | הערך מוגדר באופן סטטי כ-"1". | |
| read_only_udm.metadata.vendor_name | הערך מוגדר באופן סטטי כ-Incapsula. | |
| read_only_udm.security_result.detection_fields.key | הערך מוגדר באופן סטטי בתור "siteid", "event_start_time", "event_end_time" או "qstr" בהתאם לשדה המתאים שעובר עיבוד. | |
| read_only_udm.security_result.severity | הערך מוגדר באופן סטטי כ-"LOW". | |
| read_only_udm.target.port | ממופה ישירות מהשדה spt אחרי המרה למספר שלם. |
|
qstr |
security_results.detection_fields |
מופה מיומן השינויים |
siteid |
security_results.detection_fields |
מופה מיומן השינויים |
device_facility |
principal.location.city |
מופה מיומן השינויים |
start |
security_result.detection_fields.event_start_time |
מופה מיומן השינויים |
cs8Label |
additional_cs8.key |
מופה מיומן השינויים |
cs8 |
additional_cs8.value.string_value |
מופה מיומן השינויים |
cs9Label |
additional_cs9.key |
מופה מיומן השינויים |
cs9 |
additional_cs9.value.string_value |
מופה מיומן השינויים |
end |
security_result.detection_fields.event_end_time |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.