איסוף יומנים של 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
- נכנסים אל לוח הבקרה של Cloudflare.
- בוחרים את החשבון והדומיין.
- עוברים אל אבטחה > Page Shield.
- לוחצים על הפעלת Page Shield.
יצירת קטגוריה ב-Amazon S3
- פותחים את מסוף Amazon S3.
- לוחצים על Create Bucket.
- מספקים את פרטי ההגדרה הבאים:
- שם הקטגוריה: מזינים שם בעל משמעות לקטגוריה (לדוגמה,
cloudflare-pageshield-logs). - אזור: בוחרים את האזור המועדף ב-AWS (לדוגמה,
us-east-1).
- שם הקטגוריה: מזינים שם בעל משמעות לקטגוריה (לדוגמה,
- לוחצים על יצירה.
- שומרים את שם הקטגוריה והאזור לעיון בעתיד.
יצירת משתמש IAM עם גישה ל-S3
- פותחים את מסוף IAM.
- לוחצים על משתמשים > הוספת משתמש.
- מזינים שם משתמש (לדוגמה,
chronicle-s3-user). - בוחרים באפשרות גישה פרוגרמטית.
- לוחצים על הבא: הרשאות.
- בוחרים באפשרות צירוף מדיניות קיימת ישירות.
- מחפשים את המדיניות AmazonS3FullAccess ובוחרים בה.
- לוחצים על הבא: תגים.
- לוחצים על הבא: בדיקה.
- לוחצים על יצירת משתמש.
- לוחצים על הורדת קובץ CSV כדי לשמור את מזהה מפתח הגישה ואת מפתח הגישה הסודי.
הגדרת מדיניות של קטגוריית S3 ל-Cloudflare
- במסוף Amazon S3, בוחרים את הקטגוריה.
- לוחצים על הרשאות > מדיניות של מאגר.
- לוחצים על Edit.
מדביקים את המדיניות הבאה ומחליפים את
<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"] } } ] }לוחצים על שמירת השינויים.
יצירת משימת Cloudflare Logpush
- נכנסים אל לוח הבקרה של Cloudflare.
- בוחרים את החשבון והדומיין.
- עוברים אל Analytics & Logs > Logs.
- לוחצים על Create a Logpush job (יצירת משימת Logpush).
- בקטע Select a destination (בחירת יעד), בוחרים באפשרות Amazon S3.
- מזינים את פרטי היעד הבאים:
- שם הקטגוריה: מזינים את שם הקטגוריה ב-S3 (לדוגמה,
cloudflare-pageshield-logs). - אזור בקט: בוחרים את האזור שתואם לבקט S3.
- נתיב לקטגוריה (אופציונלי): מזינים קידומת לנתיב (לדוגמה,
pageshield/).
- שם הקטגוריה: מזינים את שם הקטגוריה ב-S3 (לדוגמה,
- לוחצים על Continue.
- כדי להוכיח בעלות, Cloudflare ישלח קובץ ליעד שציינתם. כדי למצוא את הטוקן, לוחצים על הלחצן Open (פתיחה) בכרטיסייה Overview (סקירה כללית) של קובץ אתגר הבעלות, ואז מדביקים אותו בלוח הבקרה של Cloudflare כדי לאמת את הגישה לקטגוריה. מזינים את טוקן הבעלות ולוחצים על 'המשך'.
- בקטע בחירת מערך נתונים, בוחרים באפשרות אירועים של Page Shield.
- לוחצים על הבא.
- מגדירים את משימת הדחיפה של היומן:
- שם המשימה: מזינים שם תיאורי (לדוגמה,
pageshield-to-s3). - אם היומנים תואמים: משאירים ריק כדי לכלול את כל האירועים או מגדירים מסננים לפי הצורך.
- שליחת השדות הבאים: בוחרים באפשרות כל השדות או בוחרים שדות ספציפיים.
- שם המשימה: מזינים שם תיאורי (לדוגמה,
- לוחצים על שליחה.
הגדרה של פיד ב-Google SecOps להטמעה של יומנים מ-Page Shield
- עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
- לוחצים על הוספת פיד חדש.
- בדף הבא, לוחצים על הגדרת פיד יחיד.
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה,
Cloudflare Page Shield S3). - בוחרים באפשרות Amazon S3 V2 בתור סוג המקור.
- בוחרים באפשרות Cloudflare Page Shield בתור סוג היומן.
- לוחצים על הבא.
מציינים ערכים לפרמטרים הבאים של הקלט:
S3 URI: מזינים את ה-URI של הקטגוריה בפורמט:
s3://<BUCKET_NAME>/<BUCKET_PATH>/אפשרות למחיקת המקור: בוחרים את אפשרות המחיקה לפי ההעדפה שלכם:
- אף פעם: הקבצים לא נמחקים אחרי ההעברה.
- מחיקת קבצים שהועברו: הקבצים נמחקים אחרי שההעברה מסתיימת.
- מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת בהצלחה.
הגיל המקסימלי של הקובץ: כולל קבצים שעברו שינוי במספר הימים האחרון. ברירת המחדל היא 180 ימים.
מזהה מפתח הגישה: מפתח הגישה של המשתמש עם גישה לקטגוריית S3.
מפתח גישה סודי: מפתח סודי של משתמש עם גישה לקטגוריית S3.
מרחב השמות של הנכס: מרחב השמות של הנכס.
תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה.
לוחצים על הבא.
בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.
טבלת מיפוי 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.