Logs von AWS EC2-Hosts erfassen
In diesem Dokument wird beschrieben, wie Sie AWS EC2-Host-Logs in Google Security Operations einbinden, um sie zu überwachen und zu analysieren. Bei der Integration werden EC2-Hostlogs geparst und dem Unified Data Model (UDM) zugeordnet, es werden Datentransformationen durchgeführt und Beziehungen zwischen EC2-Hosts und ‑Instanzen erstellt. Die Logs enthalten wertvolle Informationen zu den Instanzen, Host-Properties, Instanztypen und Leistungsmesswerten, die für Sicherheitsmonitoring, Audit und Compliance verwendet werden können.
Hinweise
- Prüfen Sie, ob Sie eine Google SecOps-Instanz haben.
- Prüfen Sie, ob Sie privilegierten Zugriff auf AWS haben.
AWS IAM und S3 konfigurieren
- Erstellen Sie einen Amazon S3-Bucket. Folgen Sie dazu der Anleitung unter Bucket erstellen.
- Speichern Sie den Namen und die Region des Buckets für die spätere Verwendung.
- Erstellen Sie einen Nutzer gemäß dieser Anleitung: IAM-Nutzer erstellen.
- Wählen Sie den erstellten Nutzer aus.
- Wählen Sie den Tab Sicherheitsanmeldedaten aus.
- Klicken Sie im Abschnitt Zugriffsschlüssel auf Zugriffsschlüssel erstellen.
- Wählen Sie als Anwendungsfall Drittanbieterdienst aus.
- Klicken Sie auf Weiter.
- Optional: Fügen Sie ein Beschreibungstag hinzu.
- Klicken Sie auf Zugriffsschlüssel erstellen.
- Klicken Sie auf CSV-Datei herunterladen, um den Access Key (Zugriffsschlüssel) und den Secret Access Key (geheimer Zugriffsschlüssel) für die spätere Verwendung zu speichern.
- Klicken Sie auf Fertig.
- Wählen Sie den Tab Berechtigungen aus.
- Klicken Sie im Bereich Berechtigungsrichtlinien auf Berechtigungen hinzufügen.
- Wählen Sie Berechtigungen hinzufügen aus.
- Wählen Sie Richtlinien direkt anhängen aus.
- Suchen Sie nach der Richtlinie AmazonS3FullAccess und wählen Sie sie aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Berechtigungen hinzufügen.
CloudTrail für AWS KMS konfigurieren
- Melden Sie sich bei der AWS Management Console an.
- Geben Sie in der Suchleiste CloudTrail ein und wählen Sie den Dienst aus der Liste aus.
- Klicken Sie auf Trail erstellen.
- Geben Sie einen Trail name an, z. B.
EC2-Activity-Trail
. - Klicken Sie das Kästchen Für alle Konten in meiner Organisation aktivieren an.
- Geben Sie den zuvor erstellten S3-Bucket-URI ein (das Format sollte
s3://your-log-bucket-name/
sein) oder erstellen Sie einen neuen S3-Bucket. - Wenn SSE-KMS aktiviert ist, geben Sie einen Namen für den AWS KMS-Alias an oder wählen Sie einen vorhandenen AWS KMS-Schlüssel aus.
- Die anderen Einstellungen können Sie auf den Standardwerten belassen.
- Klicken Sie auf Weiter.
- Wählen Sie unter Event Types (Ereignistypen) Management events (Verwaltungsereignisse) und Data events (Datenereignisse) aus, um EC2-Hostaktivitäten zu erfassen.
- Klicken Sie auf Weiter.
- Prüfen Sie die Einstellungen unter Überprüfen und erstellen.
- Klicken Sie auf Trail erstellen.
- Optional: Wenn Sie einen neuen Bucket erstellt haben, fahren Sie mit dem folgenden Verfahren fort:
- Rufen Sie S3 auf.
- Suchen Sie den neu erstellten Log-Bucket und wählen Sie ihn aus.
- Wählen Sie den Ordner AWSLogs aus.
- Klicken Sie auf S3-URI kopieren und speichern Sie sie.
Feed in Google SecOps konfigurieren, um AWS EC2-Hosts aufzunehmen
- Rufen Sie die SIEM-Einstellungen> Feeds auf.
- Klicken Sie auf Neu hinzufügen.
- Geben Sie im Feld Feed name (Feedname) einen Namen für den Feed ein, z. B. AWS EC2 Hosts Logs (AWS EC2-Hostprotokolle).
- Wählen Sie Amazon S3 als Quelltyp aus.
- Wählen Sie AWS EC2-Hosts als Logtyp aus.
- Klicken Sie auf Weiter.
Geben Sie Werte für die folgenden Eingabeparameter an:
- Region: Die Region, in der sich der Amazon S3-Bucket befindet.
- S3-URI: Der Bucket-URI.
s3://your-log-bucket-name/
- Ersetzen Sie
your-log-bucket-name
durch den tatsächlichen Namen des Buckets.
- Ersetzen Sie
- URI ist ein: Wählen Sie Verzeichnis oder Verzeichnis mit Unterverzeichnissen aus.
Optionen zum Löschen der Quelle: Wählen Sie die gewünschte Option aus.
Zugriffsschlüssel-ID: Der Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket.
Secret Access Key (Geheimer Zugriffsschlüssel): Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket.
Asset-Namespace: der Asset-Namespace.
Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
Klicken Sie auf Weiter.
Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
AllocationTime |
entity.metadata.creation_timestamp |
Das Feld AllocationTime wird als Zeitstempel geparst und dem Feld creation_timestamp zugeordnet. Der Parser versucht es mit verschiedenen Formaten (JJJJ-MM-TT HH:mm:ss, RFC 3339, UNIX, ISO8601). |
AllowsMultipleInstanceTypes |
entity.entity.asset.attribute.labels.value |
Der Wert von AllowsMultipleInstanceTypes aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf allows_multiple_instance_types festgelegt. |
AutoPlacement |
entity.entity.asset.attribute.labels.value |
Der Wert von AutoPlacement aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf auto_placement festgelegt. |
AvailabilityZone |
entity.entity.asset.attribute.cloud.availability_zone |
Das Feld AvailabilityZone wird direkt dem Feld availability_zone zugeordnet. |
AvailabilityZoneID |
entity.entity.asset.attribute.labels.value |
Der Wert von AvailabilityZoneID aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf availability_zone_id festgelegt. |
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity |
entity.entity.asset.attribute.labels.value |
Der Wert von AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity (oder AvailableCapacity.Instance.Available nach der Umbenennung) wird in einen String konvertiert und als Wert eines Labels verwendet. Der Schlüssel ist auf available_instance_capacity_available_capacity festgelegt. |
AvailableCapacity.AvailableInstanceCapacity.InstanceType |
entity.entity.asset.attribute.labels.value |
Der Wert von AvailableCapacity.AvailableInstanceCapacity.InstanceType (oder AvailableCapacity.Instance.Type nach der Umbenennung) wird als Wert eines Labels verwendet. Der Schlüssel ist auf available_instance_capacity_instance_type festgelegt. |
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity |
entity.entity.asset.attribute.labels.value |
Der Wert von AvailableCapacity.AvailableInstanceCapacity.TotalCapacity (oder AvailableCapacity.Instance.Total nach der Umbenennung) wird in einen String konvertiert und als Wert eines Labels verwendet. Der Schlüssel ist auf total_capacity festgelegt. |
AvailableCapacity.AvailableVCpus |
entity.entity.asset.attribute.labels.value |
Der Wert von AvailableCapacity.AvailableVCpus (oder AvailableCapacity.VCPUs nach der Umbenennung) wird in einen String konvertiert und als Wert eines Labels verwendet. Der Schlüssel ist auf available_v_cpus festgelegt. |
ClientToken |
entity.entity.asset.attribute.labels.value |
Der Wert von ClientToken aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf client_token festgelegt. |
HostID |
entity.metadata.product_entity_id |
Das Feld HostID (oder ID nach der Umbenennung) wird direkt dem Feld product_entity_id zugeordnet. |
HostID |
entity.entity.asset.asset_id |
Das Feld HostID (oder ID nach der Umbenennung) wird direkt dem Feld asset_id zugeordnet. |
HostMaintenance |
entity.entity.asset.attribute.labels.value |
Der Wert von HostMaintenance (oder Maintenance nach der Umbenennung) aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_maintenance festgelegt. |
HostProperties.Cores |
entity.entity.asset.hardware.cpu_number_cores |
Der Wert von HostProperties.Cores wird in eine vorzeichenlose Ganzzahl konvertiert und cpu_number_cores zugeordnet. |
HostProperties.InstanceFamily |
entity.entity.asset.attribute.labels.value |
Der Wert von HostProperties.InstanceFamily aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_properties_instance_family festgelegt. |
HostProperties.InstanceType |
entity.entity.asset.attribute.labels.value |
Der Wert von HostProperties.InstanceType aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_properties_instance_type festgelegt. |
HostProperties.Sockets |
entity.entity.asset.attribute.labels.value |
Der Wert von HostProperties.Sockets wird in einen String konvertiert und als Wert eines Labels verwendet. Der Schlüssel ist auf host_properties_sockets festgelegt. |
HostProperties.TotalVCpus |
entity.entity.asset.attribute.labels.value |
Der Wert von HostProperties.TotalVCpus (oder HostProperties.TotalVCPUs nach der Umbenennung) wird in einen String konvertiert und als Wert eines Labels verwendet. Der Schlüssel ist auf host_properties_total_v_cpus festgelegt. |
HostRecovery |
entity.entity.asset.attribute.labels.value |
Der Wert von HostRecovery (oder Recovery nach der Umbenennung) aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_recovery festgelegt. |
HostReservationID |
entity.entity.asset.attribute.labels.value |
Der Wert von HostReservationID (oder ReservationID nach der Umbenennung) aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf host_reservation_id festgelegt. |
MemberOfServiceLinkedResourceGroup |
entity.entity.asset.attribute.labels.value |
Der Wert von MemberOfServiceLinkedResourceGroup wird in einen String konvertiert und als Wert eines Labels verwendet. Der Schlüssel ist auf member_of_service_linked_resource_group festgelegt. |
OwnerID |
entity.entity.asset.attribute.labels.value |
Der Wert von OwnerID aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf owner_id festgelegt. |
ReleaseTime |
entity.entity.asset.attribute.labels.value |
Der Wert von ReleaseTime aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf release_time festgelegt. |
State |
entity.entity.asset.attribute.labels.value |
Der Wert von State aus dem Rohlog wird als Wert eines Labels verwendet. Der Schlüssel für dieses Label ist auf state festgelegt. |
TagSet |
entity.entity.asset.attribute.labels |
Das TagSet -Array wird durchlaufen und Key und Value jedes Tags werden als Schlüssel bzw. Wert eines Labels verwendet. Der Wert AMAZON_WEB_SERVICES wird diesem Feld vom Parser zugewiesen. Der collection_time aus dem Rohlog wird dem Feld collected_timestamp zugeordnet. Der Wert ASSET wird diesem Feld vom Parser zugewiesen. Der Wert AWS EC2 HOSTS wird diesem Feld vom Parser zugewiesen. Der Wert AWS wird diesem Feld vom Parser zugewiesen. Beziehungen werden aus den Feldern Instances und OutpostArn abgeleitet, diese Felder selbst werden aber nicht direkt dem IDM-Objekt zugeordnet. Die Parserlogik erstellt anhand dieser Felder Beziehungsobjekte und führt sie in das relations -Array ein. |
collection_time |
entity.metadata.collected_timestamp |
Der collection_time des Logs wird als collected_timestamp des Ereignisses verwendet. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten