איסוף יומנים של AWS WAF

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

נתמך ב:

במאמר הזה מוסבר איך להגדיר פיד של Google Security Operations כדי לאסוף את היומנים של AWS Web Application Firewall ‏ (WAF). הכלי לניתוח נתונים הופך יומנים בפורמט JSON גולמי לפורמט מובנה שתואם ל-UDM של Google SecOps. הכלי מחלץ שדות כמו כתובות IP, כתובות URL, סוכני משתמשים ופרטים של כללי אבטחה, וממפה אותם לשדות UDM תואמים כדי להציג ולנתח אותם בצורה עקבית.

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

*ודאו שאתם עומדים בדרישות המוקדמות הבאות:

  • מופע של Google SecOps
  • גישה עם הרשאות מיוחדות ל-AWS

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

  1. יוצרים קטגוריה ב-Amazon S3 לפי המדריך למשתמש: יצירת קטגוריה
  2. שומרים את השם של המאגר ואת האזור לשימוש מאוחר יותר.
  3. יוצרים משתמש לפי מדריך המשתמש הזה: יצירת משתמש IAM.
  4. בוחרים את המשתמש שנוצר.
  5. לוחצים על הכרטיסייה פרטי כניסה לאבטחה.
  6. בקטע Access Keys, לוחצים על Create Access Key.
  7. בוחרים באפשרות שירות של צד שלישי בתור תרחיש השימוש.
  8. לוחצים על הבא.
  9. אופציונלי: מוסיפים תג תיאור.
  10. לוחצים על Create access key (יצירת מפתח גישה).
  11. לוחצים על Download CSV file כדי לשמור את Access Key ואת Secret Access Key לשימוש מאוחר יותר.
  12. לוחצים על סיום.
  13. לוחצים על הכרטיסייה הרשאות.
  14. בקטע Permissions policies, לוחצים על Add permissions.
  15. לוחצים על הוספת הרשאות.
  16. בוחרים באפשרות Attach policies directly.
  17. מחפשים את המדיניות AmazonS3FullAccess ובוחרים בה.
  18. לוחצים על הבא.
  19. לוחצים על הוספת הרשאות.

יצירת רשימת בקרת גישה (ACL) לאינטרנט ב-WAF

אם עדיין לא הגדרתם את AWS WAF, תצטרכו ליצור רשימה של בקרת גישה (ACL) לאינטרנט של WAF. אם כבר יש לכם הגדרות קיימות, אתם יכולים לדלג לפעולה הבאה.

  1. במסוף AWS, מחפשים את האפשרות AWS WAF & Shield ובוחרים בה.
  2. לוחצים על Create web ACL.
  3. מזינים את ההגדרות הבאות:
    • שם: נותנים שם ל-ACL (לדוגמה, my-waf-web-acl).
    • ‫Region: בוחרים את האזור שבו רוצים להחיל את ה-WAF.
    • ‫CloudWatch Metrics: מפעילים את איסוף המדדים כדי לעקוב אחרי הפעילות והכללים שהופעלו.
  4. אחרי שיוצרים את ה-ACL לאינטרנט, בוחרים אותו כדי להפעיל את הרישום ביומן.

איך מגדירים רישום ביומן ב-AWS WAF

  1. במסוף AWS WAF, עוברים לכרטיסייה Logging (רישום ביומן) של רשימת בקרת הגישה (ACL) לאתר.
  2. לוחצים על הפעלת הרישום ביומן.
  3. בוחרים באפשרות Amazon S3 כיעד ליומנים.
  4. בוחרים את S3 bucket שיצרתם קודם כדי לאחסן את היומנים.
  5. אופציונלי: מגדירים קידומת ליומן כדי לארגן את היומנים (לדוגמה, waf-logs/).
  6. לוחצים על Save.

אימות ההרשאות לקטגוריית S3

מוודאים שלקטגוריית S3 יש את ההרשאות המתאימות כדי ש-AWS WAF יוכל לכתוב יומנים.

  1. עוברים אל S3 Console.
  2. בוחרים את הקטגוריה שבה יישמרו היומנים.
  3. בכרטיסייה Permissions (הרשאות), מוסיפים את מדיניות הגישה הבאה לקטגוריית S3 כדי לאפשר ל-AWS WAF לכתוב יומנים:

    {
      "Version": "2012-10-17",
      "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
                "Service": "wafv2.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::your-log-bucket-name/*"
          }
      ]
    }
    
  1. לוחצים על Save.

הגדרת פידים

יש שתי נקודות כניסה שונות להגדרת פידים בפלטפורמת Google SecOps:

  • הגדרות SIEM > פידים > הוספת פיד חדש
  • מרכז התוכן > חבילות תוכן > להתחלה

איך מגדירים את הפיד של AWS WAF

  1. לוחצים על החבילה Amazon Cloud Platform.
  2. מאתרים את סוג היומן AWS WAF.
  3. מציינים את הערכים בשדות הבאים.

    • סוג המקור: Amazon SQS V2
    • ‫Queue Name (שם התור): השם של תור ה-SQS שממנו ייקראו הנתונים
    • ‫S3 URI: מזהה ה-URI של הקטגוריה.
      • s3://your-log-bucket-name/
        • מחליפים את your-log-bucket-name בשם בפועל של קטגוריית ה-S3.
    • אפשרויות למחיקת מקורות: בוחרים את אפשרות המחיקה בהתאם להעדפות ההטמעה.

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

    • ‫SQS Queue Access Key ID (מזהה מפתח גישה לתור SQS): מפתח גישה לחשבון שהוא מחרוזת אלפאנומרית באורך 20 תווים.

    • מפתח גישה סודי לתור SQS: מפתח גישה לחשבון שהוא מחרוזת אלפאנומרית באורך 40 תווים.

    אפשרויות מתקדמות

    • שם הפיד: ערך שמאכלס מראש את השדה ומזהה את הפיד.
    • מרחב שמות של נכס: מרחב השמות שמשויך לפיד.
    • תוויות הטמעה: תוויות שנוספות לכל האירועים מהפיד הזה.
  4. לוחצים על יצירת פיד.

למידע נוסף על הגדרת כמה פידים לסוגים שונים של יומנים בתוך משפחת המוצרים הזו, אפשר לעיין במאמר בנושא הגדרת פידים לפי מוצר.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
פעולה security_result.action אם הפעולה היא ALLOW, מגדירים את security_result.action כ-ALLOW ואת security_result.severity כ-INFORMATIONAL. אם הפעולה היא BLOCK, צריך להגדיר את security_result.action כ-BLOCK. אם הפעולה היא CAPTCHA ו-captchaResponse.responseCode הוא 405, צריך להגדיר את security_result.action כ-BLOCK ואת security_result.action_details כ-"CAPTCHA {captchaResponse.failureReason}".
captchaResponse.failureReason security_result.action_details המאפיין הזה משמש בשילוב עם action ועם captchaResponse.responseCode כדי לקבוע את security_result.action_details.
captchaResponse.responseCode security_result.action_details המאפיין הזה משמש בשילוב עם action ועם captchaResponse.failureReason כדי לקבוע את security_result.action_details.
httpRequest.clientIp principal.ip, principal.asset.ip ממופה ישירות ל-principal.ip ול-principal.asset.ip.
httpRequest.headers target.hostname, target.asset.hostname, network.http.user_agent, network.http.parsed_user_agent, network.http.referral_url, target.location.country_or_region, target.resource.attribute.labels, target.user.userid הפונקציה מבצעת איטרציה על כל כותרת ב-httpRequest.headers. אם שם הכותרת הוא host או Host, הערך ממופה ל-target.hostname ול-target.asset.hostname. אם שם הכותרת הוא User-Agent או user-agent, הערך ממופה אל network.http.user_agent ומנותח אל network.http.parsed_user_agent. אם שם הכותרת הוא Referer או referer, הערך ממופה אל network.http.referral_url. אם שם הכותרת הוא "(?i)time-zone", הערך ממופה אל target.location.country_or_region. אם שם הכותרת הוא authorization, הערך מפוענח, שם המשתמש מחולץ וממופה אל target.user.userid. כל הכותרות האחרות מתווספות כצמדי מפתח/ערך אל target.resource.attribute.labels.
httpRequest.httpMethod network.http.method ממופה ישירות ל-network.http.method.
httpRequest.requestId network.session_id ממופה ישירות ל-network.session_id.
httpRequest.uri target.url ממופה ישירות ל-target.url.
httpSourceId target.resource.name ממופה ישירות אל target.resource.name.
httpSourceName metadata.product_event_type ממופה ישירות אל metadata.product_event_type.
labels security_result.rule_labels עובר על כל תווית ברשימת התוויות. אם שם התווית לא ריק, היא מתווספת כצמד מפתח/ערך אל security_result.rule_labels.
nonTerminatingMatchingRules security_result.action_details, security_result.rule_labels הפונקציה חוזרת על כל כלל ב-nonTerminatingMatchingRules. אם הפעולה היא ALLOW ופעולת הכלל היא CAPTCHA, צריך להגדיר את security_result.action_details כ-"CAPTCHA SUCCESSFUL" ולהוסיף את מזהה הכלל ל-security_result.rule_labels עם המפתח "nonTerminatingCaptchaRuleName". אם הפעולה היא BLOCK או ALLOW ופעולת הכלל היא COUNT, מגדירים את security_result.action_details כ-"COUNT RULE" ומוסיפים את מזהה הכלל ל-security_result.rule_labels עם המפתח "nonTerminatingCountRuleName". אם הפעולה היא BLOCK או ALLOW ופעולת הכלל היא CHALLENGE, צריך להגדיר את security_result.action_details כ-COUNT RULE ולהוסיף את מזהה הכלל ל-security_result.rule_labels עם המפתח nonTerminatingChallengeRuleName.
rateBasedRuleList security_result.rule_id, ‏ security_result.rule_name, ‏ security_result.description אם הערך של terminatingRuleType הוא RATE_BASED, המערכת מבצעת איטרציה בכל כלל ב-rateBasedRuleList. אם הערך של terminatingRuleId תואם לשם הכלל, מזהה הכלל, שם הכלל והתיאור ממופים ל-security_result.rule_id, ל-security_result.rule_name ול-security_result.description בהתאמה.
responseCodeSent network.http.response_code ממופה ישירות ל-network.http.response_code ומומר למספר שלם.
ruleGroupList intermediary.labels, security_result.rule_id, security_result.rule_name, security_result.description, security_result.detection_fields הפונקציה מבצעת איטרציה בכל קבוצת כללים ב-ruleGroupList. מזהה קבוצת הכללים מתווסף כצמד מפתח/ערך ל-intermediary.labels. אם הערך של terminatingRuleType הוא MANAGED_RULE_GROUP והערך של terminatingRuleId תואם למזהה של קבוצת הכללים, מזהה הכלל, שם הכלל והתיאור ממופים ל-security_result.rule_id, ל-security_result.rule_name ול-security_result.description בהתאמה. אם הערך של terminatingRuleType הוא GROUP, מזהה הכלל המסיים מחולץ וממופה ל-security_result.rule_name ול-security_result.description. מזהה קבוצת הכללים שמסיימת את התהליך מתווסף ל-security_result.rule_labels עם המפתח terminatingRuleGroupName. אם הערך של terminatingRuleType הוא REGULAR, הפעולה של הכלל המסיים נשלפת ומתווספת לשדות security_result.detectionעם המפתח terminatingRuleAction{index}.
terminatingRuleId security_result.rule_id, ‏ security_result.rule_name, ‏ security_result.description אם terminatingRuleType הוא RATE_BASED,‏ MANAGED_RULE_GROUP או REGULAR,‏ terminatingRuleId ממופה ל-security_result.rule_id,‏ security_result.rule_name ומשמש ליצירת security_result.description.
terminatingRuleMatchDetails security_result.description, security_result.category_details, security_result.detection_fields איטרציה על כל התאמה ב-terminatingRuleMatchDetails. הערך של security_result.description מוגדר כ-Terminating Rule (כלל שמסיים את התהליך). אם סוג התנאי לא ריק, הוא מתווסף ל-security_result.category_details. אם המיקום לא ריק, הוא מתווסף ל-security_result.detection_fields עם המפתח 'location'. כל רכיב נתונים תואם מתווסף ל-security_result.detection_fields עם המפתח matchedData.
terminatingRuleType security_result.rule_type ממופה ישירות אל security_result.rule_type.
חותמת זמן metadata.event_timestamp הערך מומר לחותמת זמן וממופה ל-metadata.event_timestamp.
webaclId intermediary.resource.name ממופה ישירות ל-intermediary.resource.name.
metadata.vendor_name מגדירים את הערך AMAZON.
metadata.product_name מגדירים את האפשרות 'AWS Web Application Firewall'.
metadata.log_type מגדירים את הערך 'AWS_WAF'.
network.application_protocol מגדירים את האפשרות 'HTTP'.
metadata.event_type הערך שמוגדר הוא NETWORK_HTTP אם httpRequest.headers מכיל כותרת host או Host. אחרת, צריך להגדיר את הערך STATUS_UPDATE.

יומן שינויים

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

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