Coletar registros do Barracuda WAF
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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- 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
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do Bindplane
Instalação do Windows
- Abra o Prompt de Comando ou o PowerShell como administrador.
Execute este 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 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
- Para mais opções de instalação, consulte este guia de instalação.
Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- 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. - Abra o arquivo usando um editor de texto (por exemplo,
nano
,vi
ou Notepad).
- Localize o arquivo
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
Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
Substitua
<customer_id>
pelo ID real do cliente.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
- Faça login no console do Barracuda WAF usando as credenciais de administrador.
- Clique na guia Avançado > Exportar registros.
- Na seção Exportar registros, clique em Adicionar servidor de registro de exportação.
- 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.