Coletar registros CEF do Imperva
Este documento explica como ingerir registros CEF da Imperva no Google Security Operations usando o Bindplane. O analisador extrai os registros no formato CEF das mensagens syslog, convertendo-os para o formato UDM. Ele processa vários formatos de registros, extrai pares de chave-valor do payload, realiza transformações e enriquecimentos de dados e mapeia os campos extraídos para os campos correspondentes do UDM, incluindo informações de rede, detalhes do usuário, geolocalização e resultados de segurança.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Um host Windows 2016 ou mais recente ou Linux com
systemd - Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente Bindplane.
- Acesso privilegiado ao console ou appliance de gerenciamento do Imperva
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.
- Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura 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
Instale o agente do Bindplane no seu sistema operacional Windows ou Linux de acordo com as instruções a seguir.
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 root 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 ingerir o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml. Normalmente, ele fica 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,viou Bloco de Notas).
- Localize o arquivo
Edite o arquivo
config.yamlda seguinte forma:receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/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 log_type: 'IMPERVA_CEF' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels- Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
- Substitua
<customer_id>pelo ID do cliente real. - Atualize
/path/to/ingestion-authentication-file.jsonpara o caminho em que o arquivo de autenticação foi salvo na seção Receber 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-agentPara reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o gateway WAF da Imperva (SecureSphere) para enviar CEF por syslog
No console do MX, crie um conjunto de ações:
- Navegue até Políticas > Conjuntos de ações.
- Clique em Novo e dê um nome a ele (por exemplo,
Google SecOps CEF).
Adicione a interface de ação do syslog CEF:
- Em Interfaces de ação disponíveis, abra Registro do sistema e adicione uma ou mais das seguintes opções, conforme necessário:
- Registrar eventos de segurança no registro do sistema (syslog) usando o padrão CEF
- Registrar eventos de segurança de rede no registro do sistema (syslog) usando o padrão CEF
- Registrar eventos do sistema no registro do sistema (syslog) usando o padrão CEF
- Registrar um evento de segurança personalizado no registro do sistema (syslog) usando o padrão CEF
- Em Interfaces de ação disponíveis, abra Registro do sistema e adicione uma ou mais das seguintes opções, conforme necessário:
Configure os parâmetros da interface de ação:
- Host syslog: insira o endereço IP do agente do Bindplane. Para usar uma porta não padrão, adicione
:PORT(o padrão é 514 se você não especificar uma). Exemplo:10.0.0.10:514. - Facilidade / Nível de registro: defina de acordo com os requisitos da política.
- Mensagem: deixe os padrões do fornecedor para CEF, a menos que você tenha um mapeamento personalizado.
- Host syslog: insira o endereço IP do agente do Bindplane. Para usar uma porta não padrão, adicione
Anexe o conjunto de ações às políticas:
- Para eventos de Segurança / Segurança de rede: abra as políticas relevantes e defina Ação seguida como seu conjunto de ações.
- Para Eventos do sistema: crie ou verifique uma política de Eventos do sistema e defina Ação seguida como seu conjunto de ações para que esses eventos também sejam enviados por CEF.
Opcional: configure destinos específicos do gateway:
- Se grupos de gateways diferentes precisarem enviar para servidores syslog diferentes, configure cada Grupo de gateways > Registrador externo e ative Usar configuração de gateway, se existir na política.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
act |
security_result.action |
Derivada. Se act for "allowed", "alert", começar com "REQ_PASSED" ou "REQ_CACHED", action será "ALLOW". Se act for "deny", "blocked", começar com "REQ_BLOCKED" ou "REQ_CHALLENGE", action será "BLOCK". Se act corresponder à regex (?i)REQ_BAD, action será "FAIL". Caso contrário, action será "UNKNOWN_ACTION". Em seguida, security_result.action é definido como o valor de action. |
act |
security_result.action_details |
Derivada. Com base no valor de act, uma descrição detalhada é gerada. Exemplos: "REQ_CACHED_FRESH: a resposta foi retornada do cache do data center", "REQ_BLOCKED: a solicitação foi bloqueada". |
app |
network.application_protocol |
Mapeado diretamente após a conversão para letras maiúsculas. |
cs1 |
security_result.detection_fields.value |
Mapeado condicionalmente se cs1 não estiver vazio ou for "NA". security_result.detection_fields.key é definido como o valor de cs1Label. |
cs1Label |
security_result.detection_fields.key |
Mapeado condicionalmente se cs1 não estiver vazio ou for "NA". security_result.detection_fields.value é definido como o valor de cs1. |
cs2 |
security_result.detection_fields.value |
Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como o valor de cs2Label. |
cs2Label |
security_result.detection_fields.key |
Mapeado condicionalmente se cs2 não estiver vazio. security_result.detection_fields.value é definido como o valor de cs2. |
cs3 |
security_result.detection_fields.value |
Mapeado condicionalmente se não estiver vazio ou for "-". security_result.detection_fields.key é definido como o valor de cs3Label. |
cs3Label |
security_result.detection_fields.key |
Mapeado condicionalmente se cs3 não estiver vazio ou for "-". security_result.detection_fields.value é definido como o valor de cs3. |
cs4 |
security_result.detection_fields.value |
Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como o valor de cs4Label. |
cs4Label |
security_result.detection_fields.key |
Mapeado condicionalmente se cs4 não estiver vazio. security_result.detection_fields.value é definido como o valor de cs4. |
cs5 |
security_result.detection_fields.value |
Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como o valor de cs5Label. |
cs5Label |
security_result.detection_fields.key |
Mapeado condicionalmente se cs5 não estiver vazio. security_result.detection_fields.value é definido como o valor de cs5. |
cs6 |
security_result.detection_fields.value |
Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como o valor de cs6Label. |
cs6Label |
security_result.detection_fields.key |
Mapeado condicionalmente se cs6 não estiver vazio. security_result.detection_fields.value é definido como o valor de cs6. |
cs7 |
principal.location.region_latitude |
Mapeado condicionalmente se cs7Label for "latitude". |
cs8 |
principal.location.region_longitude |
Mapeado condicionalmente se cs8Label for "longitude". |
cn1 |
security_result.detection_fields.value |
Mapeado condicionalmente se não estiver vazio e cn1Label não estiver vazio. security_result.detection_fields.key é definido como o valor de cn1Label. |
cn1Label |
security_result.detection_fields.key |
Mapeado condicionalmente se cn1 e cn1Label não estiverem vazios. security_result.detection_fields.value é definido como o valor de cn1. |
fileType |
security_result.detection_fields.value |
Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como "fileType". |
filePermission |
security_result.detection_fields.value |
Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key é definido como "filePermission". |
request |
target.url |
Mapeado diretamente. |
requestClientApplication |
network.http.user_agent |
Mapeado condicionalmente se não estiver vazio. Substitui o valor mapeado do campo user_agent extraído dos pares de chave-valor requestContext ou requestClientApplication no payload CEF. |
requestMethod |
network.http.method |
Mapeado diretamente. |
siteid |
security_result.detection_fields.value |
Mapeado condicionalmente se não estiver vazio. security_result.detection_fields.key está definido como "siteid". |
sourceServiceName |
target.hostname |
Mapeado diretamente. Substitui o valor de dhost, se presente. |
src |
principal.ip |
Mapeado diretamente. |
start |
metadata.event_timestamp.seconds |
Extraído usando um padrão grok e convertido em um carimbo de data/hora. Usado como substituto para deviceReceiptTime se ele não estiver presente. Se deviceReceiptTime e start estiverem vazios, o carimbo de data/hora do registro será usado. |
suid |
principal.user.userid |
Mapeado condicionalmente se não estiver vazio. |
| N/A | metadata.event_type |
Fixado no código como "NETWORK_HTTP". |
| N/A | metadata.log_type |
Mapeado diretamente do campo log_type de nível superior. |
| N/A | metadata.product_event_type |
Mapeado de csv.event_id se não estiver vazio. |
| N/A | metadata.product_name |
Codificado como "Firewall de aplicativos da Web". |
| N/A | metadata.vendor_name |
Fixado no código como "Imperva". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.