Coletar registros do Barracuda WAF

Compatível com:

Este documento explica como coletar registros do Barracuda Web Application Firewall (WAF) usando o Bindplane. O analisador extrai campos de registros nos formatos JSON e Syslog, os normaliza e os mapeia para o modelo de dados unificado (UDM). Ele processa vários tipos de registro (tráfego, firewall da Web) e realiza transformações condicionais com base nos valores do campo, incluindo resolução de endereço IP/nome do host, mapeamento de direcionalidade e normalização de gravidade.

Antes de começar

  • Verifique se você tem uma instância do Google Security Operations.
  • Verifique se você está usando o Windows 2016 ou uma versão mais recente ou um host Linux com systemd.
  • Se estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
  • Verifique se você tem acesso privilegiado ao Barracuda WAF.

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança no sistema em que o BindPlane será instalado.

Receber o ID de cliente do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este 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 este comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Outros recursos de instalação

Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    1. Localize o arquivo config.yaml. Normalmente, ele está no diretório /etc/bindplane-agent/ no Linux ou no diretório de instalação no Windows.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Notepad).
  2. Edite o arquivo config.yaml da seguinte forma:

    receivers:
        tcplog:
            # Replace the port and IP address as required
            listen_address: "0.0.0.0:54525"
    
    exporters:
        chronicle/chronicle_w_labels:
            compression: gzip
            # Adjust the path to the credentials file you downloaded in Step 1
            creds: '/path/to/ingestion-authentication-file.json'
            # Replace with your actual customer ID from Step 2
            customer_id: <customer_id>
            endpoint: malachiteingestion-pa.googleapis.com
            # Add optional ingestion labels for better organization
            ingestion_labels:
                log_type: SYSLOG
                namespace: barracuda_waf
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID real do cliente.

  5. Atualize /path/to/ingestion-authentication-file.json para o caminho em que o arquivo de autenticação foi salvo na seção Receber o arquivo de autenticação de ingestão do Google SecOps.

Reinicie o agente do Bindplane para aplicar as mudanças

  • Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar o agente do Bindplane no Windows, use o console Services ou digite o seguinte comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar o Barracuda WAF

  1. Faça login no console do Barracuda WAF usando as credenciais de administrador.
  2. Clique na guia Avançado > Exportar registros.
  3. Na seção Exportar registros, clique em Adicionar servidor de registro de exportação.
  4. Informe os seguintes valores:
    • Nome: insira um nome para o forwarder do Google SecOps.
    • Tipo de servidor de registro: selecione Syslog.
    • Endereço IP ou nome do host: insira o endereço IP Bindplane.
    • Porta: insira a porta Bindplane.
    • Tipo de conexão: selecione o tipo de conexão TCP. Recomendamos o TCP. No entanto, os protocolos UDP ou SSL também podem ser usados.
    • Validar certificado do servidor: selecione Não.
    • Certificado do cliente: selecione Nenhum.
    • Carimbo de data/hora e nome do host do registro: selecione Sim.
    • Clique em Adicionar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
action security_result.action Se action for DENY, defina como BLOCK. Caso contrário, defina como ALLOW (especificamente para o tipo de registro WF). Também usado para eventos genéricos de firewall.
appProtocol network.application_protocol Se appProtocol corresponder a TLSv, defina como HTTPS. Caso contrário, use o valor de appProtocol.
attackDetails security_result.description Extraídos do registro bruto para o tipo de registro WF.
attackType security_result.summary Parte de security_result.summary, combinada com ruleType.
bytesReceived network.received_bytes Conversão para número inteiro sem sinal e mapeamento para o tipo de registro TR.
bytesSent network.sent_bytes Conversão para número inteiro sem sinal e mapeamento para o tipo de registro TR.
hostName target.hostname Se hostName não for um endereço IP, use o valor dele. Caso contrário, ele será mesclado em target.ip.
httpMethod loginId principal.user.userid Mapeado para o tipo de registro TR quando não é igual a emptyToken.
logType metadata.product_event_type Se TR, defina metadata.product_event_type como Barracuda Access Log. Se WF, defina como Barracuda Web Firewall Log.
message metadata.description Usado quando desc não está vazio.
referrer network.http.referral_url Mapeado para o tipo de registro TR quando não é igual a emptyToken.
responseCode network.http.response_code Convertido em número inteiro e mapeado para o tipo de registro TR.
rule security_result.rule_name Mapeado para o tipo de registro WF.
ruleType security_result.summary Parte de security_result.summary, combinada com attackType.
sec_desc security_result.rule_name Usado para eventos genéricos de firewall.
server target.ip Mesclado com target.ip.
serv target.ip Mesclado com target.ip.
severity security_result.severity, is_alert, is_significant Para o tipo de registro WF: convertido em letras maiúsculas. Se EMERGENCY, ALER ou CRITICAL, defina security_result.severity como CRITICAL, is_alert como verdadeiro e is_significant como verdadeiro. Se ERROR, defina como HIGH. Se WARNING, defina como MEDIUM. Se NOTICE, defina como LOW. Caso contrário, defina como INFORMATIONAL.
src principal.ip Também é usado para eventos genéricos de firewall e algumas atualizações de status.
srcPort principal.port Convertido em número inteiro.
target targetPort target.port Convertido em número inteiro.
time metadata.event_timestamp.seconds, metadata.event_timestamp.nanos, timestamp.seconds, timestamp.nanos Combinado com tz e analisado para criar o carimbo de data/hora do evento. Os segundos e nanos são extraídos e preenchidos nos respectivos campos.
url urlParams target.url Será anexado a url se não for igual a emptyToken para o tipo de registro TR.
userAgent userName target.user.userid, target.user.user_display_name Usado para eventos genéricos de firewall. Se não for igual a emptyToken para o tipo de registro TR, será mapeado para target.user.user_display_name. Fixado em Barracuda. Defina como NETWORK_HTTP se src e target estiverem presentes. Defina como STATUS_UPDATE se apenas src estiver presente. Defina como GENERIC_EVENT como padrão ou para outros cenários, como análise CEF. Fixado em BARRACUDA_WAF.

Alterações

2023-07-19

Correção de bugs:

  • Registros brutos não analisados analisados usando um padrão Grok.
  • O "server" foi mapeado para "target.ip".

2022-09-09

  • Criamos um analisador padrão e migramos os analisadores personalizados para o padrão.
  • Os seguintes campos são mapeados:
  • "duser" mapeado para "target.user.user_display_name".
  • "suser" mapeado para ".principal.user.user_display_name".
  • "suid" mapeado para "principal.user.userid".
  • "src" mapeado para "principal.ip".
  • "dst" mapeado para "target.ip".
  • "shost" mapeado para "principal.hostname".
  • "severity" mapeado para "security_result.severity".
  • "action" mapeado para "security_result.action".
  • "user_name" mapeado para "target.user.userid".
  • "domain_name" mapeado para "target.domain.name".
  • "mac_address" mapeado para "principal.mac".
  • "direction" mapeado para "network.direction".
  • "ip_protocol" mapeado para "network.ip_protocol".
  • "summary" mapeado para "security_result.summary".

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