איסוף יומנים של מארחי AWS EC2

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

נתמך ב:

במסמך הזה מוסבר איך לשלב יומנים של AWS EC2 Hosts ב-Google Security Operations לצורך מעקב וניתוח. השילוב כולל ניתוח ומיפוי של יומני מארחים של EC2 למודל הנתונים המאוחד (UDM), ביצוע טרנספורמציה של נתונים ויצירת קשרים בין מארחים ומופעים של EC2. היומנים מספקים מידע חשוב על המופעים, מאפייני המארח, סוגי המופעים ומדדי הביצועים, שאפשר להשתמש בהם לצורך ניטור לצורכי אבטחה, ביקורת ותאימות.

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

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

הגדרת AWS IAM ו-S3

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

הגדרת CloudTrail ל-AWS KMS

  1. נכנסים למסוף הניהול של AWS.
  2. בסרגל החיפוש, מקלידים CloudTrail ובוחרים אותו מרשימת השירותים.
  3. לוחצים על יצירת נתיב.
  4. מזינים שם של Trail, לדוגמה EC2-Activity-Trail.
  5. מסמנים את התיבה הפעלה לכל החשבונות בארגון שלי.
  6. מקלידים את ה-URI של קטגוריית S3 שנוצרה קודם (הפורמט צריך להיות: s3://your-log-bucket-name/), או יוצרים קטגוריית S3 חדשה.
  7. אם האפשרות SSE-KMS מופעלת, צריך לספק שם לכינוי של AWS KMS או לבחור מפתח קיים של AWS KMS.
  8. אפשר להשאיר את שאר ההגדרות כברירת מחדל.
  9. לוחצים על הבא.
  10. כדי לתעד את הפעילות של מארח EC2, בוחרים באפשרויות אירועי ניהול ואירועי נתונים בקטע סוגי אירועים.
  11. לוחצים על הבא.
  12. בודקים את ההגדרות בקטע בדיקה ויצירה.
  13. לוחצים על יצירת נתיב.
  14. אופציונלי: אם יצרתם מאגר חדש, ממשיכים בתהליך הבא:
    • עוברים אל S3.
    • מזהים ובוחרים את קטגוריית היומנים החדשה שנוצרה.
    • בוחרים בתיקייה AWSLogs.
    • לוחצים על העתקת ה-URI של S3 ושומרים אותו.

הגדרת פיד ב-Google SecOps להטמעה של מארחי AWS EC2

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת חדש.
  3. בשדה Feed name (שם הפיד), מזינים שם לפיד, לדוגמה, AWS EC2 Hosts Logs (יומני מארחים של AWS EC2).
  4. בוחרים באפשרות Amazon S3 V2 בתור סוג המקור.
  5. בוחרים באפשרות AWS EC2 Hosts בתור Log type.
  6. לוחצים על הבא.
  7. מציינים ערכים לפרמטרים הבאים של הקלט:

    • S3 URI: מזהה ה-URI של הקטגוריה.
      • s3://your-log-bucket-name/
        • מחליפים את your-log-bucket-name בשם הקטגוריה בפועל.
    • אפשרויות למחיקת מקורות: בוחרים את אפשרות המחיקה לפי ההעדפה.

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

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

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

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

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

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

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

פורמטים נתמכים של יומנים של מארחים ב-AWS EC2

מנתח ה-AWS EC2 Hosts תומך ביומנים בפורמט JSON.

דוגמאות ליומנים של מארחי AWS EC2 נתמכים

  • JSON

      {
        "AllocationTime": "2018-01-23T12:33:31.692Z",
        "AllowsMultipleInstanceTypes": "",
        "AssetID": "",
        "AutoPlacement": "off",
        "AvailabilityZone": "us-east-1a",
        "AvailabilityZoneID": "",
        "AvailableCapacity": {
          "VCPUs": 96,
          "Instance": {
            "Available": 48,
            "Total": 48,
            "Type": "m5.large"
          }
        },
        "ClientToken": "",
        "ID": "h-05abcdd12ee9ca123",
        "Maintenance": "",
        "Properties": {
          "Cores": 48,
          "InstanceFamily": "",
          "InstanceType": "m5.large",
          "Sockets": 2,
          "TotalVCPUs": 96
        },
        "Recovery": "off",
        "ReservationID": "",
        "Instances": null,
        "MemberOfServiceLinkedResourceGroup": false,
        "OutpostARN": "",
        "OwnerID": "",
        "ReleaseTime": "",
        "State": "available",
        "TagSet": null
      }
    

טבלת מיפוי UDM

שדה היומן מיפוי UDM לוגיקה
AllocationTime entity.metadata.creation_timestamp השדה AllocationTime מנותח כחותמת זמן וממופה לשדה creation_timestamp. הכלי לניתוח מנסה פורמטים שונים (yyyy-MM-dd HH:mm:ss, ‏ RFC 3339, ‏ UNIX, ‏ ISO8601).
AllowsMultipleInstanceTypes entity.entity.asset.attribute.labels.value הערך של AllowsMultipleInstanceTypes מהיומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-allows_multiple_instance_types.
AutoPlacement entity.entity.asset.attribute.labels.value הערך של AutoPlacement מהיומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-auto_placement.
AvailabilityZone entity.entity.asset.attribute.cloud.availability_zone השדה AvailabilityZone ממופה ישירות לשדה availability_zone.
AvailabilityZoneID entity.entity.asset.attribute.labels.value הערך של AvailabilityZoneID מהיומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-availability_zone_id.
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity entity.entity.asset.attribute.labels.value הערך של AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity (או AvailableCapacity.Instance.Available אחרי שינוי השם) מומר למחרוזת ומשמש כערך של תווית. המקש מוגדר כavailable_instance_capacity_available_capacity.
AvailableCapacity.AvailableInstanceCapacity.InstanceType entity.entity.asset.attribute.labels.value הערך של AvailableCapacity.AvailableInstanceCapacity.InstanceType (או AvailableCapacity.Instance.Type אחרי שינוי השם) משמש כערך של תווית. המקש מוגדר כavailable_instance_capacity_instance_type.
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity entity.entity.asset.attribute.labels.value הערך של AvailableCapacity.AvailableInstanceCapacity.TotalCapacity (או AvailableCapacity.Instance.Total אחרי שינוי השם) מומר למחרוזת ומשמש כערך של תווית. המקש מוגדר כtotal_capacity.
AvailableCapacity.AvailableVCpus entity.entity.asset.attribute.labels.value הערך של AvailableCapacity.AvailableVCpus (או AvailableCapacity.VCPUs אחרי שינוי השם) מומר למחרוזת ומשמש כערך של תווית. המקש מוגדר כavailable_v_cpus.
ClientToken entity.entity.asset.attribute.labels.value הערך של ClientToken מהיומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-client_token.
HostID entity.metadata.product_entity_id השדה HostID (או ID אחרי שינוי השם) ממופה ישירות לשדה product_entity_id.
HostID entity.entity.asset.asset_id השדה HostID (או ID אחרי שינוי השם) ממופה ישירות לשדה asset_id.
HostMaintenance entity.entity.asset.attribute.labels.value הערך של HostMaintenance (או Maintenance אחרי שינוי השם) מתוך היומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-host_maintenance.
HostProperties.Cores entity.entity.asset.hardware.cpu_number_cores הערך של HostProperties.Cores מומר למספר שלם לא חתום וממופה ל-cpu_number_cores.
HostProperties.InstanceFamily entity.entity.asset.attribute.labels.value הערך של HostProperties.InstanceFamily מהיומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-host_properties_instance_family.
HostProperties.InstanceType entity.entity.asset.attribute.labels.value הערך של HostProperties.InstanceType מהיומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-host_properties_instance_type.
HostProperties.Sockets entity.entity.asset.attribute.labels.value הערך של HostProperties.Sockets מומר למחרוזת ומשמש כערך של תווית. המקש מוגדר כhost_properties_sockets.
HostProperties.TotalVCpus entity.entity.asset.attribute.labels.value הערך של HostProperties.TotalVCpus (או HostProperties.TotalVCPUs אחרי שינוי השם) מומר למחרוזת ומשמש כערך של תווית. המקש מוגדר כhost_properties_total_v_cpus.
HostRecovery entity.entity.asset.attribute.labels.value הערך של HostRecovery (או Recovery אחרי שינוי השם) מתוך היומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-host_recovery.
HostReservationID entity.entity.asset.attribute.labels.value הערך של HostReservationID (או ReservationID אחרי שינוי השם) מתוך היומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-host_reservation_id.
MemberOfServiceLinkedResourceGroup entity.entity.asset.attribute.labels.value הערך של MemberOfServiceLinkedResourceGroup מומר למחרוזת ומשמש כערך של תווית. המקש מוגדר כmember_of_service_linked_resource_group.
OwnerID entity.entity.asset.attribute.labels.value הערך של OwnerID מהיומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-owner_id.
ReleaseTime entity.entity.asset.attribute.labels.value הערך של ReleaseTime מהיומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-release_time.
State entity.entity.asset.attribute.labels.value הערך של State מהיומן הגולמי משמש כערך של תווית. המפתח של התווית הזו מוגדר כ-state.
TagSet entity.entity.asset.attribute.labels המערך TagSet עובר איטרציה, והערכים Key ו-Value של כל תג משמשים כמפתח וכערך של תווית, בהתאמה. הערך AMAZON_WEB_SERVICES מוקצה לשדה הזה על ידי מנתח התוכן. השדה collection_time מיומן הגולמי ממופה לשדה collected_timestamp. הערך ASSET מוקצה לשדה הזה על ידי מנתח התוכן. הערך AWS EC2 HOSTS מוקצה לשדה הזה על ידי מנתח התוכן. הערך AWS מוקצה לשדה הזה על ידי מנתח התוכן. הקשרים נגזרים מהשדות Instances ו-OutpostArn, אבל השדות האלה לא ממופים ישירות לאובייקט IDM. הלוגיקה של מנתח התוכן יוצרת אובייקטים של קשר על סמך השדות האלה וממזגת אותם למערך relations.
collection_time entity.metadata.collected_timestamp הערך של collection_time ביומן משמש כערך של collected_timestamp באירוע.

שנה רישום

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

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