Recolha registos do WAF da Akamai

Compatível com:

Este documento explica como exportar e carregar registos do WAF da Akamai para o Google Security Operations através do Google Cloud armazenamento ou do AWS S3. O analisador processa os registos, suportando os formatos syslog e CEF. Extrai campos como endereços IP, URLs, métodos HTTP, códigos de resposta, agentes do utilizador e informações de regras de segurança, mapeando-os para o modelo de dados unificado (UDM) para uma representação consistente. O analisador também processa campos específicos da Akamai, como attackData e clientReputation, realizando as transformações de dados necessárias e enriquecendo a saída do UDM.

Antes de começar

Certifique-se de que tem os seguintes pré-requisitos:

  • Instância do Google SecOps
  • Acesso privilegiado ao Google Cloud ou à AWS
  • Acesso privilegiado à Akamai

Exportar e carregar registos do WAF da Akamai a partir do Cloud Storage

Esta secção descreve o passo inicial do processo: configurar o armazenamento necessário para os registos da WAF da Akamai.

Crie um Google Cloud contentor de armazenamento

  1. Inicie sessão na Google Cloud consola.
  2. Aceda à página Contentores do Cloud Storage.

    Aceda aos contentores

  3. Clique em Criar.

  4. Na página Criar um contentor, introduza as informações do contentor. Após cada um dos passos seguintes, clique em Continuar para avançar para o passo seguinte:

    1. Na secção Começar, faça o seguinte:

      • Introduza um nome único que cumpra os requisitos do nome do contentor (por exemplo, akamai-waf-logs).
      • Para ativar o espaço de nomes hierárquico, clique na seta de expansão para expandir a secção Otimizar para cargas de trabalho orientadas para ficheiros e com grande volume de dados e, de seguida, selecione Ativar espaço de nomes hierárquico neste contentor.
      • Para adicionar uma etiqueta de grupo, clique na seta de expansão para expandir a secção Etiquetas.
      • Clique em Adicionar etiqueta e especifique uma chave e um valor para a etiqueta.
    2. Na secção Escolha onde quer armazenar os seus dados, faça o seguinte:

      • Selecione um Tipo de localização.
      • Use o menu pendente do tipo de localização para selecionar uma Localização onde os dados de objetos no seu contentor vão ser armazenados permanentemente.
      • Para configurar a replicação entre contentores, expanda a secção Configurar replicação entre contentores.
    3. Na secção Escolha uma classe de armazenamento para os seus dados, selecione uma classe de armazenamento predefinida para o contentor ou selecione Autoclass para a gestão automática da classe de armazenamento dos dados do seu contentor.

    4. Na secção Escolha como controlar o acesso a objetos, selecione não para aplicar a prevenção de acesso público e selecione um modelo de controlo de acesso para os objetos do seu contentor.

    5. Na secção Escolha como proteger os dados de objetos, faça o seguinte:

      • Selecione qualquer uma das opções em Proteção de dados que quer definir para o seu contentor.
      • Para escolher como os dados de objetos vão ser encriptados, clique na seta de expansão com a etiqueta Encriptação de dados e selecione um Método de encriptação de dados.
  5. Clique em Criar.

Configure autorizações para o Cloud Storage

  1. Aceda à página Criar conta de serviço.

    Aceda a Criar conta de serviço

  2. Selecione um projeto do Google Cloud.

  3. Introduza um nome da conta de serviço a apresentar na Google Cloud consola.

  4. Clique em Criar e continuar.

  5. Conceda a função roles/storage.admin no contentor.

  6. Clique em Concluído para terminar de criar a conta de serviço.

Crie e transfira o Google Cloud ficheiro de chave da conta de serviço

  1. Aceda à página Contas de serviço.

    Aceda a Contas de serviço

  2. Selecione um projeto Google Cloud.

  3. Clique no endereço de email da conta de serviço recém-criada.

  4. Clique no separador Chaves.

  5. Clique no menu Adicionar chave e, de seguida, selecione Criar nova chave.

  6. Selecione JSON como o tipo de chave e clique em Criar.

    • Se clicar em Criar, transfere um ficheiro de chave da conta de serviço. Depois de transferir o ficheiro de chave, não o pode transferir novamente.
    • A chave transferida tem o seguinte formato, em que PRIVATE_KEY é a parte privada do par de chaves pública/privada.

Configure o WAF da Akamai para enviar registos para o Cloud Storage

  1. Inicie sessão no Akamai Control Center.
  2. Aceda à secção Segurança.
  3. Selecione Registos.
  4. Configure um novo envio de registos:
    • Origem do registo: selecione a configuração da WAF.
    • Destino: selecione Google Cloud Storage.
    • Nome a apresentar: introduza uma descrição do nome exclusivo.
    • Contentor: especifique o nome do contentor do Cloud Storage que criou (por exemplo, gs://akamai-waf-logs).
    • ID do projeto: introduza o ID exclusivo do seu Google Cloud projeto.
    • Nome da conta de serviço: introduza o nome da conta de serviço que criou anteriormente.
    • Chave privada: introduza o valor private_key da chave JSON que gerou e transferiu anteriormente. (Deve introduzir a chave privada no formato PEM com símbolos de quebra (\n), por exemplo, -----BEGIN PRIVATE KEY-----\nprivate_key\n-----END PRIVATE KEY-----\n)
    • Formato do registo: escolha o formato do registo pretendido (por exemplo, JSON).
    • Frequência de envio: selecione a frequência pretendida para a entrega de registos (por exemplo, every 60 seconds).
  5. Clique em Validar e guardar para validar a ligação ao destino e guardar os detalhes que indicou.

  6. Clique em Seguinte para aceder ao separador Resumo.

Configure feeds

Para configurar um feed, siga estes passos:

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na página seguinte, clique em Configurar um único feed.
  4. No campo Nome do feed, introduza um nome para o feed (por exemplo, Registos da WAF da Akamai).
  5. Selecione Google Cloud Storage como o Tipo de origem.
  6. Selecione Akamai WAF como o Tipo de registo.
  7. Clique em Obter conta de serviço como a conta de serviço do Chronicle.
  8. Clicar em Seguinte.
  9. Especifique valores para os seguintes parâmetros de entrada:

    • URI do contentor de armazenamento: Google Cloud URL do contentor de armazenamento (por exemplo, gs://akamai-waf-logs).
    • O URI é um: selecione Diretório que inclui subdiretórios.
    • Opções de eliminação de origens: selecione a opção de eliminação de acordo com a sua preferência.
  10. Clicar em Seguinte.

  11. Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

Exporte e carregue registos do WAF da Akamai a partir do AWS S3

Esta secção explica os passos iniciais da configuração do seu contentor do Amazon S3 para receber e armazenar registos do Akamai WAF.

Configure o contentor do Amazon S3

  1. Crie um contentor do Amazon S3 seguindo este manual do utilizador: Criar um contentor.
  2. Guarde o Nome e a Região do contentor para referência futura.
  3. Crie um utilizador seguindo este guia do utilizador: criar um utilizador do IAM.
  4. Selecione o utilizador criado.
  5. Selecione o separador Credenciais de segurança.
  6. Clique em Criar chave de acesso na secção Chaves de acesso.
  7. Selecione Serviço de terceiros como Exemplo de utilização.
  8. Clicar em Seguinte.
  9. Opcional: adicione a etiqueta de descrição.
  10. Clique em Criar chave de acesso.
  11. Clique em Transferir ficheiro CSV para guardar a chave de acesso e a chave de acesso secreta para referência futura.
  12. Clique em Concluído.
  13. Selecione o separador Autorizações.
  14. Clique em Adicionar autorizações na secção Políticas de autorizações.
  15. Selecione Adicionar autorizações.
  16. Selecione Anexar políticas diretamente.
  17. Pesquise a política AmazonS3FullAccess.
  18. Selecione a política.
  19. Clicar em Seguinte.
  20. Clique em Adicionar autorizações.

Configure o Akamai WAF para enviar registos para o Amazon S3

  1. Inicie sessão no Akamai Control Center.
  2. Aceda à secção Segurança.
  3. Selecione Registos.
  4. Configure uma nova entrega de registos:

    • Origem do registo: selecione a configuração da WAF.
    • Destino: escolha Amazon S3.
    • Contentor do S3: especifique o nome do contentor do S3 que criou.
    • Região: selecione a região da AWS onde se encontra o seu contentor do S3.
    • ID da chave de acesso e chave de acesso secreta: faculte as credenciais que gerou.
    • Formato do registo: escolha o formato do registo pretendido (por exemplo, JSON).
    • Frequência de entrega: selecione a frequência pretendida para a entrega de registos (por exemplo, a cada 5 minutos).

  5. Valide a entrega de registos:

    • Após configurar o LDS, monitorize o contentor S3 para ficheiros de registo recebidos.

Configure feeds a partir de Definições de SIEM > Feeds através do AWS S3

Para configurar um feed, siga estes passos:

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na página seguinte, clique em Configurar um único feed.
  4. No campo Nome do feed, introduza um nome para o feed (por exemplo, Registos da WAF da Akamai).
  5. Selecione Amazon S3 como o Tipo de origem.
  6. Selecione Akamai WAF como o Tipo de registo.
  7. Clicar em Seguinte.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • Região: a região onde o contentor do Amazon S3 está localizado.
    • URI do S3: o URI do contentor. s3:/BUCKET_NAME Substitua o seguinte:
      • BUCKET_NAME: o nome do segmento.
    • URI is a: selecione URI TYPE de acordo com a configuração da stream de registos: Single file | Directory | Directory which includes subdirectories.
    • Opções de eliminação de origens: selecione a opção de eliminação de acordo com a sua preferência.
    • ID da chave de acesso: a chave de acesso do utilizador com acesso ao contentor do S3.
    • Chave de acesso secreta: a chave secreta do utilizador com acesso ao contentor do S3.
  9. Clicar em Seguinte.

  10. Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

Tabela de mapeamento do UDM

Campo de registo (ascendente) Mapeamento de UDM Lógica
attackData.clientIP principal.ip, principal.asset.ip Endereço IP do cliente que inicia o pedido. Extraído do campo attackData.clientIP nos registos akamai_siem.
attackData.configId metadata.product_log_id ID de configuração de segurança. Extraído do campo attackData.configId nos registos akamai_siem. Também adicionado como detection_field no objeto security_result.
attackData.policyId N/A Usado na lógica do analisador para preencher security_result.summary com o valor PolicyId:[value].
attackData.ruleActions security_result.action, security_result.action_details Ações realizadas com base na regra acionada. Extraído do campo attackData.ruleActions nos registos akamai_siem. "deny" é mapeado para BLOCK. Os outros valores ("alert", "monitor", "allow", "tarpit") são mapeados para ALLOW. O valor original também é armazenado em action_details.
attackData.ruleData security_result.detection_fields Dados associados à regra acionada. Extraído do campo attackData.ruleData nos registos akamai_siem. Foi adicionado a security_result.detection_fields com a chave "RuleData".
attackData.ruleMessages security_result.threat_name Mensagens associadas à regra acionada. Extraído do campo attackData.ruleMessages nos registos akamai_siem.
attackData.ruleSelectors security_result.detection_fields Seletores associados à regra acionada. Extraído do campo attackData.ruleSelectors nos registos akamai_siem. Foi adicionado a security_result.detection_fields com a chave "RuleSelector".
attackData.ruleTags security_result.category_details Etiquetas associadas à regra acionada. Extraído do campo attackData.ruleTags nos registos akamai_siem.
attackData.ruleVersions security_result.detection_fields Versões das regras acionadas. Extraído do campo attackData.ruleVersions nos registos akamai_siem. Adicionado a security_result.detection_fields com a chave "Rule Version".
clientReputation principal.labels Informações de reputação do cliente. Extraído do campo clientReputation nos registos akamai_siem. Adicionado como uma etiqueta ao principal com a chave "reputation".
cliIP, cli_ip, principal_ip principal.ip, principal.asset.ip Endereço IP do cliente. Extraído de cliIP, cli_ip ou principal_ip, consoante o formato do registo.
cp additional.fields Código de CP. Extraído do campo cp. Adicionado a additional.fields com a chave "cp".
eventId metadata.product_log_id ID do evento. Extraído do campo eventId.
eventTime, log_date metadata.event_timestamp Data/hora do evento. Extraído de eventTime ou analisado a partir de log_date, consoante o formato do registo.
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id ID da definição do evento. Extraído de eventType.eventDefinition.eventDefinitionId.
eventType.eventDefinition.eventDescription metadata.description Descrição do evento. Extraído de eventType.eventDefinition.eventDescription.
eventType.eventDefinition.eventName metadata.product_event_type Nome do evento. Extraído de eventType.eventDefinition.eventName.
eventType.eventTypeId additional.fields ID do tipo de evento. Extraído de eventType.eventTypeId. Adicionado a additional.fields com a chave "eventTypeId".
eventType.eventTypeName additional.fields Nome do tipo de evento. Extraído de eventType.eventTypeName. Adicionado a additional.fields com a chave "eventTypeName".
format N/A Usado pelo analisador para determinar o formato do registo.
geo.asn principal.location.name Número do sistema autónomo (ASN). Extraído de geo.asn ou AkamaiSiemASN, consoante o formato do registo. O valor tem o prefixo "ASN ".
geo.city principal.location.city Cidade. Extraído de geo.city ou AkamaiSiemCity, consoante o formato do registo.
geo.country principal.location.country_or_region País. Extraído de geo.country ou AkamaiSiemContinent, consoante o formato do registo.
httpMessage.bytes network.sent_bytes Bytes enviados na mensagem HTTP. Extraído de httpMessage.bytes.
httpMessage.host target.hostname, target.asset.hostname Nome do anfitrião. Extraído de httpMessage.host ou reqHost, consoante o formato do registo.
httpMessage.method network.http.method Método HTTP. Extraído de httpMessage.method, network_http_method ou reqMethod, consoante o formato do registo. Convertido em maiúsculas.
httpMessage.path target.url Caminho do pedido. Extraído de httpMessage.path, target_url ou reqPath, consoante o formato do registo. Se httpMessage.query estiver presente, é anexado ao caminho com um separador "?".
httpMessage.port target.port Port. Extraído de httpMessage.port ou reqPort, consoante o formato do registo.
httpMessage.protocol N/A Usado pelo analisador para determinar o protocolo.
httpMessage.query N/A Usado na lógica do analisador para anexar a httpMessage.path, se estiver presente.
httpMessage.requestId network.session_id ID do pedido. Extraído de httpMessage.requestId ou reqId, consoante o formato do registo.
httpMessage.requestHeaders, AkamaiSiemRequestHeaders additional.fields Cabeçalhos dos pedidos. Extraído de httpMessage.requestHeaders ou AkamaiSiemRequestHeaders, consoante o formato do registo. Adicionado a additional.fields com a chave "AkamaiSiemRequestHeaders".
httpMessage.responseHeaders, AkamaiSiemResponseHeaders additional.fields Cabeçalhos das respostas. Extraído de httpMessage.responseHeaders ou AkamaiSiemResponseHeaders, consoante o formato do registo. Adicionado a additional.fields com a chave "AkamaiSiemResponseHeaders".
httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code, statusCode network.http.response_code Código da resposta HTTP. Extraído de httpMessage.status ou AkamaiSiemResponseStatus ou network_http_response_code ou statusCode, consoante o formato do registo.
httpMessage.tls, AkamaiSiemTLSVersion, tlsVersion network.tls.version Versão de TLS. Extraído de httpMessage.tls, AkamaiSiemTLSVersion ou tlsVersion, consoante o formato do registo.
httpMessage.useragent, network_http_user_agent, UA, useragent network.http.user_agent Agente do utilizador. Extraído de httpMessage.useragent ou network_http_user_agent ou UA ou useragent, consoante o formato do registo.
log_description metadata.description Descrição do registo. Extraído de log_description.
log_rule security_result.rule_name Regra de registo. Extraído de log_rule.
message N/A A mensagem de registo não processada. Usado pelo analisador para várias extrações.
network_http_referral_url network.http.referral_url URL de referência HTTP. Extraído de network_http_referral_url.
proto N/A Usado na lógica do analisador para preencher security_result.summary se attackData.policyId não estiver presente.
reqHost target.hostname, target.asset.hostname Pedir anfitrião. Extraído de reqHost.
reqId metadata.product_log_id, network.session_id ID do pedido. Extraído de reqId.
reqMethod network.http.method Método de pedido. Extraído de reqMethod.
reqPath target.url Caminho do pedido. Extraído de reqPath.
reqPort target.port Peça a portabilidade. Extraído de reqPort.
rspContentType target.file.mime_type Tipo de conteúdo da resposta. Extraído de rspContentType.
securityRules security_result.rule_name, security_result.about.resource.attribute.labels Regras de segurança. Extraído de securityRules. A primeira parte é mapeada para rule_name e o resto é adicionado como etiquetas com as chaves "non_deny_rules" e "deny_rule_format".
statusCode network.http.response_code Código de estado. Extraído de statusCode.
state principal.location.state, target.user.personal_address.state Estado. Extraído de state.
tlsVersion network.tls.version Versão de TLS. Extraído de tlsVersion.
type metadata.product_event_type Tipo de evento. Extraído de type.
UA network.http.user_agent Agente do utilizador. Extraído de UA.
version metadata.product_version, principal.asset.software.version Versão. Extraído de version.
N/A metadata.event_timestamp A data/hora do evento é derivada do campo _ts nos registos akamai_lds, do campo httpMessage.start nos registos akamai_siem ou do campo log_date noutros formatos.
N/A metadata.vendor_name Codificado de forma rígida para "Akamai".
N/A metadata.product_name Codificado de forma rígida para "Kona".
N/A metadata.log_type Codificado de forma rígida para "AKAMAI_WAF".
N/A network.application_protocol Definido como "HTTP" para registos akamai_siem e akamai_lds, ou "DNS" para outros formatos.
N/A security_result.severity Defina como MÉDIO para a ação "alerta", CRÍTICO para a ação "recusar" e ALTO para outras ações.
N/A event.idm.read_only_udm.metadata.event_type Definido como "NETWORK_HTTP" para a maioria dos formatos de registo, "GENERIC_EVENT" para eventos com campos eventId ou eventData, ou "STATUS_UPDATE" para eventos com cli_ip ou p_ip, mas sem reqHost.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.