Collecter les journaux AWS Elastic Load Balancing
Ce document explique comment collecter les journaux AWS Elastic Load Balancing 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 à 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 {: #before-you-begin }
Assurez-vous de remplir les conditions préalables suivantes :
- Instance Google SecOps
- Accès privilégié à AWS
Configurer AWS Elastic Load Balancing
- Activer la journalisation des accès pour envoyer les journaux d'accès à un bucket de stockage S3
- Créez une file d'attente Amazon Simple Queue Service (SQS) et associez-la à un bucket de stockage S3.
Configurer le bucket Amazon S3
- Connectez-vous à la console AWS.
- Créez un bucket Amazon S3 en suivant ce guide de l'utilisateur : Créer un bucket.
- Enregistrez le nom du bucket (par exemple,
elb-logs
) et la région pour une utilisation ultérieure. - Créez un utilisateur en suivant ce guide : Créer un utilisateur IAM.
- Sélectionnez l'utilisateur créé.
- Sélectionnez l'onglet Informations d'identification de sécurité.
- Cliquez sur Créer une clé d'accès dans la section Clés d'accès.
- Sélectionnez Service tiers comme Cas d'utilisation.
- Cliquez sur Suivant.
- Facultatif : ajoutez un tag de description.
- Cliquez sur Créer une clé d'accès.
- Cliquez sur Télécharger le fichier CSV pour enregistrer la clé d'accès et la clé d'accès secrète pour une utilisation ultérieure.
- Cliquez sur OK.
- Sélectionnez l'onglet Autorisations.
- Cliquez sur Ajouter des autorisations dans la section Règles d'autorisation.
- Sélectionnez Ajouter des autorisations.
- Sélectionnez Joindre directement des règles.
- Recherchez et sélectionnez la règle AmazonS3FullAccess.
- Cliquez sur Suivant.
- Cliquez sur Ajouter des autorisations.
Configurer AWS Elastic Load Balancer pour activer les journaux d'accès
- Connectez-vous à la console de gestion AWS.
- Recherchez et sélectionnez EC2.
- Sélectionnez Équilibreurs de charge dans le menu de navigation.
- Sélectionnez l'équilibreur de charge pour lequel vous souhaitez activer la journalisation.
- Dans l'onglet Description, faites défiler la page jusqu'à Attributs.
- Cliquez sur Modifier les attributs.
- Activez les journaux d'accès en sélectionnant Activer.
- Sélectionnez le bucket S3 créé précédemment (par exemple,
elb-logs
). - Facultatif : définissez le préfixe du journal pour identifier plus facilement les journaux (par exemple,
elb/access-logs/
). - Cliquez sur Enregistrer.
Configurer des flux
Il existe deux points d'entrée différents pour configurer les flux dans la plate-forme Google SecOps :
- Paramètres SIEM> Flux
- Plate-forme de contenu > Packs de contenu
Configurer des flux à partir de Paramètres SIEM > Flux
Pour configurer plusieurs flux pour différents types de journaux dans cette famille de produits, consultez Configurer des flux par produit.
Pour configurer un seul flux :
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Add New Feed (Ajouter un flux).
- Sur la page suivante, cliquez sur Configurer un seul flux.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, Journaux AWS Elastic Load Balancer).
- Sélectionnez Amazon S3 comme Type de source.
- Sélectionnez AWS Elastic Load Balancer comme type de journal.
- Cliquez sur Suivant.
Spécifiez les valeurs des paramètres d'entrée suivants :
- 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 de votre bucket S3.
- Remplacez
- 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 d'ingestion.
ID de clé d'accès : clé d'accès de l'utilisateur disposant des autorisations de lecture du bucket S3.
Clé d'accès secrète : clé secrète de l'utilisateur avec les autorisations nécessaires pour lire le bucket S3.
Espace de noms de l'élément : espace de noms de l'élément.
Libellés d'ingestion : libellé à appliquer aux événements de ce flux.
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Configurer des flux depuis le Hub de contenu
Indiquez les valeurs des champs suivants :
- 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 de votre bucket S3.
- Remplacez
- 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 d'ingestion.
ID de clé d'accès : clé d'accès de l'utilisateur disposant des autorisations de lecture du bucket S3.
Clé d'accès secrète : clé secrète de l'utilisateur avec les autorisations nécessaires pour lire le bucket S3.
Options avancées
- Nom du flux : valeur préremplie qui identifie le flux.
- Type de source : méthode utilisée pour collecter les journaux dans Google SecOps.
- Espace de noms de l'élément : espace de noms associé au flux.
- Libellés d'ingestion : libellés appliqués à tous les événements de ce flux.
Table de mappage UDM
Champ de journal | Mappage UDM | Logique |
---|---|---|
actions_executed |
security_result.action |
Si actions_executed est défini sur "waf,forward" ou "waf,redirect", définissez-le sur "ALLOW". Si actions_executed est défini sur "waf", définissez-le 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 à ce champ. |
client_ip |
principal.asset.ip |
Mappé directement. |
client_ip |
principal.ip |
Mappé directement. |
client_port |
principal.port |
Mappé directement. |
classification |
security_result.rule_name |
Directement mappé s'il n'est pas vide ou s'il n'est pas "-". |
classification_reason |
security_result.summary |
Directement mappé s'il n'est pas vide ou s'il n'est pas "-". |
Customer (CEF) |
principal.user.user_display_name |
Mappé directement à partir du champ CEF. |
data |
Diverses | Analysé à l'aide de modèles Grok pour extraire plusieurs champs. Consultez les autres lignes pour connaître les 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é "Javascript Support" et la valeur de cs2Label . |
data.cs3Label (CEF) |
additional.fields |
Crée une paire clé-valeur avec la clé "CO Support" 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'élément : 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 |
Mappé directement. |
data.dst_ip |
target.ip |
Mappé directement. |
data.dst_port |
target.port |
Mappé directement. |
data.elb |
target.resource.id |
Mappé directement. |
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 |
Mappé sur "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 du 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 |
Mappé directement. |
http_method |
network.http.method |
Mappé directement. |
log_type |
metadata.log_type |
Mappé directement. |
message |
Diverses | Analysé à l'aide de modèles Grok pour extraire plusieurs champs. Consultez les autres lignes pour connaître les mappages spécifiques. |
received_bytes |
network.received_bytes |
Mappé directement. |
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 |
Directement mappé 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 |
Mappé directement. |
ssl_cipher |
network.tls.cipher |
Mappé directement. |
ssl_protocol |
network.tls.version |
Mappé directement. |
target_group_arn |
target.group.group_display_name |
Mappé directement. |
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 |
Directement mappé après l'analyse de la date. |
trace_id |
metadata.product_log_id |
Mappé directement après la suppression de "Root=". |
url |
network.http.referral_url |
Mappé directement. |
user_agent |
network.http.user_agent |
Mappé directement. |
(Analyseur) | metadata.event_type |
Définissez sur "NETWORK_HTTP" si les ID de machine principale et cible sont présents, sur "STATUS_UPDATE" si seul l'ID de machine principale est présent, sur "GENERIC_EVENT" si aucune adresse IP cible, aucun nom d'hôte ni aucune adresse IP de destination n'est présent, et sur "NETWORK_HTTP" dans le cas contraire. |
(Analyseur) | metadata.product_name |
Définissez la valeur sur "AWS Elastic Load Balancer". |
(Analyseur) | metadata.vendor_name |
Définissez-le sur "AMAZON". |
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.