Collecter les journaux du WAF Akamai

Compatible avec:

Présentation

Cet analyseur gère les journaux du pare-feu d'application Web (WAF) Akamai, et est compatible avec les formats syslog et CEF. Il extrait des champs tels que les adresses IP, les URL, les méthodes HTTP, les codes de réponse, les user-agents et les informations sur les règles de sécurité, et les met en correspondance avec le UDM pour une représentation cohérente. L'analyseur gère également des champs Akamai spécifiques tels que attackData et clientReputation, effectuant les transformations de données nécessaires et enrichissant la sortie UDM.

Avant de commencer

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

Configurer le bucket Amazon S3

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

Configurer le WAF Akamai pour envoyer des journaux à Amazon S3

  1. Connectez-vous au Control Center d'Akamai.
  2. Accédez à la section Sécurité.
  3. Sélectionnez Journaux.
  4. Configurez une nouvelle diffusion de journaux:

    • Source des journaux:sélectionnez votre configuration du WAF.
    • Cible de diffusion:choisissez Amazon S3.
    • Bucket S3:spécifiez le nom du bucket S3 que vous avez créé.
    • Région:sélectionnez la région AWS dans laquelle se trouve votre bucket S3.
    • ID de clé d'accès et clé d'accès secrète:indiquez les identifiants que vous avez générés.
    • Format de journal:sélectionnez le format de journal approprié (par exemple, JSON).
    • Fréquence de diffusion:sélectionnez la fréquence appropriée pour la diffusion des journaux (par exemple, toutes les cinq minutes).
  5. Vérifiez la diffusion des journaux:

    • Après avoir configuré LDS, surveillez le bucket S3 pour détecter les fichiers journaux entrants.

Configurer un flux dans Google SecOps pour ingérer les journaux du WAF Akamai

  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 du WAF Akamai).
  4. Sélectionnez Amazon S3 comme Type de source.
  5. Sélectionnez Akamai WAF 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 les éléments suivants :
      • BUCKET_NAME : nom du bucket.
    • L'URI est: sélectionnez 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 (ordre croissant) Mappage UDM Logique
attackData.clientIP principal.ip, principal.asset.ip Adresse IP du client à l'origine de la requête. Extrait du champ attackData.clientIP dans les journaux akamai_siem.
attackData.configId metadata.product_log_id ID de configuration de sécurité. Extrait du champ attackData.configId dans les journaux akamai_siem. Ajouté également en tant que champ "detection_field" dans l'objet "security_result".
attackData.policyId N/A Utilisé dans la logique de l'analyseur pour renseigner security_result.summary avec la valeur "PolicyId:[value]".
attackData.ruleActions security_result.action, security_result.action_details Actions effectuées en fonction de la règle déclenchée. Extrait du champ attackData.ruleActions dans les journaux akamai_siem. "deny" est mappé sur "BLOCK", les autres valeurs ("alert", "monitor", "allow", "tarpit") sont mappées sur "ALLOW". La valeur d'origine est également stockée dans action_details.
attackData.ruleData security_result.detection_fields Données associées à la règle déclenchée. Extrait du champ attackData.ruleData dans les journaux akamai_siem. Ajouté à security_result.detection_fields avec la clé "RuleData".
attackData.ruleMessages security_result.threat_name Messages associés à la règle déclenchée. Extrait du champ attackData.ruleMessages dans les journaux akamai_siem.
attackData.ruleSelectors security_result.detection_fields Sélecteurs associés à la règle déclenchée. Extrait du champ attackData.ruleSelectors dans les journaux akamai_siem. Ajouté à security_result.detection_fields avec la clé "RuleSelector".
attackData.ruleTags security_result.category_details Balises associées à la règle déclenchée. Extrait du champ attackData.ruleTags dans les journaux akamai_siem.
attackData.ruleVersions security_result.detection_fields Versions des règles déclenchées. Extrait du champ attackData.ruleVersions dans les journaux akamai_siem. Ajouté à security_result.detection_fields avec la clé "Version de la règle".
clientReputation principal.labels Informations sur la réputation du client Extrait du champ clientReputation dans les journaux akamai_siem. Ajouté en tant que libellé au principal avec la clé "réputation".
cliIP, cli_ip, principal_ip principal.ip, principal.asset.ip Adresse IP du client. Extrait de cliIP, cli_ip ou principal_ip, selon le format de journal.
cp additional.fields Code CP. Extrait du champ cp. Ajouté à additional.fields avec la clé "cp".
eventId metadata.product_log_id ID de l'événement. Extrait du champ eventId.
eventTime, log_date metadata.event_timestamp Code temporel de l'événement. Extrait de eventTime ou analysé à partir de log_date, selon le format de journal.
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id ID de la définition de l'événement. Extrait de eventType.eventDefinition.eventDefinitionId.
eventType.eventDefinition.eventDescription metadata.description Description de l'événement. Extrait de eventType.eventDefinition.eventDescription.
eventType.eventDefinition.eventName metadata.product_event_type Nom de l'événement. Extrait de eventType.eventDefinition.eventName.
eventType.eventTypeId additional.fields ID du type d'événement. Extrait de eventType.eventTypeId. Ajouté à additional.fields avec la clé "eventTypeId".
eventType.eventTypeName additional.fields Nom du type d'événement. Extrait de eventType.eventTypeName. Ajouté à additional.fields avec la clé "eventTypeName".
format N/A Utilisé par l'analyseur pour déterminer le format du journal.
geo.asn principal.location.name Numéro de système autonome (ASN) Extrait de geo.asn ou AkamaiSiemASN, selon le format de journal. La valeur est précédée du préfixe "ASN ".
geo.city principal.location.city Ville. Extrait de geo.city ou AkamaiSiemCity, selon le format de journal.
geo.country principal.location.country_or_region Pays. Extrait de geo.country ou AkamaiSiemContinent, selon le format de journal.
httpMessage.bytes network.sent_bytes Octets envoyés dans le message HTTP. Extrait de httpMessage.bytes.
httpMessage.host target.hostname, target.asset.hostname Nom d'hôte. Extrait de httpMessage.host ou reqHost, selon le format de journal.
httpMessage.method network.http.method Méthode HTTP. Extrait de httpMessage.method, network_http_method ou reqMethod, selon le format de journal. Converti en majuscules.
httpMessage.path target.url Chemin de la requête. Extrait de httpMessage.path, target_url ou reqPath, selon le format de journal. Si httpMessage.query est présent, il est ajouté au chemin d'accès avec un séparateur "?".
httpMessage.port target.port Port. Extrait de httpMessage.port ou reqPort, selon le format de journal.
httpMessage.protocol N/A Utilisé par l'analyseur pour déterminer le protocole.
httpMessage.query N/A Utilisé dans la logique de l'analyseur pour ajouter à httpMessage.path, le cas échéant.
httpMessage.requestId network.session_id Numéro de demande. Extrait de httpMessage.requestId ou reqId, selon le format de journal.
httpMessage.requestHeaders, AkamaiSiemRequestHeaders additional.fields En-têtes de requête. Extrait de httpMessage.requestHeaders ou AkamaiSiemRequestHeaders, selon le format de journal. Ajouté à additional.fields avec la clé "AkamaiSiemRequestHeaders".
httpMessage.responseHeaders, AkamaiSiemResponseHeaders additional.fields En-têtes de réponse. Extrait de httpMessage.responseHeaders ou AkamaiSiemResponseHeaders, selon le format de journal. Ajouté à additional.fields avec la clé "AkamaiSiemResponseHeaders".
httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code, statusCode network.http.response_code Code de réponse HTTP. Extrait de httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code ou statusCode, selon le format de journal.
httpMessage.tls, AkamaiSiemTLSVersion, tlsVersion network.tls.version Version TLS. Extrait de httpMessage.tls, AkamaiSiemTLSVersion ou tlsVersion, selon le format de journal.
httpMessage.useragent, network_http_user_agent, UA, useragent network.http.user_agent User-agent. Extrait de httpMessage.useragent, network_http_user_agent, UA ou useragent, selon le format de journal.
log_description metadata.description Description du journal. Extrait de log_description.
log_rule security_result.rule_name Règle de journalisation. Extrait de log_rule.
message N/A Message de journal brut. Utilisé par l'analyseur pour diverses extractions.
network_http_referral_url network.http.referral_url URL de provenance HTTP. Extrait de network_http_referral_url.
proto N/A Utilisé dans la logique de l'analyseur pour renseigner security_result.summary si attackData.policyId n'est pas présent.
reqHost target.hostname, target.asset.hostname Demander un hôte. Extrait de reqHost.
reqId metadata.product_log_id, network.session_id Numéro de demande. Extrait de reqId.
reqMethod network.http.method Méthode de requête. Extrait de reqMethod.
reqPath target.url Chemin de la requête. Extrait de reqPath.
reqPort target.port Port de requête. Extrait de reqPort.
rspContentType target.file.mime_type Type de contenu de la réponse. Extrait de rspContentType.
securityRules security_result.rule_name, security_result.about.resource.attribute.labels Règles de sécurité. Extrait de securityRules. La première partie est mappée sur rule_name, et le reste est ajouté en tant que libellés avec les clés "non_deny_rules" et "deny_rule_format".
statusCode network.http.response_code Code d'état. Extrait de statusCode.
state principal.location.state, target.user.personal_address.state État. Extrait de state.
tlsVersion network.tls.version Version TLS. Extrait de tlsVersion.
type metadata.product_event_type Type d'événement. Extrait de type.
UA network.http.user_agent User-agent. Extrait de UA.
version metadata.product_version, principal.asset.software.version Version. Extrait de version.
N/A metadata.event_timestamp L'horodatage de l'événement est dérivé du champ _ts dans les journaux akamai_lds, du champ httpMessage.start dans les journaux akamai_siem ou du champ log_date dans d'autres formats.
N/A metadata.vendor_name Code codé en dur sur "Akamai".
N/A metadata.product_name Code codé en dur sur "Kona".
N/A metadata.log_type Code codé en dur sur "AKAMAI_WAF".
N/A network.application_protocol Définissez cette valeur sur "HTTP" pour les journaux akamai_siem et akamai_lds, ou sur "DNS" pour les autres formats.
N/A security_result.severity Définissez la valeur sur "MOYENNE" pour l'action "alert" (Alerte), sur "CRITIQUE" pour l'action "deny" (Refuser) et sur "ÉLEVÉE" pour les autres actions.
N/A event.idm.read_only_udm.metadata.event_type Définissez cette valeur sur "NETWORK_HTTP" pour la plupart des formats de journaux, sur "GENERIC_EVENT" pour les événements avec des champs eventId ou eventData, ou sur "STATUS_UPDATE" pour les événements avec des champs cli_ip ou p_ip, mais sans reqHost.

Modifications

2024-05-21

  • Amélioration
  • Mappage de "rules.data" sur "security_result.detection_fields".
  • Mappage de "rules.action", "rules.selector" et "rules.version" sur "security_result.action_details".
  • "rules.id" a été mappé sur "security_result.rule_id",
  • Mappage de "rules.tag" sur "security_result.category_details".
  • Mappage de "rules.message" sur "security_result.threat_name".

2024-03-01

  • Amélioration
  • Mappage de "attackData.configId" sur "metadata.product_log_id" et "security_result.detection_fields".

2023-10-27

  • Amélioration
  • Mappage de "rule.id" sur "security_result.rule_id".
  • Lorsque "httpMessage.host" n'est pas présent, la valeur définie dans "metadata.event_type" est passée de "NETWORK_HTTP" à "GENERIC_EVENT".
  • Ajout de la possibilité d'analyser "attackData" lorsque "attackData.rules" est un tableau.

2023-04-24

  • Amélioration
  • Journaux analysés ingérés au format CEF.

2023-04-04

  • Amélioration
  • Mappage de "reqHost" sur "target.hostname".
  • Mappage de "reqPort" sur "target.port".
  • Mappage de "reqPath" sur "target.url".
  • Mappage de "reqId" sur "network.session_id".
  • Mappage de "statusCode" sur "network.http.response_code".
  • Mappage de "reqMethod" sur "network.http.method".
  • Mappage de "UA" sur "network.http.user_agent".
  • Mappage de "octets" sur "network.sent_bytes".
  • Mappage de "reqMethod" sur "network.http.method".
  • Analyse des journaux d'erreur au format syslog.
  • Ajout de vérifications de conditions pour "attackData.rules" afin d'assurer une analyse correcte.
  • Dans la mesure du possible, la valeur "metadata.event_type" a été modifiée de "STATUS_UPDATE" à "NETWORK_HTTP".

2022-08-12

  • Amélioration
  • "security_policy_id" a été mappé sur security_result.rule_name.
  • "non_deny_rules" a été mappé sur security_result.about.resource.attribute.labels.
  • "deny_rule_format" a été mappé sur security_result.about.resource.attribute.labels.

2022-11-07

  • Amélioration
  • Mise à jour de SecurityRules pour vérifier ["-"] également dans les données.

2022-06-14

  • Amélioration
  • Mappage de security_rules sur security_result.rule_name.
  • Ville mappée sur principal.location.city.
  • Pays mappé sur principal.location.country_or_region.
  • Mappage de cli_ip sur principal.ip.
  • État mappé sur target.user.personal_address.state.
  • Version mappée sur metadata.product_version.
  • User-agent mappé sur network.http.user_agent.

2022-06-14

  • Enhancement-
  • Mappage du proto sur security_result.summary.
  • Mappage de securityRules sur security_result.rule_name.
  • Ville mappée sur principal.location.city.
  • Pays mappé sur principal.location.country_or_region.
  • Mappage de cliIP sur principal.ip.
  • Mappage du cp sur event.idm.read_only_udm.additional.fields.
  • Mise en correspondance de reqId avec metadata.product_log_id.
  • Mappage de rspContentType sur target.file.mime_type.
  • État mappé sur target.user.personal_address.state.
  • Version mappée sur principal.asset.software.version.

2022-03-23

  • Correction de bug : correction de l'échec de l'analyse des données avec tous les modèles de correspondance.
  • Ajout de mises en correspondance pour les nouveaux champs.
  • eventId mappé sur metadata.product_log_id.
  • eventDefinitionId mappé sur target.resource.product_object_id.
  • eventDescription mappé sur metadata.description.
  • eventName mappé sur metadata.product_event_type.
  • eventTypeName mappé sur additional.fields.
  • eventTypeId mappé sur additional.fields.
  • eventData mappé sur additional.fields.