Coletar registros do WAF da Akamai
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
- Faça login no console do Google Cloud .
Acesse a página Buckets do Cloud Storage.
Clique em Criar.
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:
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.
- Insira um nome exclusivo que atenda aos requisitos de nome de bucket (por exemplo,
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.
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.
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.
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.
Clique em Criar.
Configurar permissões do Cloud Storage
Acesse a página Criar conta de serviço.
Selecione um projeto do Google Cloud.
Insira um nome de conta de serviço a ser exibido no console Google Cloud .
Clique em Criar e continuar.
Conceda o papel roles/storage.admin no bucket.
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
Acesse a página Contas de serviço.
Selecione um projeto do Google Cloud.
Clique no endereço de e-mail da conta de serviço recém-criada.
Clique na guia Chaves.
Clique no menu Adicionar chave e selecione Criar nova chave.
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
- Faça login no Akamai Control Center.
- Acesse a seção Segurança.
- Selecione Registros.
- 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
).
Clique em Validar e salvar para validar a conexão com o destino e salvar os detalhes fornecidos.
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:
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do WAF da Akamai).
- Selecione Google Cloud Storage como o Tipo de origem.
- Selecione WAF da Akamai como o Tipo de registro.
- Clique em Receber conta de serviço como a Conta de serviço do Chronicle.
- Clique em Próxima.
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.
- URI do bucket de armazenamento: Google Cloud URL do bucket de armazenamento (por exemplo,
Clique em Próxima.
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
- Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket.
- Salve o Nome e a Região do bucket para referência futura.
- Crie um usuário seguindo este guia: Como criar um usuário do IAM.
- Selecione o usuário criado.
- Selecione a guia Credenciais de segurança.
- Clique em Criar chave de acesso na seção Chaves de acesso.
- Selecione Serviço de terceiros como Caso de uso.
- Clique em Próxima.
- Opcional: adicione uma tag de descrição.
- Clique em Criar chave de acesso.
- Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para referência futura.
- Clique em Concluído.
- Selecione a guia Permissões.
- Clique em Adicionar permissões na seção Políticas de permissões.
- Selecione Adicionar permissões.
- Selecione Anexar políticas diretamente.
- Pesquise a política AmazonS3FullAccess.
- Selecione a política.
- Clique em Próxima.
- Clique em Adicionar permissões
Configurar o WAF da Akamai para enviar registros ao Amazon S3
- Faça login no Akamai Control Center.
- Acesse a seção Segurança.
- Selecione Registros.
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).
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:
- Acesse Configurações do SIEM > Feeds.
- Clique em Adicionar novo feed.
- Na próxima página, clique em Configurar um único feed.
- No campo Nome do feed, insira um nome para o feed (por exemplo, Registros do WAF da Akamai).
- Selecione Amazon S3 como o Tipo de origem.
- Selecione WAF da Akamai como o Tipo de registro.
- Clique em Próxima.
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.
Clique em Próxima.
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.