Coletar registros do WAF da Akamai

Compatível com:

Este documento explica como exportar e ingerir registros do WAF da Akamai no Google Security Operations usando o Google Cloud Storage ou o AWS S3. O analisador processa os registros, sendo compatível com os formatos syslog e CEF. Ele extrai campos como endereços IP, URLs, métodos HTTP, códigos de resposta, user agents 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

Verifique se você tem os pré-requisitos a seguir:

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

Exportar e ingerir registros do WAF da Akamai do Cloud Storage

Esta seção descreve a etapa inicial do processo: configurar o armazenamento necessário para os registros do WAF da Akamai.

Criar um Google Cloud bucket do Storage

  1. Faça login no console do Google Cloud .
  2. Acesse a página Buckets do Cloud Storage.

    Acessar buckets

  3. Clique em Criar.

  4. Na página "Criar um bucket", insira as informações do bucket. Após cada uma das etapas a seguir, clique em Continuar para prosseguir para a próxima etapa:

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

      • Insira um nome exclusivo que atenda aos requisitos de nome de bucket (por exemplo, akamai-waf-logs).
      • Para ativar o namespace hierárquico, clique na seta de expansão para abrir a seção Otimizar para cargas de trabalho orientadas a arquivos e com uso intensivo de dados e selecione Ativar namespace hierárquico neste bucket.
      • Para adicionar um rótulo de bucket, clique na seta de expansão para abrir a seção Rótulos.
      • Clique em Adicionar rótulo e especifique uma chave e um valor para o rótulo.
    2. Na seção Escolha onde armazenar seus dados, faça o seguinte:

      • Selecione um tipo de local.
      • Use o menu suspenso do tipo de local para selecionar um Local em que os dados de objetos no bucket serão armazenados permanentemente.
      • Para configurar a replicação entre buckets, abra a seção Configurar a replicação entre buckets.
    3. Na seção Escolha uma classe de armazenamento para seus dados, selecione uma classe de armazenamento padrão para o bucket ou selecione Classe automática para gerenciamento automático da classe de armazenamento dos dados do bucket.

    4. Na seçã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 controle de acesso para os objetos do bucket.

    5. Na seção Escolha como proteger os dados do objeto, faça o seguinte:

      • Selecione qualquer uma das opções em Proteção de dados que você quer definir para o bucket.
      • Para escolher como os dados do objeto serão criptografados, clique na seta de expansão identificada como Criptografia de dados e selecione um Método de criptografia de dados.
  5. Clique em Criar.

Configurar permissões do Cloud Storage

  1. Acesse a página Criar conta de serviço.

    Acesse "Criar conta de serviço"

  2. Selecione um projeto do Google Cloud.

  3. Insira um nome de conta de serviço a ser exibido no console Google Cloud .

  4. Clique em Criar e continuar.

  5. Conceda o papel roles/storage.admin no bucket.

  6. Clique em Concluído para terminar a criação da conta de serviço.

Criar e fazer o download do arquivo de chave da conta de serviço Google Cloud

  1. Acesse a página Contas de serviço.

    Acesse as Contas de serviço

  2. Selecione um projeto do Google Cloud.

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

  4. Clique na guia Chaves.

  5. Clique no menu Adicionar chave e selecione Criar nova chave.

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

    • Clique em Criar para fazer o download do arquivo de chave da conta de serviço. Depois de baixar o arquivo de chave, não é possível fazer o download dele novamente.
    • A chave salva tem o formato a seguir, em que PRIVATE_KEY é a parte privada do par de chaves pública/privada.

Configurar o WAF da Akamai para enviar registros ao Cloud Storage

  1. Faça login no Akamai Control Center.
  2. Acesse a seção Segurança.
  3. Selecione Registros.
  4. Configure uma nova entrega de registros:
    • Origem do registro:selecione sua configuração de WAF.
    • Destino:selecione Google Cloud Storage.
    • Nome de exibição: insira uma descrição de nome exclusiva.
    • Bucket:especifique o nome do bucket do Cloud Storage criado (por exemplo, gs://akamai-waf-logs).
    • ID do projeto:insira o ID exclusivo do seu projeto do Google Cloud .
    • Nome da conta de serviço: insira o nome da conta de serviço que você criou anteriormente.
    • Chave privada:insira o valor private_key da chave JSON que você gerou e baixou anteriormente. Insira sua 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 registro:escolha o formato de registro que você quer (por exemplo, JSON).
    • Frequência de push:selecione a frequência desejada para a entrega de registros (por exemplo, every 60 seconds).
  5. Clique em Validar e salvar para validar a conexão com o destino e salvar os detalhes fornecidos.

  6. Clique em Próxima para acessar a guia Resumo.

Configurar feeds

Há dois pontos de entrada diferentes para configurar feeds na plataforma do Google SecOps:

  • Configurações do SIEM > Feeds
  • Central de conteúdo > Pacotes de conteúdo

"Feeds" usando o Google Cloud Storage" id="create-feed-google-secops" tabindex="-1">Configure feeds em "Configurações do SIEM > Feeds" usando o Google Cloud Storage.

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do WAF da Akamai).
  5. Selecione Google Cloud Storage como o Tipo de origem.
  6. Selecione WAF da Akamai como o Tipo de registro.
  7. Clique em Receber conta de serviço como a Conta de serviço do Chronicle.
  8. Clique em Próxima.
  9. Especifique valores para os seguintes parâmetros de entrada:

    • URI do bucket de armazenamento: Google Cloud URL do bucket de armazenamento (por exemplo, gs://akamai-waf-logs).
    • URI Is A: selecione Directory which includes subdirectories.
    • Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
  10. Clique em Próxima.

  11. Revise a nova configuração do feed na tela "Finalizar" e clique em Enviar.

Configurar feeds na Central de conteúdo

Especifique valores para os seguintes campos:

  • URI do bucket de armazenamento: Google Cloud URL do bucket de armazenamento (por exemplo, gs://akamai-waf-logs).
  • URI Is A: selecione Directory which includes subdirectories.
  • Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.

Opções avançadas

  • Nome do feed: um valor pré-preenchido que identifica o feed.
  • Tipo de origem: método usado para coletar registros no Google SecOps.
  • Namespace do recurso: namespace associado ao feed.
  • Rótulos de ingestão: rótulos aplicados a todos os eventos deste feed.

Exportar e ingerir registros do WAF da Akamai do AWS S3

Nesta seção, explicamos as etapas iniciais de configuração do bucket do Amazon S3 para receber e armazenar registros do WAF da Akamai.

Configurar o bucket do Amazon S3

  1. Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket.
  2. Salve o Nome e a Região do bucket para referência futura.
  3. Crie um usuário seguindo este guia: Como criar um usuário do IAM.
  4. Selecione o usuário criado.
  5. Selecione a guia Credenciais de segurança.
  6. Clique em Criar chave de acesso na seção Chaves de acesso.
  7. Selecione Serviço de terceiros como Caso de uso.
  8. Clique em Próxima.
  9. Opcional: adicione uma tag de descrição.
  10. Clique em Criar chave de acesso.
  11. Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para referência futura.
  12. Clique em Concluído.
  13. Selecione a guia Permissões.
  14. Clique em Adicionar permissões na seção Políticas de permissões.
  15. Selecione Adicionar permissões.
  16. Selecione Anexar políticas diretamente.
  17. Pesquise a política AmazonS3FullAccess.
  18. Selecione a política.
  19. Clique em Próxima.
  20. Clique em Adicionar permissões

Configurar o WAF da Akamai para enviar registros ao Amazon S3

  1. Faça login no Akamai Control Center.
  2. Acesse a seção Segurança.
  3. Selecione Registros.
  4. Configure uma nova entrega de registros:

    • Origem do registro:selecione sua configuração de WAF.
    • Destino:escolha Amazon S3.
    • Bucket do S3:especifique o nome do bucket do S3 que você criou.
    • Região:selecione a região da AWS em que o bucket do S3 está localizado.
    • ID da chave de acesso e chave de acesso secreta:forneça as credenciais geradas.
    • Formato do registro:escolha o formato de registro que você quer (por exemplo, JSON).
    • Frequência de entrega:selecione a frequência desejada para a entrega de registros (por exemplo, a cada 5 minutos).

  5. Verifique a entrega de registros:

    • Depois de configurar o LDS, monitore o bucket do S3 para arquivos de registro recebidos.

Configurar feeds em "Configurações da SIEM" > "Feeds" usando o AWS S3

Para configurar um feed, siga estas etapas:

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo feed.
  3. Na próxima página, clique em Configurar um único feed.
  4. No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do WAF da Akamai).
  5. Selecione Amazon S3 como o Tipo de origem.
  6. Selecione WAF da Akamai como o Tipo de registro.
  7. Clique em Próxima.
  8. Especifique valores para os seguintes parâmetros de entrada:

    • Região: a região em que o bucket do Amazon S3 está localizado.
    • URI do S3: o URI do bucket. s3:/BUCKET_NAME Substitua:
      • BUCKET_NAME: o nome do bucket
    • O URI é um: selecione o TIPO DE URI de acordo com a configuração do fluxo de registros: Arquivo único | Diretório | Diretório que inclui subdiretórios.
    • Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.
    • ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.
    • Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.
  9. Clique em Próxima.

  10. Revise a nova configuração do feed na tela "Finalizar" e clique em Enviar.

Tabela de mapeamento da UDM

Campo de registro (crescente) Mapeamento do UDM Lógica
attackData.clientIP principal.ip, principal.asset.ip Endereço IP do cliente que iniciou a solicitação. Extraído do campo attackData.clientIP nos registros do akamai_siem.
attackData.configId metadata.product_log_id ID da configuração de segurança. Extraído do campo attackData.configId nos registros do akamai_siem. Também adicionado como um "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 tomadas com base na regra acionada. Extraído do campo attackData.ruleActions nos registros do akamai_siem. "deny" é mapeado para BLOCK, e 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 registros do akamai_siem. 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 registros do akamai_siem.
attackData.ruleSelectors security_result.detection_fields Seletores associados à regra acionada. Extraído do campo attackData.ruleSelectors nos registros do akamai_siem. Adicionado a security_result.detection_fields com a chave "RuleSelector".
attackData.ruleTags security_result.category_details Tags associadas à regra acionada. Extraído do campo attackData.ruleTags nos registros do akamai_siem.
attackData.ruleVersions security_result.detection_fields Versões das regras acionadas. Extraído do campo attackData.ruleVersions nos registros do akamai_siem. Adicionado a security_result.detection_fields com a chave "Versão da regra".
clientReputation principal.labels Informações de reputação do cliente. Extraído do campo clientReputation nos registros do akamai_siem. Adicionado como um rótulo 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, dependendo do formato do registro.
cp additional.fields Código do 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 Carimbo de data/hora do evento. Extraído de eventTime ou analisado de log_date, dependendo do formato do registro.
eventType.eventDefinition.eventDefinitionId target.resource.product_object_id ID da definição de 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 registro.
geo.asn principal.location.name Número de sistema autônomo (ASN). Extraído de geo.asn ou AkamaiSiemASN, dependendo do formato do registro. O valor tem o prefixo "ASN ".
geo.city principal.location.city Cidade. Extraído de geo.city ou AkamaiSiemCity, dependendo do formato do registro.
geo.country principal.location.country_or_region País. Extraído de geo.country ou AkamaiSiemContinent, dependendo do formato do registro.
httpMessage.bytes network.sent_bytes Bytes enviados na mensagem HTTP. Extraído de httpMessage.bytes.
httpMessage.host target.hostname, target.asset.hostname Nome do host. Extraído de httpMessage.host ou reqHost, dependendo do formato do registro.
httpMessage.method network.http.method Método HTTP. Extraído de httpMessage.method, network_http_method ou reqMethod, dependendo do formato do registro. Convertido para maiúsculas.
httpMessage.path target.url Caminho da solicitação. Extraído de httpMessage.path, target_url ou reqPath, dependendo do formato do registro. Se httpMessage.query estiver presente, ele será anexado ao caminho com um separador "?".
httpMessage.port target.port Porta. Extraído de httpMessage.port ou reqPort, dependendo do formato do registro.
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 presente.
httpMessage.requestId network.session_id ID da solicitação. Extraído de httpMessage.requestId ou reqId, dependendo do formato do registro.
httpMessage.requestHeaders, AkamaiSiemRequestHeaders additional.fields Cabeçalhos de solicitação. Extraído de httpMessage.requestHeaders ou AkamaiSiemRequestHeaders, dependendo do formato do registro. Adicionado a additional.fields com a chave "AkamaiSiemRequestHeaders".
httpMessage.responseHeaders, AkamaiSiemResponseHeaders additional.fields Cabeçalhos de resposta. Extraído de httpMessage.responseHeaders ou AkamaiSiemResponseHeaders, dependendo do formato do registro. Adicionado a additional.fields com a chave "AkamaiSiemResponseHeaders".
httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code, statusCode network.http.response_code Código de resposta HTTP. Extraído de httpMessage.status, AkamaiSiemResponseStatus, network_http_response_code ou statusCode, dependendo do formato do registro.
httpMessage.tls, AkamaiSiemTLSVersion, tlsVersion network.tls.version Versão do TLS. Extraído de httpMessage.tls, AkamaiSiemTLSVersion ou tlsVersion, dependendo do formato do registro.
httpMessage.useragent, network_http_user_agent, UA, useragent network.http.user_agent User agent. Extraído de httpMessage.useragent, network_http_user_agent, UA ou useragent, dependendo do formato do registro.
log_description metadata.description Descrição do registro. Extraído de log_description.
log_rule security_result.rule_name Regra de registro. Extraído de log_rule.
message N/A A mensagem de registro bruta. 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 Solicitar host. Extraído de reqHost.
reqId metadata.product_log_id, network.session_id ID da solicitação. Extraído de reqId.
reqMethod network.http.method Método de solicitação. Extraído de reqMethod.
reqPath target.url Caminho da solicitação. Extraído de reqPath.
reqPort target.port Solicitar 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 restante é adicionado como rótulos com as chaves "non_deny_rules" e "deny_rule_format".
statusCode network.http.response_code Código de status. Extraído de statusCode.
state principal.location.state, target.user.personal_address.state Estado. Extraído de state.
tlsVersion network.tls.version Versão do TLS. Extraído de tlsVersion.
type metadata.product_event_type Tipo de evento. Extraído de type.
UA network.http.user_agent User agent. Extraído de UA.
version metadata.product_version, principal.asset.software.version Versão. Extraído de version.
N/A metadata.event_timestamp O carimbo de data/hora do evento é derivado do campo _ts nos registros do akamai_lds, do campo httpMessage.start nos registros do akamai_siem ou do campo log_date em outros formatos.
N/A metadata.vendor_name Codificado como "Akamai".
N/A metadata.product_name Codificado como "Kona".
N/A metadata.log_type Codificado como "AKAMAI_WAF".
N/A network.application_protocol Defina como "HTTP" para registros akamai_siem e akamai_lds ou "DNS" para outros formatos.
N/A security_result.severity Defina como "MEDIUM" para a ação "alert", "CRITICAL" para a ação "deny" e "HIGH" para outras ações.
N/A event.idm.read_only_udm.metadata.event_type Defina como "NETWORK_HTTP" para a maioria dos formatos de registro, "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 do Google SecOps.