Collecter les journaux AWS Elastic Load Balancing

Compatible avec:

Ce document explique comment collecter les journaux d'équilibrage de charge AWS Elastic en configurant un flux Google Security Operations. L'analyseur convertit les journaux au format UDM. Il utilise des modèles grok pour extraire des champs à partir de messages au format CEF et non CEF, les mapper sur des champs UDM et gérer diverses transformations de données, y compris une logique spécifique pour les champs HTTP, TLS et liés à la sécurité. Il effectue également un traitement conditionnel en fonction de la présence ou du format de certains champs pour garantir une représentation précise de l'UDM.

Avant de commencer

  • Assurez-vous de disposer d'une instance Google SecOps.
  • Assurez-vous de disposer d'un accès privilégié à AWS.

Configurer AWS Elastic Load Balancing

Configurer le bucket Amazon S3

  1. Connectez-vous à la console AWS.
  2. Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur: Créer un bucket.
  3. Enregistrez le nom (par exemple, elb-logs) et la région du bucket pour une utilisation ultérieure.
  4. Créez un utilisateur en suivant le guide de l'utilisateur Créer un utilisateur IAM.
  5. Sélectionnez l'utilisateur créé.
  6. Sélectionnez l'onglet Informations d'identification de sécurité.
  7. Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
  8. Sélectionnez Service tiers comme Cas d'utilisation.
  9. Cliquez sur Suivant.
  10. Facultatif: ajoutez une balise de description.
  11. Cliquez sur Créer une clé d'accès.
  12. Cliquez sur Download CSV file (Télécharger le fichier CSV) pour enregistrer la clé d'accès et la clé d'accès secrète pour les utiliser ultérieurement.
  13. Cliquez sur OK.
  14. Sélectionnez l'onglet Autorisations.
  15. Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
  16. Sélectionnez Ajouter des autorisations.
  17. Sélectionnez Joindre directement des règles.
  18. Recherchez et sélectionnez la règle AmazonS3FullAccess.
  19. Cliquez sur Suivant.
  20. Cliquez sur Ajouter des autorisations.

Configurer AWS Elastic Load Balancer pour activer les journaux d'accès

  1. Connectez-vous à l'AWS Management Console.
  2. Recherchez et sélectionnez EC2.
  3. Sélectionnez Équilibreurs de charge dans le menu de navigation.
  4. Sélectionnez l'équilibreur de charge pour lequel vous souhaitez activer la journalisation.
  5. Dans l'onglet Description, faites défiler l'écran jusqu'à Attributs.
  6. Cliquez sur Modifier les attributs.
  7. Activez les journaux d'accès en sélectionnant Activer.
  8. Sélectionnez le bucket S3 que vous avez créé précédemment (par exemple, elb-logs).
  9. Facultatif: définissez le préfixe de journal pour faciliter l'identification des journaux (par exemple, elb/access-logs/).
  10. Cliquez sur Enregistrer.

Configurer un flux dans Google SecOps pour ingérer les journaux AWS Elastic Load Balancer

  1. Accédez à Paramètres du SIEM > Flux.
  2. Cliquez sur Ajouter.
  3. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux de l'équilibreur de charge élastique AWS).
  4. Sélectionnez Amazon S3 comme Type de source.
  5. Sélectionnez AWS Elastic Load Balancer comme type de journal.
  6. Cliquez sur Suivant.
  7. Spécifiez les valeurs des paramètres d'entrée suivants:

    • Region (Région) : région dans laquelle se trouve le bucket Amazon S3.
    • URI S3: URI du bucket.
      • s3:/BUCKET_NAME
        • Remplacez BUCKET_NAME par le nom réel du bucket.
    • L'URI est: sélectionnez le TYPE D'URI en fonction de la configuration du flux de journaux (Fichier unique | Répertoire | Répertoire incluant des sous-répertoires).
    • Options de suppression de la source: sélectionnez l'option de suppression en fonction de vos préférences.
    • ID de clé d'accès: clé d'accès utilisateur ayant accès au bucket S3.
    • Clé d'accès secrète: clé secrète de l'utilisateur ayant accès au bucket S3.
    • Espace de noms des éléments: espace de noms des éléments.
    • Libellés d'ingestion: libellé à appliquer aux événements de ce flux.
  8. Cliquez sur Suivant.

  9. Vérifiez la configuration de votre nouveau flux dans l'écran Finaliser, puis cliquez sur Envoyer.

Tableau de mappage UDM

Champ de journal Mappage UDM Logique
actions_executed security_result.action Si actions_executed est "waf,forward" ou "waf,redirect", définissez la valeur sur "ALLOW". Si actions_executed est "waf", définissez la valeur sur "BLOCK".
chosen_cert_arn principal.user.attribute.labels Si chosen_cert_arn contient "session", mappez sa valeur sur security_result.description. Sinon, créez un libellé avec la clé "ARN" et la valeur chosen_cert_arn, puis ajoutez-le au tableau principal.user.attribute.labels.
chosen_cert_arn security_result.description Si chosen_cert_arn contient "session", mappez sa valeur sur ce champ.
client_ip principal.asset.ip Mappage direct.
client_ip principal.ip Mappage direct.
client_port principal.port Mappage direct.
classification security_result.rule_name Mappage direct s'il n'est pas vide ou "-".
classification_reason security_result.summary Mappage direct s'il n'est pas vide ou "-".
Customer (CEF) principal.user.user_display_name Mappé directement à partir du champ CEF.
data Divers Analyse avec des modèles Grok pour extraire plusieurs champs. Consultez les autres lignes pour obtenir des mappages spécifiques.
data.act (CEF) security_result.action_details Mappé directement à partir du champ CEF.
data.app (CEF) principal.application Mappé directement à partir du champ CEF.
data.ccode (CEF) principal.location.country Mappé directement à partir du champ CEF.
data.cicode (CEF) principal.location.city Mappé directement à partir du champ CEF.
data.cn1 (CEF) network.http.response_code Mappé directement à partir du champ CEF.
data.cpt (CEF) principal.port Mappé directement à partir du champ CEF.
data.cs1Label (CEF) additional.fields Crée une paire clé-valeur avec la clé "Cap Support" et la valeur de cs1Label.
data.cs2Label (CEF) additional.fields Crée une paire clé-valeur avec la clé "Compatibilité JavaScript" et la valeur de cs2Label.
data.cs3Label (CEF) additional.fields Crée une paire clé-valeur avec la clé "Assistance CO" et la valeur de cs3Label.
data.cs4Label (CEF) additional.fields Crée une paire clé-valeur avec la clé "VID" et la valeur de cs4Label.
data.cs5Label (CEF) additional.fields Crée une paire clé-valeur avec la clé "clappsig" et la valeur de cs5Label.
data.cs6Label (CEF) additional.fields Crée une paire clé-valeur avec la clé "clapp" et la valeur de cs6Label.
data.cs7Label (CEF) additional.fields Crée une paire clé-valeur avec la clé "latitude" et la valeur de cs7Label.
data.deviceExternalId (CEF) about.asset.asset_id Utilisé dans l'ID de l'asset: Incapsula.SIEMintegration:deviceExternalId.
data.deviceFacility (CEF) principal.location.region Mappé directement à partir du champ CEF.
data.dproc (CEF) target.process.command_line Mappé directement à partir du champ CEF.
data.dst_ip target.asset.ip Mappage direct.
data.dst_ip target.ip Mappage direct.
data.dst_port target.port Mappage direct.
data.elb target.resource.id Mappage direct.
data.fileId (CEF) security_result.detection_fields Crée une paire clé-valeur avec la clé "fileId" et la valeur de fileId.
data.in (CEF) network.received_bytes Mappé directement à partir du champ CEF.
data.request (CEF) target.url Mappé directement à partir du champ CEF.
data.requestClientApplication (CEF) network.http.user_agent Mappé directement à partir du champ CEF.
data.requestMethod (CEF) network.http.method Mappé directement à partir du champ CEF.
data.severity (CEF) security_result.severity Correspond à "LOW" (FAIBLE) si la gravité est de 0.
data.sip (CEF) principal.asset.ip Mappé directement à partir du champ CEF.
data.sip (CEF) principal.ip Mappé directement à partir du champ CEF.
data.siteid (CEF) security_result.detection_fields Crée une paire clé-valeur avec la clé "siteid" et la valeur de siteid.
data.sourceServiceName (CEF) principal.application Mappé directement à partir du champ CEF.
data.spt (CEF) principal.port Mappé directement à partir du champ CEF.
data.src (CEF) principal.ip Mappé directement à partir du champ CEF.
data.suid (CEF) principal.user.userid Mappé directement à partir du champ CEF.
data.ver (CEF) network.tls.version La partie de la version est extraite à l'aide de grok et mappée.
data.ver (CEF) network.tls.cipher La partie chiffrement est extraite à l'aide de grok et mappée.
data.xff (CEF) principal.ip Mappé directement à partir du champ CEF.
domain_name principal.administrative_domain Mappage direct.
http_method network.http.method Mappage direct.
log_type metadata.log_type Mappage direct.
message Divers Analyse avec des modèles Grok pour extraire plusieurs champs. Consultez les autres lignes pour obtenir des mappages spécifiques.
received_bytes network.received_bytes Mappage direct.
redirect_url network.application_protocol Si redirect_url commence par "http", le protocole est extrait et mappé.
redirect_url target.asset.hostname Si redirect_url commence par "http", le nom d'hôte est extrait et mappé.
redirect_url target.hostname Si redirect_url commence par "http", le nom d'hôte est extrait et mappé.
redirect_url target.port Si redirect_url commence par "http", le port est extrait et mappé.
request_creation_time metadata.collected_timestamp Mappage direct après l'analyse de la date.
request_processing_time security_result.detection_fields Crée une paire clé-valeur avec la clé "request_processing_time" et la valeur de ce champ.
response_processing_time security_result.detection_fields Crée une paire clé-valeur avec la clé "response_processing_time" et la valeur de ce champ.
sent_bytes network.sent_bytes Mappage direct.
ssl_cipher network.tls.cipher Mappage direct.
ssl_protocol network.tls.version Mappage direct.
target_group_arn target.group.group_display_name Mappage direct.
target_processing_time security_result.detection_fields Crée une paire clé-valeur avec la clé "target_processing_time" et la valeur de ce champ.
target_status_code target.labels Crée un libellé avec la clé "target_status_code" et la valeur de ce champ, puis l'ajoute au tableau target.labels.
time metadata.event_timestamp Mappage direct après l'analyse de la date.
trace_id metadata.product_log_id Mappage direct après suppression de "Root=".
url network.http.referral_url Mappage direct.
user_agent network.http.user_agent Mappage direct.
(Analyseur) metadata.event_type Défini sur "NETWORK_HTTP" si les ID de machine principal et cible sont présents, sur "STATUS_UPDATE" si seul l'ID de machine principal est présent, sur "GENERIC_EVENT" si aucun IP cible, nom d'hôte ou IP de destination n'est présent, et sur "NETWORK_HTTP" dans le cas contraire.
(Analyseur) metadata.product_name Définissez-le sur "AWS Elastic Load Balancer".
(Analyseur) metadata.vendor_name Définissez-le sur "AMAZON".

Modifications

2024-03-22

  • Ajout d'un nouveau format Grok pour prendre en charge le nouveau format de journaux JSON.
  • Ajout de la compatibilité avec les journaux de modèles CEF.
  • Mappage de "dst_ip" sur "target.ip".
  • Mappage de "dst_port" sur "target.port".
  • Mappage de "sip" sur "principal.ip".
  • Mise en correspondance de "request_processing_time", "target_processing_time", "siteid", "fileId" et "response_processing_time" avec "security_result.detection.fields".
  • Mise en correspondance alignée pour "principal.ip" et "principal.asset.ip".
  • Mise en correspondance alignée pour "target.ip" et "target.asset.ip".
  • Mise en correspondance alignée pour "target.hostname" et "target.asset.hostname".
  • Mappage de "cipher" sur "network.tls.cipher".
  • Mappage de "version" sur "network.tls.version".
  • "Client" a été mappé sur "principal.user.user_display_name".

2022-05-27

  • Amélioration : modification de la valeur stockée dans metadata.product_name pour qu'elle soit "AWS Elastic Load Balancer".

Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.