Recolha registos da WAF da Akamai

Suportado em:

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.net e *.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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Agentes de recolha.
  3. 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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Definições do SIEM > Perfil.
  3. 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

  1. Inicie sessão no Akamai Control Center.
  2. Em SEGURANÇA DA WEB E DO CENTRO DE DADOS, clique em Configuração de segurança.
  3. Abra a configuração de segurança e a versão adequada para a qual quer recolher dados do SIEM.
  4. Clique em Definições avançadas e expanda Recolha de dados para integrações de SIEM.
  5. Clique em Ativado para ativar o SIEM.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. Copie o valor no campo ID de configuração de segurança Web. Guarde este ID para utilização posterior.
  11. 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

  1. No Akamai Control Center, em ACCOUNT ADMIN, clique em Identity & access.
  2. No separador Utilizadores e clientes da API, localize o utilizador ao qual quer atribuir a função ou clique no botão Criar utilizador.
  3. 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.
  4. 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

  1. Visite a página Crie credenciais de autenticação na documentação da Akamai.
  2. Siga os passos para aprovisionar a API SIEM para o utilizador que atribuiu para gerir o SIEM.
  3. 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

  1. No seu servidor Linux, transfira o pacote de distribuição do conector CEF mais recente do repositório do GitHub da Akamai.
  2. Transfira o pacote para o seu servidor através de wget ou SFTP.
  3. Valide o hash SHA256 do ficheiro transferido para garantir a integridade.
  4. Extraia o pacote de distribuição:

    unzip CEFConnector-<version>.zip
    
  5. Navegue para o diretório extraído:

    cd CEFConnector-<version>
    
  6. 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

  1. Navegue para o diretório config na instalação do conetor CEF:

    cd config
    
  2. Abra o ficheiro CEFConnector.properties com um editor de texto (por exemplo, nano ou vi):

    sudo nano CEFConnector.properties
    
  3. Configure 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=
    
  4. 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
  5. Guarde e feche o ficheiro.

Configure o registo do conetor CEF

  1. Navegue para o diretório config na instalação do conetor CEF.
  2. Abra o ficheiro log4j2.xml com um editor de texto:

    sudo nano log4j2.xml
    
  3. Configure 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>
    
  4. 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, 514 para UDP ou 601 para TCP)
    • <PROTOCOL>: selecione UDP ou TCP
  5. 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 clarity
    
  6. Guarde e feche o ficheiro.

Inicie o conetor CEF da Akamai

  1. Inicie o serviço do conetor CEF:

    sudo /etc/init.d/AkamaiCEFConnector start
    
  2. Verifique se o serviço está em execução:

    sudo /etc/init.d/AkamaiCEFConnector status
    
  3. Monitorize 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

  1. Abra a Linha de comandos ou o PowerShell como administrador.
  2. Execute o seguinte comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de raiz ou sudo.
  2. 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

Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps

  1. Aceda ao ficheiro de configuração:

    1. 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.
    2. Abra o ficheiro com um editor de texto (por exemplo, nano, vi ou Bloco de notas).
  2. Edite o ficheiro config.yaml da 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-agent
    
  • Para 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

  1. Inicie sessão na consola Google SecOps.
  2. Aceda a Pesquisa ou Análise de registos não processados.
  3. Pesquise registos recentes do WAF da Akamai através da etiqueta de carregamento:

    metadata.log_type = "AKAMAI_WAF"
    
  4. Verifique se os registos estão a ser apresentados com os campos e as datas/horas esperados.

  5. 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.timebased está definido como false.
  • 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:

  1. Abra o ficheiro de configuração do conetor:

    sudo nano /path/to/CEFConnector-<version>/config/CEFConnector.properties
    
  2. Altere 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).
  3. Reinicie o conetor CEF:

    sudo /etc/init.d/AkamaiCEFConnector restart
    
  4. Depois de os dados do histórico serem obtidos, reverta para o modo de desvio:

    akamai.data.timebased=false
    
  5. Reinicie 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.