איסוף יומנים של F5 Shape

גרסת מנתח הנתונים: 1.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של F5 Shape ב-Google Security Operations באמצעות Google Cloud Storage V2.

הפתרון F5 Distributed Cloud Bot Defense (לשעבר Shape Security) מגן על אפליקציות מפני מתקפות אוטומטיות על ידי זיהוי בוטים זדוניים וצמצום הפעילות שלהם. התכונה Bot Defense משתמשת ב-JavaScript וב-SDK מקורי לנייד כדי לאסוף נתוני טלמטריה מדפדפני לקוח וממכשירים ניידים, ובודקת את נתוני הטלמטריה האלה לפני שהבקשות מגיעות לאפליקציה שלכם. השירות מספק לוחות בקרה ודוחות משולבים שמאפשרים לראות מידע מפורט על התנועה שנותחה, כולל אירועי אבטחה, יומני גישה ויומני ביקורת.

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

חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:

  • מופע של Google SecOps
  • פרויקט ב-GCP עם Cloud Storage API מופעל
  • הרשאות ליצירה ולניהול של קטגוריות GCS
  • הרשאות לניהול מדיניות IAM בקטגוריות GCS
  • גישה עם הרשאות למסוף F5 Distributed Cloud
  • חשבון F5 Distributed Cloud עם גישה לשירות Multi-Cloud Network Connect או לשירות Shared Configuration

יצירת קטגוריה של Google Cloud Storage

  1. נכנסים אל מסוף Google Cloud.
  2. בוחרים פרויקט או יוצרים פרויקט חדש.
  3. בתפריט הניווט, עוברים אל Cloud Storage > Buckets.
  4. לוחצים על Create bucket.
  5. מזינים את פרטי ההגדרה הבאים:

    הגדרה ערך
    Name your bucket (שם הקטגוריה) מזינים שם ייחודי בעולם (לדוגמה, f5-xc-logs).
    סוג מיקום בוחרים לפי הצרכים שלכם (אזור, שני אזורים, כמה אזורים).
    Location בוחרים את המיקום (לדוגמה, us-central1).
    סוג אחסון (storage class) רגיל (מומלץ ליומנים שניגשים אליהם לעיתים קרובות).
    בקרת גישה אחיד (מומלץ).
    כלים להגנה אופציונלי: הפעלת ניהול גרסאות של אובייקטים או מדיניות שמירת נתונים.
  6. לוחצים על יצירה.

יצירת פרטי כניסה ל-F5 Shape API

ב-F5 Distributed Cloud, המערכת משתמשת באימות באמצעות אישורים של API ‏ (mTLS) או אסימונים של API. מומלץ להשתמש באישור API כדי לשפר את האבטחה.

יצירת אישור API

  1. נכנסים ל-F5 Distributed Cloud Console.
  2. בדף הבית של המסוף, בוחרים באפשרות ניהול.
  3. בתפריט הניווט הימני, עוברים אל ניהול אישי > פרטי כניסה.
  4. לוחצים על הוספת פרטי כניסה.
  5. בקטע Metadata, מזינים Name לאישור (לדוגמה, secops-integration).
  6. מהרשימה סוג פרטי הכניסה בוחרים באפשרות אישור API.
  7. מזינים סיסמה ומאשרים אותה בשדה אישור סיסמה.
  8. בוחרים תאריך תפוגה מהרשימה של היומן.

  9. לוחצים על הורדה כדי ליצור ולהוריד את האישור בפורמט קובץ .p12.

  10. שומרים את קובץ האישור שהורד ואת הסיסמה בצורה מאובטחת לשימוש מאוחר יותר.

יצירת פרטי כניסה ל-GCP Cloud ב-F5 Distributed Cloud

כדי לכתוב יומנים לקטגוריית GCS, צריך פרטי כניסה של חשבון שירות ב-F5 Distributed Cloud. Google Cloud

יצירה Google Cloud של חשבון שירות

  1. במסוף GCP, נכנסים אל IAM & Admin > Service Accounts.
  2. לוחצים על יצירת חשבון שירות.
  3. מזינים את פרטי ההגדרה הבאים:
    • שם חשבון השירות: מזינים f5-xc-log-writer (או שם אחר לבחירתכם).
    • תיאור חשבון השירות: מזינים Service account for F5 Distributed Cloud to write logs to GCS.
  4. לוחצים על יצירה והמשך.
  5. בקטע Grant this service account access to project (הענקת גישה של חשבון השירות הזה לפרויקט):
    1. לוחצים על בחירת תפקיד.
    2. מחפשים את Storage Object Admin ובוחרים בו.
  6. לוחצים על Continue.
  7. לוחצים על סיום.

מתן הרשאות IAM בקטגוריית GCS

  1. נכנסים אל Cloud Storage > Buckets (קטגוריות).
  2. לוחצים על שם הקטגוריה (לדוגמה, f5-xc-logs).
  3. עוברים לכרטיסייה Permissions.
  4. לוחצים על הענקת גישה.
  5. מזינים את פרטי ההגדרה הבאים:
    • Add principals (הוספת ישויות מורשות): מזינים את כתובת האימייל בחשבון השירות (לדוגמה, f5-xc-log-writer@PROJECT_ID.iam.gserviceaccount.com).
    • הקצאת תפקידים: בוחרים באפשרות אדמין של אובייקטים באחסון.
  6. לוחצים על Save.

יצירת מפתח לחשבון שירות

  1. במסוף GCP, נכנסים אל IAM & Admin > Service Accounts.
  2. מחפשים את חשבון השירות (לדוגמה, f5-xc-log-writer) ולוחצים עליו.
  3. עוברים לכרטיסייה Keys.
  4. לוחצים על Add Key > Create new key.
  5. בוחרים באפשרות JSON בתור סוג המפתח.
  6. לוחצים על יצירה.
  7. קובץ ה-JSON עם המפתח יורד באופן אוטומטי. שומרים את הקובץ באופן מאובטח.

הוספת פרטי כניסה ל-Cloud אל F5 Distributed Cloud Google Cloud

  1. במסוף F5 Distributed Cloud, בדף הבית, בוחרים באפשרות Multi-Cloud Network Connect (חיבור רשתות מרובות עננים) או Shared Configuration (הגדרה משותפת).
  2. בתפריט הניווט הימני, עוברים אל ניהול > ניהול אתרים > פרטי כניסה לענן.
  3. לוחצים על הוספת פרטי כניסה ל-Cloud.
  4. בקטע Metadata, מזינים Name (לדוגמה, gcp-secops-logs).
  5. מהרשימה Cloud Credentials Type (סוג פרטי הכניסה לענן), בוחרים באפשרות GCP Credentials (פרטי כניסה ל-GCP).
  6. בקטע GCP Credentials (פרטי הכניסה ל-GCP), לוחצים על Configure (הגדרה).
  7. בקטע Service Account Key (מפתח של חשבון שירות):
    1. ברשימה סוג הסוד, בוחרים באפשרות סוד עם כיסוי עיניים.
    2. ברשימה פעולה, בוחרים באפשרות Blindfold New Secret.
    3. ברשימה סוג המדיניות בוחרים באפשרות מוכללת.
    4. בשדה Secret to Blindfold, מדביקים את כל התוכן של קובץ מפתח ה-JSON שהורדתם.
  8. לוחצים על אישור.
  9. לוחצים על שמירה ויציאה.

הגדרת מקלט גלובלי של יומנים ב-GCS

הכלי F5 Distributed Cloud Global Log Receiver מעביר יומנים ל-GCS כל 5 דקות בפורמט NDJSON (‏JSON שמופרד בתו שורה חדשה).

יצירת מקלט יומנים גלובלי

  1. במסוף F5 Distributed Cloud, בדף הבית, בוחרים באפשרות Multi-Cloud Network Connect (חיבור רשתות מרובות עננים) או Shared Configuration (הגדרה משותפת).
    • ב-Multi-Cloud Network Connect: עוברים אל Manage > Log Management > Global Log Receiver.
    • בקטע Shared Configuration (הגדרה משותפת): עוברים אל Manage > Global Log Receiver (ניהול > מקלט יומנים גלובלי).
  2. לוחצים על הוספת מקלט גלובלי של יומנים.
  3. בקטע Metadata, מזינים Name (לדוגמה, secops-gcs-receiver).
  4. אפשר גם להוסיף תוויות ותיאור.
  5. ברשימה Log Type (סוג היומן), בוחרים את סוגי היומנים שרוצים לאסוף:

    • יומני בקשות: יומני גישה ל-HTTP ממאזני עומסים
    • אירועי אבטחה: אירועי אבטחה של Bot Defense ו-WAF
    • יומני ביקורת: יומני ביקורת של הגדרות ושל אדמינים
    • יומני בקשות DNS: יומנים של שאילתות DNS
  6. ברשימה Log Message Selection (בחירת הודעות ביומן):

    • אם משתמשים בשירות Multi-Cloud Network Connect, בוחרים באפשרות Select logs from current namespace (מרחב שמות של המערכת).
    • אם משתמשים בשירות Shared Configuration, בוחרים באחת מהאפשרויות הבאות:
      • בחירת יומנים ממרחב השמות הנוכחי: שליחת יומנים רק ממרחב השמות המשותף.
      • בחירת יומנים מכל מרחבי השמות: שליחת יומנים מכל מרחבי השמות.
      • בחירת יומנים במרחבי שמות ספציפיים: מזינים שמות ספציפיים של מרחבי שמות ולוחצים על הוספת פריט כדי להוסיף עוד.
  7. ברשימה Receiver Configuration (הגדרת מקלט), בוחרים באפשרות GCP Bucket (מאגר GCP).

  8. בקטע GCP Bucket (מאגר GCP), מציינים את ההגדרות הבאות:

    • GCP Bucket Name (שם קטגוריית GCS): מזינים את שם קטגוריית GCS (לדוגמה, f5-xc-logs).
    • פרטי כניסה ל-GCP Cloud: בוחרים מהרשימה את פרטי הכניסה לענן שיצרתם (לדוגמה, gcp-secops-logs).

הגדרת הגדרות מתקדמות (אופציונלי)

  1. לוחצים על המתג הצגת שדות מתקדמים.
  2. בקטע Batch Options (אפשרויות להוספה בכמות גדולה), מגדירים את האפשרויות הבאות (אופציונלי):

    • אפשרויות של זמן קצוב לתפוגה של אצווה: בוחרים באפשרות זמן קצוב לתפוגה בשניות ומזינים ערך (ברירת המחדל היא 300 שניות).
    • Batch Max Events (מספר האירועים המקסימלי בחבילה): בוחרים באפשרות Max Events (מספר האירועים המקסימלי) ומזינים ערך בין 32 ל-2,000 (אופציונלי).
    • Batch Bytes (בייטים של קבוצת פריטים): בוחרים באפשרות Max Bytes (בייטים מקסימליים) ומזינים ערך בין 4,096 ל-1,048,576 (ברירת מחדל: 10485760 בייטים / 10MB).

השלמת ההגדרה ובדיקה שלה

  1. לוחצים על שמירה ויציאה כדי ליצור את הכלי Global Log Receiver.
  2. ברשימה Global Log Receiver, מחפשים את הרסיבר (לדוגמה, secops-gcs-receiver).
  3. בעמודה פעולות, לוחצים על סמל שלוש הנקודות ... ובוחרים באפשרות בדיקת החיבור.
  4. מחכים שהבדיקה תסתיים. אם החיבור פועל, תוצג הודעה על כך.

  5. מוודאים שהיומנים נכתבים ל-GCS:

    1. נכנסים אל Cloud Storage > Buckets במסוף GCP.
    2. לוחצים על שם הקטגוריה (לדוגמה, f5-xc-logs).
    3. תוך 5-10 דקות, אמורות להיווצר תיקיות עם המבנה הבא:
      • תיקייה יומית: YYYY-MM-DD/
      • תיקיית משנה לפי שעה: YYYY-MM-DD/HH/
      • קובצי יומן: YYYY-MM-DD/HH/logs_YYYYMMDDHHMMSS.ndjson.gz

הגדרה של רשימת היתרים בחומת האש

כדי להעביר יומנים ל-F5 Distributed Cloud, צריך לאפשר טווחי כתובות IP ספציפיים בחומת האש.

מוסיפים את טווחי כתובות ה-IP הבאים לרשימת ההיתרים של חומת האש:

  • 193.16.236.64/29
  • 185.160.8.152/29

אחזור חשבון השירות של Google SecOps

‫Google SecOps משתמש בחשבון שירות ייחודי כדי לקרוא נתונים ממאגר GCS שלכם. צריך להעניק לחשבון השירות הזה גישה לדלי.

קבלת כתובת האימייל בחשבון השירות

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת פיד חדש.
  3. לוחצים על הגדרת פיד יחיד.
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, F5 Distributed Cloud Bot Defense).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות F5_SHAPE בתור סוג היומן.
  7. לוחצים על Get Service Account (קבלת חשבון שירות). תוצג כתובת האימייל בחשבון שירות ייחודי, לדוגמה:

    secops-12345678@secops-gcp-prod.iam.gserviceaccount.com
    
  8. מעתיקים את כתובת האימייל לשימוש בשלב הבא.

  9. לוחצים על הבא.

  10. מציינים ערכים לפרמטרים הבאים של הקלט:

    • כתובת ה-URL של קטגוריית האחסון: מזינים את ה-URI של קטגוריית GCS עם נתיב הקידומת:

      gs://f5-xc-logs/
      
      • מחליפים את f5-xc-logs בשם הקטגוריה שלכם ב-GCS.
      • אם הגדרתם קידומת ספציפית במקלט הגלובלי של היומן, צריך לכלול אותה בנתיב (לדוגמה, gs://f5-xc-logs/bot-defense/).
    • אפשרות למחיקת המקור: בוחרים את אפשרות המחיקה לפי ההעדפה שלכם:

      • אף פעם: לא נמחקים קבצים אחרי ההעברה (מומלץ לבדיקות).
      • מחיקת קבצים שהועברו: הקבצים נמחקים אחרי שההעברה מסתיימת בהצלחה.
      • מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת בהצלחה.

    • הגיל המקסימלי של הקובץ: כולל קבצים ששונו במספר הימים האחרון (ברירת המחדל היא 180 ימים).

    • מרחב השמות של הנכס: מרחב השמות של הנכס.

    • תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה.

  11. לוחצים על הבא.

  12. בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.

הענקת הרשאות IAM לחשבון השירות של Google SecOps

לחשבון השירות של Google SecOps צריך להיות התפקיד צפייה באובייקט אחסון בקטגוריית GCS.

  1. נכנסים אל Cloud Storage > Buckets (קטגוריות).
  2. לוחצים על שם הקטגוריה (לדוגמה, f5-xc-logs).
  3. עוברים לכרטיסייה Permissions.
  4. לוחצים על הענקת גישה.
  5. מזינים את פרטי ההגדרה הבאים:
    • Add principals (הוספת חשבונות משתמשים): מדביקים את כתובת האימייל של חשבון השירות של Google SecOps
    • הקצאת תפקידים: בוחרים באפשרות צפייה באובייקטים באחסון.
  6. לוחצים על Save.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM לוגיקה
msg.requestHeaders.Proxy-Client-IP, msg.requestHeaders.WF-Forwarded-For, msg.requestHeaders.X-Forwarded-For, msg.requestHeaders.wl-proxy-client-ip, msg.hashedUserAgent, msg.transactionId, msg.hashedUsername, msg.dcgShapeFailedOn, ShapeShifterId, eventType, eventId, latRequest, latResponse, latTotal, latRspWait, count, latEccWait additional.fields מיזוג של תוויות שנוצרו משדות שונים
מתווך מתווך הערך מועתק ישירות אם הוא לא ריק
description metadata.description הערך הועתק ישירות
target, has_principal_machine metadata.event_type הערך הוא NETWORK_HTTP אם היעד שונה מ-"", אחרת הערך הוא STATUS_UPDATE אם has_principal_machine == true, אחרת הערך הוא GENERIC_EVENT
אפליקציה network.application_protocol הערך הומר לאותיות רישיות
requestMethod, msg.method network.http.method הערך מ-requestMethod אם הוא לא ריק, אחרת msg.method
requestClientApplication, msg.requestHeaders.User-Agent network.http.parsed_user_agent הערך מ-requestClientApplication אם הוא לא ריק, אחרת msg.requestHeaders.User-Agent, שהומר לסוכן משתמש מנותח
requestContext, msg.requestHeaders.Referer network.http.referral_url הערך מ-requestContext אם הוא לא ריק, אחרת msg.requestHeaders.Referer
msg.sseResponseCode, prCode network.http.response_code הערך מ-msg.sseResponseCode אם הוא לא ריק, אחרת prCode, מומר למספר שלם
requestClientApplication, msg.requestHeaders.User-Agent network.http.user_agent הערך מ-requestClientApplication אם הוא לא ריק, אחרת msg.requestHeaders.User-Agent
requestHeader.x-shape-src-virtual observer.ip הערך הועתק ישירות
משתמש (principal) משתמש (principal) הערך הועתק ישירות
msg.host principal.asset.hostname הערך הועתק ישירות
src, msg.src, msg.trueClientIP, requestHeader.X-Forwarded-For principal.asset.ip הערך מ-src אם הוא לא ריק, אחרת msg.src, אחרת msg.trueClientIP, אחרת כתובת ה-IP הראשונה מ-X-Forwarded-For אם היא שונה מ-src
msg.host principal.hostname הערך הועתק ישירות
src, msg.src, msg.trueClientIP, requestHeader.X-Forwarded-For principal.ip הערך מ-src אם הוא לא ריק, אחרת msg.src, אחרת msg.trueClientIP, אחרת כתובת ה-IP הראשונה מ-X-Forwarded-For אם היא שונה מ-src
msg.requestHeaders principal.resource.attribute.labels מוזגו מצמדי מפתח/ערך ב-msg.requestHeaders
msg.uri principal.url הערך הועתק ישירות
security_result security_result הערך הועתק ישירות
deviceExternalId security_result.about.asset_id הערך הועתק ישירות
flowLabel, agentLabel, requestHeader.Content-Length, requestHeader.Content-Type, requestHeader.Accept, requestHeader.Accept-Encoding, browserType, accountInfo, requestHeader.Via, asn, tid, ctag, requestHeader.Cache-Control, transactionResult security_result.about.labels מיזוג של תוויות שנוצרו משדות שונים
act, msg.transactionResult security_result.action ‫Set to ALLOW if act matches PASS and isAttack, else UNKNOWN_ACTION; or ALLOW if msg.transactionResult == Success, BLOCK if Failure
act, msg.transactionResult security_result.action_details הערך מ-act אם הוא לא ריק, אחרת msg.transactionResult
severity security_result.severity הערך הוא HIGH אם הוא תואם ל-Error, ‏ error, ‏ warning;‏ CRITICAL אם הוא תואם ל-critical;‏ MEDIUM אם הוא תואם ל-notice;‏ LOW אם הוא תואם ל-information, ‏ info, ‏ INFO
severity security_result.severity_details הערך הועתק ישירות
attackCause security_result.threat_name הערך הועתק ישירות
יעד יעד הערך הועתק ישירות
appName target.application הערך הועתק ישירות
dst, msg.dst target.asset.ip הערך מ-dst אם הוא לא ריק, אחרת msg.dst
dhost target.hostname הערך הועתק ישירות
dst, msg.dst target.ip הערך מ-dst אם הוא לא ריק, אחרת msg.dst
countryName target.location.country_or_region הערך הועתק ישירות
dpt target.port הומר למספר שלם
msg.responseHeaders target.resource.attribute.labels מוזגו מצמדי מפתח/ערך ב-msg.responseHeaders
בקשה target.url הערך הועתק ישירות
requestHeader.X-Forwarded-For intermediary.ip הגדרה לכתובות IP עוקבות ממערך X-Forwarded-For
metadata.product_name הגדרה כ'צורה'
metadata.vendor_name הגדרה כ-F5
requestHeaders_id_array.User-Agent network.http.user_agent מופה מיומן השינויים
requestHeaders_id_array.Referer network.http.referral_url מופה מיומן השינויים
requestHeaders_id_array.Proxy-Client-IP", "requestHeaders_id_array.WF-Forwarded-For", "requestHeaders_id_array.X-Forwarded-For", and "requestHeaders_id_array.wl-proxy-client-ip additional.fields מופה מיומן השינויים

שנה רישום

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

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