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

גרסת המנתח: 1.0

נתמך ב:

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

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

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

הגדרת AWS IAM ו-S3

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

הגדרת CloudTrail ל-AWS KMS

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

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

  1. עוברים אל הגדרות > ניהול נתונים > פידים. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פידים.
  2. לוחצים על הוספה.
  3. בשדה Feed name, מזינים שם לפיד, לדוגמה AWS EC2 Hosts Logs.
  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 תומך ביומנים בפורמט 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 Logic (פונקציה לוגית)
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.