Recolha registos da WAF da Akamai
Este documento explica como carregar registos do WAF da Akamai para o Google Security Operations através do conetor CEF da Akamai e do Bindplane.
Antes de começar
Certifique-se de que cumpre os seguintes pré-requisitos:
- Uma instância do Google SecOps
- Um anfitrião Windows 2016 ou posterior, ou Linux com systemd para a instalação do agente Bindplane
- Um servidor Linux (recomenda-se CentOS/RHEL/Ubuntu) com, pelo menos, 2 núcleos de CPU, 6 GB de RAM e 2 GB de espaço livre no disco para o conector CEF da Akamai
- Java 8 (JRE 1.8) ou posterior instalado no anfitrião do conetor CEF
- Se estiver a executar o Bindplane atrás de um proxy, certifique-se de que as portas da firewall estão abertas de acordo com os requisitos do agente do Bindplane e que o proxy permite as listas de autorizações
*.cloudsecurity.akamaiapis.nete*.luna.akamaiapis.net - Acesso privilegiado ao Akamai Control Center
- Uma configuração de segurança da Akamai com o App & API Protector, o Kona Site Defender, o Web Application Protector, o Bot Manager ou o Account Protector ativado
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Ative a integração do SIEM no centro de controlo da Akamai
- Inicie sessão no Akamai Control Center.
- Em SEGURANÇA DA WEB E DO CENTRO DE DADOS, clique em Configuração de segurança.
- Abra a configuração de segurança e a versão adequada para a qual quer recolher dados do SIEM.
- Clique em Definições avançadas e expanda Recolha de dados para integrações de SIEM.
- Clique em Ativado para ativar o SIEM.
- Escolha as políticas de segurança para as quais quer exportar dados:
- Todas as políticas de segurança: selecione esta opção para enviar dados SIEM para eventos que violem qualquer política de segurança ou todas as políticas de segurança na configuração de segurança.
- Políticas de segurança específicas: selecione esta opção para enviar dados relativos a uma ou mais políticas de segurança específicas. Selecione as políticas adequadas na lista pendente.
- Opcional: se usar o Account Protector e quiser incluir o nome de utilizador não encriptado, ative a caixa de verificação Incluir nome de utilizador.
- Opcional: se quiser receber informações de impressões digitais JA4 em eventos SIEM, ative a caixa de verificação Incluir a impressão digital TLS do cliente JA4.
- Opcional: se quiser excluir eventos pertencentes a um tipo de proteção e ação específicos, clique em Adicionar exceção. Selecione a proteção e as ações associadas que não quer que o SIEM recolha. Clique em Guardar.
- Copie o valor no campo ID de configuração de segurança Web. Guarde este ID para utilização posterior.
- Clique em Ativar para enviar as alterações de configuração de segurança para a rede de produção. Em Rede, clique em Produção e, de seguida, em Ativar.
Configure um utilizador para gerir o SIEM no Akamai Control Center
- No Akamai Control Center, em ACCOUNT ADMIN, clique em Identity & access.
- No separador Utilizadores e clientes da API, localize o utilizador ao qual quer atribuir a função ou clique no botão Criar utilizador.
- Para atribuir a função de SIEM a um utilizador existente:
- Abra a conta do utilizador e clique no separador Editar funções.
- Encontre o grupo adequado, clique no menu Funções e selecione a função Gerir SIEM.
- Clique em Enviar.
- Para atribuir a função SIEM a um novo utilizador:
- Clique em Criar utilizador.
- Introduza informações básicas para o utilizador e aceda à secção Atribuir funções.
- Encontre o grupo adequado, clique no menu Funções e selecione a função Gerir SIEM.
- Clique em Guardar.
Aprovisione credenciais da API SIEM no Akamai Control Center
- Visite a página Crie credenciais de autenticação na documentação da Akamai.
- Siga os passos para aprovisionar a API SIEM para o utilizador que atribuiu para gerir o SIEM.
- Copie e guarde as seguintes credenciais em segurança:
- Token de acesso
- Símbolo de cliente
- Segredo do cliente
- URL base
Instale o conetor CEF da Akamai
- No seu servidor Linux, transfira o pacote de distribuição do conector CEF mais recente do repositório do GitHub da Akamai.
- Transfira o pacote para o seu servidor através de
wgetou SFTP. - Valide o hash SHA256 do ficheiro transferido para garantir a integridade.
Extraia o pacote de distribuição:
unzip CEFConnector-<version>.zipNavegue para o diretório extraído:
cd CEFConnector-<version>Para instalar o serviço, crie uma associação simbólica ao script de arranque:
sudo ln -s /path/to/CEFConnector-<version>/bin/AkamaiCEFConnector.sh /etc/init.d/AkamaiCEFConnector
Configure o conetor CEF da Akamai
Navegue para o diretório
configna instalação do conetor CEF:cd configAbra o ficheiro
CEFConnector.propertiescom um editor de texto (por exemplo,nanoouvi):sudo nano CEFConnector.propertiesConfigure os seguintes parâmetros obrigatórios:
# Akamai API Configuration akamai.data.requesturlhost=https://cloudsecurity.akamaiapis.net akamai.data.configs=<YOUR_SECURITY_CONFIG_ID> akamai.data.timebased=false akamai.data.limit=200000 # API Credentials (from Step: Provision SIEM API credentials) akamai.data.accesstoken=<YOUR_ACCESS_TOKEN> akamai.data.clienttoken=<YOUR_CLIENT_TOKEN> akamai.data.clientsecret=<YOUR_CLIENT_SECRET> akamai.data.baseurl=<YOUR_BASE_URL> # CEF Format Configuration akamai.cefformatheader=CEF:0|Akamai|akamai_siem|1.0|eventClassId()|name()|severity() akamai.cefformatextension=act=appliedAction() app=${httpMessage.protocol} c6a2=ipv6src() c6a2Label="Source IPv6 Address" cs1=${attackData.rules} cs1Label="Rules" cs2=${attackData.ruleMessages} cs2Label="Rule Messages" cs3=${attackData.ruleData} cs3Label="Rule Data" cs4=${attackData.ruleSelectors} cs4Label="Rule Selectors" cs5=${attackData.clientReputation} cs5Label="Client Reputation" cs6=${attackData.apiId} cs6Label="API ID" devicePayloadId=${httpMessage.requestId} dhost=${httpMessage.host} dpt=${httpMessage.port} flexString1=${attackData.configId} flexString1Label="Security Config ID" flexString2=${attackData.policyId} flexString2Label="Firewall Policy Id" out=${httpMessage.bytes} request=requestURL() requestMethod=${httpMessage.method} src=${attackData.clientIP} start=${httpMessage.start} AkamaiSiemSlowPostAction=${attackData.slowPostAction} AkamaiSiemSlowPostRate=${attackData.slowPostRate} AkamaiSiemRuleVersions=${attackData.ruleVersions} AkamaiSiemRuleTags=${attackData.ruleTags} AkamaiSiemJA4=${identity.ja4} AkamaiSiemRuleActions=${attackData.ruleActions} # Connector Pull Configuration connector.refresh.period=60 connector.consumer.count=3 connector.retry=5 # Proxy Configuration (if applicable) # connector.proxy.host= # connector.proxy.port=Substitua os seguintes marcadores de posição pelos seus valores reais:
<YOUR_SECURITY_CONFIG_ID>: o ID de configuração de segurança Web que copiou anteriormente. Para várias configurações, separe os IDs com pontos e vírgulas (por exemplo,12345;67890).<YOUR_ACCESS_TOKEN>: o token de acesso das credenciais da API Akamai<YOUR_CLIENT_TOKEN>: o token de cliente das credenciais da API Akamai<YOUR_CLIENT_SECRET>: o segredo do cliente das credenciais da API Akamai<YOUR_BASE_URL>: o URL base das credenciais da API Akamai
Guarde e feche o ficheiro.
Configure o registo do conetor CEF
- Navegue para o diretório
configna instalação do conetor CEF. Abra o ficheiro
log4j2.xmlcom um editor de texto:sudo nano log4j2.xmlConfigure os seguintes parâmetros para a saída de syslog para o Bindplane:
<!-- Syslog Appender Configuration --> <Syslog name="SyslogAppender" host="<BINDPLANE_IP_ADDRESS>" port="<BINDPLANE_PORT>" protocol="<PROTOCOL>" facility="LOCAL0" format="RFC5424"> <PatternLayout pattern="%m%n"/> </Syslog>Substitua os seguintes marcadores de posição:
<BINDPLANE_IP_ADDRESS>: o endereço IP do servidor onde o agente Bindplane está instalado<BINDPLANE_PORT>: o número da porta onde o agente Bindplane escuta (por exemplo,514para UDP ou601para TCP)<PROTOCOL>: selecioneUDPouTCP
Certifique-se de que o conetor CEF envia registos para o servidor syslog remoto (BindPpane) configurando as definições específicas do CEF:
# In CEFConnector.properties, ensure these are set: # Note: These settings are typically in log4j2.xml but referenced here for clarityGuarde e feche o ficheiro.
Inicie o conetor CEF da Akamai
Inicie o serviço do conetor CEF:
sudo /etc/init.d/AkamaiCEFConnector startVerifique se o serviço está em execução:
sudo /etc/init.d/AkamaiCEFConnector statusMonitorize os registos para garantir que o conetor está a extrair eventos do Akamai e a enviá-los para o Bindplane:
tail -f /path/to/CEFConnector-<version>/bin/logs/cefconnector.log
Instale o agente do Bindplane
Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.
Instalação de janelas
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
- Para ver opções de instalação adicionais, consulte este guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml. Normalmente, encontra-se no diretório/etc/bindplane-agent/no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano,viou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yamlda seguinte forma:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" tcplog: # Alternative TCP receiver if using TCP protocol listen_address: "0.0.0.0:601" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in the Get ingestion authentication file section creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from the Get customer ID section customer_id: <YOUR_CUSTOMER_ID> # Select the appropriate regional endpoint based on where your Google SecOps instance is provisioned # For regional endpoints, see: https://cloud.google.com/chronicle/docs/reference/ingestion-api#regional_endpoints endpoint: malachiteingestion-pa.googleapis.com # Set the log_type to ensure the correct parser is applied log_type: 'AKAMAI_WAF' raw_log_field: body # Add optional ingestion labels for better organization ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog # - tcplog # Uncomment if using TCP exporters: - chronicle/chronicle_w_labels
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agentPara reiniciar o agente Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Valide o carregamento de registos
- Inicie sessão na consola Google SecOps.
- Aceda a Pesquisa ou Análise de registos não processados.
Pesquise registos recentes do WAF da Akamai através da etiqueta de carregamento:
metadata.log_type = "AKAMAI_WAF"Verifique se os registos estão a ser apresentados com os campos e as datas/horas esperados.
Verifique se os campos do formato CEF estão a ser analisados e mapeados corretamente para o UDM.
Resolução de problemas
Problemas do conetor CEF
- Não estão a ser extraídos eventos: verifique se existem erros no ficheiro
cefconnector.log. Confirme se as credenciais da API Akamai estão corretas e se os IDs de configuração de segurança são válidos. - Erros de ligação: certifique-se de que as definições de proxy (se aplicável) estão configuradas corretamente e que os domínios necessários estão na lista de autorizações.
Reposição da base de dados: se precisar de repor o acompanhamento de desvios, execute o seguinte comando:
sudo /etc/init.d/AkamaiCEFConnector resetdb
Problemas do agente Bindplane
- Os registos não estão a chegar ao Bindplane: verifique se o conector CEF está configurado para enviar o syslog para o endereço IP e a porta corretos do Bindplane. Verifique as regras da firewall entre o conector CEF e o agente Bindplane.
Os registos não estão a chegar ao Google SecOps: verifique o ficheiro de configuração do Bindplane, o ID de cliente e o caminho de autenticação de carregamento. Verifique se existem erros nos registos do Bindplane:
sudo journalctl -u observiq-otel-collector -f
Rede e conetividade
- Verifique se o conetor CEF consegue alcançar os pontos finais da API SIEM da Akamai.
- Verifique se o agente do Bindplane consegue aceder ao ponto final de carregamento do Google SecOps (
malachiteingestion-pa.googleapis.com). - Verifique se todas as portas de firewall necessárias estão abertas.
Recupere eventos de segurança anteriores
O conetor CEF da Akamai funciona em dois modos:
- Com base no desvio (recomendado): o conector regista automaticamente os eventos de segurança à medida que são recolhidos quase em tempo real. Este é o modo predefinido quando
akamai.data.timebasedestá definido comofalse. - Com base no tempo: permite-lhe obter eventos que ocorreram num período específico (até 12 horas no passado).
Para obter eventos de segurança em falta ou anteriores:
Abra o ficheiro de configuração do conetor:
sudo nano /path/to/CEFConnector-<version>/config/CEFConnector.propertiesAltere a configuração baseada no tempo:
akamai.data.timebased=true akamai.data.timebased.from=<EPOCH_START_TIME> akamai.data.timebased.to=<EPOCH_END_TIME>- Substitua
<EPOCH_START_TIME>pela hora de início no formato de época (nas últimas 12 horas). - Substitua
<EPOCH_END_TIME>pela hora de fim no formato de época (opcional; se deixar em branco, extrai eventos até ao presente).
- Substitua
Reinicie o conetor CEF:
sudo /etc/init.d/AkamaiCEFConnector restartDepois de os dados do histórico serem obtidos, reverta para o modo de desvio:
akamai.data.timebased=falseReinicie novamente o conetor CEF.
Tabela de mapeamento da UDM
| Campo de registo | Mapeamento da UDM | Lógica |
|---|---|---|
src (attackData.clientIP) |
principal.ip |
Endereço IP de origem do cliente que está a fazer o pedido |
c6a2 (ipv6src) |
principal.ip |
Endereço IPv6 de origem se attackData.clientIP estiver no formato IPv6 |
dhost (httpMessage.host) |
target.hostname |
Nome do anfitrião do cabeçalho HTTP HOST |
dpt (httpMessage.port) |
target.port |
Número da porta usado pelo pedido recebido |
requestMethod (httpMessage.method) |
network.http.method |
Método HTTP do pedido recebido (GET, POST, etc.) |
request (requestURL) |
target.url |
Calcula o URL completo a partir dos campos httpMessage |
cs1 (attackData.rules) |
security_result.rule_id |
IDs das regras que foram acionadas para este pedido |
cs2 (attackData.ruleMessages) |
security_result.rule_name |
Mensagens de regras que foram acionadas |
act (appliedAction) |
security_result.action |
Ação tomada (alerta, recusar, interromper, etc.) |
severity |
security_result.severity |
Gravidade calculada (5 para deteção, 10 para mitigação) |
cs5 (attackData.clientReputation) |
security_result.threat_name |
Pontuações de IP de cliente para a reputação do cliente |
cs6 (attackData.apiId) |
security_result.detection_fields |
ID da API para proteção de APIs |
start (httpMessage.start) |
metadata.event_timestamp |
Hora em que o servidor de extremidade iniciou a ligação (formato de época) |
devicePayloadId (httpMessage.requestId) |
metadata.product_log_id |
ID globalmente exclusivo da mensagem |
flexString1 (attackData.configId) |
security_result.detection_fields |
ID da configuração de segurança aplicada a este pedido |
flexString2 (attackData.policyId) |
security_result.detection_fields |
ID da política de firewall aplicada a este pedido |
AkamaiSiemJA4 (identity.ja4) |
network.tls.client.ja3 |
Pegada digital TLS do cliente JA4 |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.