איסוף יומנים של 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. נכנסים למסוףGoogle Cloud ובוחרים את הפרויקט ב- Google Cloud שמקושר למכונה של Google SecOps.
  2. נכנסים לדף IAM & Admin > Service Accounts.
  3. לוחצים על Create service account.
  4. מספקים את פרטי ההגדרה הבאים:
    • שם חשבון השירות: מזינים שם לחשבון (לדוגמה, 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 Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
  3. מורידים את קובץ האימות להטמעת נתונים.
  4. שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן הסוכן של Bindplane.

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

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings (הגדרות SIEM) > 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
    

התקנה ב-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
    

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

לאפשרויות התקנה נוספות, קראו את מדריך ההתקנה של סוכן Bindplane.

הגדרה של סוכן Bindplane להטמעה של Syslog ושליחה אל Google SecOps

  1. ניגשים לקובץ התצורה:

    • מאתרים את הקובץ config.yaml. בדרך כלל, הוא נמצא בספרייה /opt/observiq-otel-collector/ ב-Linux או בספריית ההתקנה ב-Windows.
    • פותחים את הקובץ באמצעות כלי לעריכת טקסט (לדוגמה, nano,‏ vi או פנקס הרשימות).
  2. עורכים את הקובץ 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 כדי להחיל את השינויים.

  1. כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:

    sudo systemctl restart observiq-otel-collector
    
  2. כדי להפעיל מחדש את הסוכן של Bindplane ב-Windows, אפשר להשתמש במסוף Services או להזין את הפקודה הבאה:

    net stop observiq-otel-collector && net start observiq-otel-collector
    

הגדרת העברת Syslog ב-Imperva FlexProtect

לרכיב SecureSphere (בענן או מקומי)

  1. נכנסים ל-Imperva SecureSphere Management Console.
  2. עוברים אל Configuration (הגדרה) > Action Sets (קבוצות פעולות).
  3. כדי ליצור קבוצת פעולות חדשה, לוחצים על הוספה.
  4. לוחצים על הוספת פעולה ומזינים את פרטי ההגדרה הבאים:

    • שם: מזינים שם תיאורי (לדוגמה, Google SecOps Syslog).
    • ‫Action Type (סוג הפעולה): בוחרים באפשרות Syslog.
    • ‫Host: מזינים את כתובת ה-IP של הסוכן של Bindplane.
    • יציאה: מזינים את מספר היציאה של סוכן Bindplane (ברירת המחדל היא 514).
    • פרוטוקול: בוחרים באפשרות UDP או TCP.
    • רמת היומן של Syslog: בוחרים באפשרות DEBUG.
    • ‫Syslog Facility: בוחרים באפשרות LOCAL0.
    • פורמט: בוחרים באפשרות CEF (פורמט אירועים נפוץ).
  5. שומרים את הגדרות הפעולה ומחילים אותן על מדיניות האבטחה הרלוונטית.

לרכיב Cloud WAF/Incapsula

  1. נכנסים למסוף Imperva Cloud.
  2. עוברים אל Logs (יומנים) > Log Setup (הגדרת יומנים).
  3. הגדרת יעד ל-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.