איסוף יומנים של Cloudflare Page Shield

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

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של Cloudflare Page Shield ב-Google Security Operations באמצעות Amazon S3.

‫Page Shield עוזר לנהל משאבים שנטענים על ידי מבקרים באתר, כולל סקריפטים, החיבורים שלהם וקובצי Cookie, ומפעיל התראות כשמשאבים משתנים או נחשבים זדוניים.

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

  • מופע של Google SecOps
  • חשבון Cloudflare עם Page Shield מופעל
  • גישה עם הרשאות למרכז הבקרה של Cloudflare
  • גישת אדמין ל-AWS‏ (S3, ‏ IAM)

באפשרות הזו נעשה שימוש ב-Cloudflare Logpush כדי לייצא אירועים של Page Shield אל Amazon S3, ולאחר מכן Google SecOps מבצעת הטמעה.

הפעלת Page Shield

  1. נכנסים אל לוח הבקרה של Cloudflare.
  2. בוחרים את החשבון והדומיין.
  3. עוברים אל אבטחה > Page Shield.
  4. לוחצים על הפעלת Page Shield.

יצירת קטגוריה ב-Amazon S3

  1. פותחים את מסוף Amazon S3.
  2. לוחצים על Create Bucket.
  3. מספקים את פרטי ההגדרה הבאים:
    • שם הקטגוריה: מזינים שם בעל משמעות לקטגוריה (לדוגמה, cloudflare-pageshield-logs).
    • אזור: בוחרים את האזור המועדף ב-AWS (לדוגמה, us-east-1).
  4. לוחצים על יצירה.
  5. שומרים את שם הקטגוריה והאזור לעיון בעתיד.

יצירת משתמש IAM עם גישה ל-S3

  1. פותחים את מסוף IAM.
  2. לוחצים על משתמשים > הוספת משתמש.
  3. מזינים שם משתמש (לדוגמה, chronicle-s3-user).
  4. בוחרים באפשרות גישה פרוגרמטית.
  5. לוחצים על הבא: הרשאות.
  6. בוחרים באפשרות צירוף מדיניות קיימת ישירות.
  7. מחפשים את המדיניות AmazonS3FullAccess ובוחרים בה.
  8. לוחצים על הבא: תגים.
  9. לוחצים על הבא: בדיקה.
  10. לוחצים על יצירת משתמש.
  11. לוחצים על הורדת קובץ CSV כדי לשמור את מזהה מפתח הגישה ואת מפתח הגישה הסודי.

הגדרת מדיניות של קטגוריית S3 ל-Cloudflare

  1. במסוף Amazon S3, בוחרים את הקטגוריה.
  2. לוחצים על הרשאות > מדיניות של מאגר.
  3. לוחצים על Edit.
  4. מדביקים את המדיניות הבאה ומחליפים את <BUCKET_NAME> בשם הקטגוריה:

    {
      "Id": "Policy1506627184792",
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Stmt1506627150918",
          "Action": ["s3:PutObject"],
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::<BUCKET_NAME>/*",
          "Principal": {
            "AWS": ["arn:aws:iam::391854517948:user/cloudflare-logpush"]
          }
        }
      ]
    }
    
  5. לוחצים על שמירת השינויים.

יצירת משימת Cloudflare Logpush

  1. נכנסים אל לוח הבקרה של Cloudflare.
  2. בוחרים את החשבון והדומיין.
  3. עוברים אל Analytics & Logs > Logs.
  4. לוחצים על Create a Logpush job (יצירת משימת Logpush).
  5. בקטע Select a destination (בחירת יעד), בוחרים באפשרות Amazon S3.
  6. מזינים את פרטי היעד הבאים:
    • שם הקטגוריה: מזינים את שם הקטגוריה ב-S3 (לדוגמה, cloudflare-pageshield-logs).
    • אזור בקט: בוחרים את האזור שתואם לבקט S3.
    • נתיב לקטגוריה (אופציונלי): מזינים קידומת לנתיב (לדוגמה, pageshield/).
  7. לוחצים על Continue.
  8. כדי להוכיח בעלות, Cloudflare ישלח קובץ ליעד שציינתם. כדי למצוא את הטוקן, לוחצים על הלחצן Open (פתיחה) בכרטיסייה Overview (סקירה כללית) של קובץ אתגר הבעלות, ואז מדביקים אותו בלוח הבקרה של Cloudflare כדי לאמת את הגישה לקטגוריה. מזינים את טוקן הבעלות ולוחצים על 'המשך'.
  9. בקטע בחירת מערך נתונים, בוחרים באפשרות אירועים של Page Shield.
  10. לוחצים על הבא.
  11. מגדירים את משימת הדחיפה של היומן:
    • שם המשימה: מזינים שם תיאורי (לדוגמה, pageshield-to-s3).
    • אם היומנים תואמים: משאירים ריק כדי לכלול את כל האירועים או מגדירים מסננים לפי הצורך.
    • שליחת השדות הבאים: בוחרים באפשרות כל השדות או בוחרים שדות ספציפיים.
  12. לוחצים על שליחה.

הגדרה של פיד ב-Google SecOps להטמעה של יומנים מ-Page Shield

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת פיד חדש.
  3. בדף הבא, לוחצים על הגדרת פיד יחיד.
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, Cloudflare Page Shield S3).
  5. בוחרים באפשרות Amazon S3 V2 בתור סוג המקור.
  6. בוחרים באפשרות Cloudflare Page Shield בתור סוג היומן.
  7. לוחצים על הבא.
  8. מציינים ערכים לפרמטרים הבאים של הקלט:

    • ‫S3 URI: מזינים את ה-URI של הקטגוריה בפורמט: s3://<BUCKET_NAME>/<BUCKET_PATH>/

    • אפשרות למחיקת המקור: בוחרים את אפשרות המחיקה לפי ההעדפה שלכם:

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

    • מזהה מפתח הגישה: מפתח הגישה של המשתמש עם גישה לקטגוריית S3.

    • מפתח גישה סודי: מפתח סודי של משתמש עם גישה לקטגוריית S3.

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

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

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

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

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
URLContainsCDNCGIPath event.idm.read_only_udm.additional.fields.CGI_label הערך נלקח מ-URLContainsCDNCGIPath, מוגדר כ-string_value בתווית עם המפתח CGI
פעולה event.idm.read_only_udm.additional.fields.action_label הערך נלקח מהפעולה, מוגדר כ-string_value בתווית עם המפתח 'פעולה'
resource.first_page_url event.idm.read_only_udm.additional.fields.first_page_label הערך נלקח מהמשתנה resource.first_page_url, ומוגדר כ-string_value בתווית עם המפתח first_page_url
resource.last_page_url event.idm.read_only_udm.additional.fields.last_page_label הערך נלקח מהמשתנה resource.last_page_url, ומוגדר כ-string_value בתווית עם המפתח last_page_url
name event.idm.read_only_udm.additional.fields.name_label הערך נלקח מהשם, והוגדר כ-string_value בתווית עם המפתח 'name'
ts event.idm.read_only_udm.metadata.event_timestamp ההמרה בוצעה מ-ts (UNIX) לחותמת זמן
event.idm.read_only_udm.metadata.event_type הערך נגזר על סמך has_principal, ‏ has_target, ‏ has_target_user: ‏ NETWORK_CONNECTION אם יש גם principal וגם target;‏ USER_UNCATEGORIZED אם יש target_user;‏ STATUS_UPDATE אם יש principal; אחרת GENERIC_EVENT
resource.url event.idm.read_only_udm.network.http.referral_url הערך נלקח מ-resource.url
מארח event.idm.read_only_udm.principal.asset.hostname הערך נלקח מהמארח או מהמארח.שם המארח
מארח event.idm.read_only_udm.principal.hostname הערך נלקח מהמארח או מהמארח.שם המארח
alert_type event.idm.read_only_udm.principal.resource.attribute.labels.alert_type_label הערך נלקח מ-alert_type, מוגדר כערך בתווית עם המפתח alert_type
resource.cryptomining_score event.idm.read_only_udm.principal.resource.attribute.labels.crypto_label הערך נלקח מהמשאב resource.cryptomining_score, והוגדר כערך בתווית עם המפתח cryptominingscore%{index2}
resource.dataflow_score event.idm.read_only_udm.principal.resource.attribute.labels.dataflow_label הערך נלקח מ-resource.dataflow_score, מוגדר כערך בתווית עם המפתח dataflowscore%{index2}
policie.description event.idm.read_only_udm.principal.resource.attribute.labels.desc_label הערך נלקח מ-policie.description, והוגדר כערך בתווית עם המפתח description_%{index}
version.fetched_at event.idm.read_only_udm.principal.resource.attribute.labels.fetched_at_label הערך נלקח מהגרסה.fetched_at, והוגדר כערך בתווית עם המפתח 'fetchedat%{index2}‎'
version.hash event.idm.read_only_udm.principal.resource.attribute.labels.hash_label הערך נלקח מ-version.hash, מוגדר כערך בתווית עם המפתח hash_%{index2}
policie.id event.idm.read_only_udm.principal.resource.attribute.labels.id_label הערך נלקח מ-policie.id, והוגדר כערך בתווית עם המפתח policyid%{index}
data.options.remove_dashboard_links event.idm.read_only_udm.principal.resource.attribute.labels.remove_dash_label הערך נלקח מ-data.options.remove_dashboard_links ומוגדר כערך בתווית עם המפתח remove_dashboard_links
resource.resource_type event.idm.read_only_udm.principal.resource.attribute.labels.res_type_label הערך נלקח מ-resource.resource_type, והוגדר כערך בתווית עם המפתח resourcetype%{index2}
data.type event.idm.read_only_udm.principal.resource.attribute.labels.type_label הערך נלקח מ-data.type, ומוגדר כערך בתווית עם המפתח 'type'
data.zones event.idm.read_only_udm.principal.resource.attribute.labels.zones_label הערך נלקח מ-data.zones, ומוגדר כערך בתווית עם המפתח zones
resource.id event.idm.read_only_udm.principal.resource.id הערך נלקח מ-resource.id
PageURL event.idm.read_only_udm.principal.url הערך נלקח מ-PageURL
account_id event.idm.read_only_udm.principal.user.product_object_id הערך נלקח מ-account_id
policy_id event.idm.read_only_udm.security_result.detection_fields.policy_id_label הערך נלקח מ-policy_id, ומוגדר כערך בתווית עם המפתח policy_id
policy_name event.idm.read_only_udm.security_result.detection_fields.policy_name_label הערך נלקח מ-policy_name, מוגדר כערך בתווית עם המפתח policy_name
טקסט event.idm.read_only_udm.security_result.description ערך שנלקח מטקסט
resource.first_seen_at event.idm.read_only_udm.security_result.first_discovered_time הערך הומר מ-resource.first_seen_at לחותמת זמן בפורמט ISO8601
PolicyID event.idm.read_only_udm.security_result.rule_name הערך נלקח מ-PolicyID
data.severity event.idm.read_only_udm.security_result.severity הערך נגזר מ-data.severity: אם הערך הוא INFO‏ ← INFORMATIONAL, אם הערך הוא WARN‏ ← MEDIUM, אחרת הערך הוא UNKNOWN_SEVERITY
כתובת URL event.idm.read_only_udm.target.url הערך נלקח מכתובת ה-URL
URLHost event.idm.read_only_udm.target.user.email_addresses הערך נלקח מ-URLHost אם הוא תואם לתבנית האימייל

יומן שינויים

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

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