Coletar registros do Netgate pfSense
Este documento descreve como coletar os registros do Netgate pfSense usando um encaminhador de operações de segurança do Google.
Para mais informações, consulte Ingestão de dados no Google SecOps.
Um rótulo de transferência identifica o analisador que normaliza os dados de registro brutos para o formato estruturado do UDM. As informações neste documento se aplicam ao analisador com o
rótulo de transferência PFSENSE
.
Configurar o Netgate pfSense
- Faça login na interface do pfSense com credenciais de administrador.
- Nas configurações do Registro global, faça o seguinte:
- Selecione Status > Registros do sistema > Configurações.
- Na guia Configurações, selecione Opções gerais de registro e faça o seguinte:
- No campo Formato da mensagem de registro, selecione syslog (RFC 5424, com carimbos de data/hora de precisão de microssegundos RFC 3339).
- No campo Bloqueios padrão do firewall de registro, marque as seguintes caixas de seleção:
- Registrar pacotes correspondentes às regras de bloqueio padrão na regra de conjunto de regras
- Registrar pacote correspondente às regras de passagem padrão inseridas na regra de conjunto de regras
- Registrar pacotes bloqueados pelas regras "Block bogon networks"
- Registrar pacotes bloqueados pelas regras "Bloquear redes privadas"
- Para salvar as novas configurações, clique em Salvar.
Enviar os registros de firewall para o Google SecOps
- Nas configurações do Registro global, selecione Status > Registros do sistema > Configurações.
- Na guia Configurações, selecione Opções de registro remoto e faça o seguinte:
- No campo Ativar registro remoto, marque a caixa de seleção Enviar mensagens de registro para o servidor syslog remoto.
- No campo Endereço de origem, mantenha o valor padrão como Qualquer.
- No campo Protocolo IP, se o endereço de origem for selecionado como o valor padrão, não será necessário especificar o endereço IP. Caso contrário, insira o endereço IP.
- Em Servidores de registro remoto, especifique o endereço IP do encaminhador do Google SecOps.
- Em Conteúdo de syslog remoto, marque a caixa de seleção Eventos de firewall.
- Para salvar as alterações, clique em Salvar.
Configurar o forwarder do Google SecOps para processar registros do Netgate pfSense
- Selecione Configurações do SIEM > Encaminhadores.
- Clique em Adicionar novo encaminhador.
- No campo Nome do encaminhador, insira um nome exclusivo.
- Clique em Enviar e em Confirmar. O encaminhador é adicionado, e a janela Add collector configuration aparece.
- No campo Nome do coletor, digite um nome exclusivo para o coletor.
- Selecione pfSense como o Tipo de registro.
- No campo Tipo de coletor, selecione Syslog.
- Configure os seguintes parâmetros de entrada obrigatórios:
- Protocolo: especifique o protocolo de conexão que o coletor usa para detectar dados do syslog.
- Endereço: especifique o endereço IP ou o nome do host de destino em que o coletor reside e escuta os dados do syslog.
- Porta: especifica a porta de destino em que o coletor reside e detecta dados do syslog.
- Clique em Enviar.
Para mais informações sobre os encaminhadores do Google SecOps, consulte Gerenciar configurações de encaminhadores na interface do Google SecOps.
Se você tiver problemas ao criar encaminhadores, entre em contato com o suporte do Google SecOps.
Referência do mapeamento de campo
Esse analisador de firewall pfSense extrai campos de mensagens syslog usando padrões Grok, processando vários formatos de registro, incluindo DHCP e eventos de firewall. Em seguida, ele mapeia esses campos extraídos para o UDM, enriquecendo os dados com informações contextuais, como endereços IP, endereços MAC, nomes de usuário e detalhes de rede.
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
aplicativo | principal.application |
O valor é extraído da mensagem de registro usando padrões grok. Para mensagens syslog, o nome do aplicativo geralmente é encontrado após o nome do host e o carimbo de data/hora. |
comando | principal.process.command_line |
Extraídos do campo de descrição quando o registro indica uma execução de comando. |
description | metadata.description |
O campo "Descrição" é mapeado para a descrição de metadados do UDM, exceto para os registros de aplicativos syslog-ng, em que ele é mapeado para metadata.description . Para eventos DHCP, o dhcp_type é adicionado à descrição. |
dhcp_type | metadata.product_event_type |
O tipo de mensagem DHCP (por exemplo, DHCPDISCOVER, DHCPOFFER) é extraído e mapeado. |
host | intermediary.hostname OU intermediary.ip |
Se o valor do host for um endereço IP válido, ele será mapeado para intermediary.ip . Caso contrário, ele será mapeado para intermediary.hostname . |
host | principal.hostname , principal.asset.hostname |
Quando nenhum IP principal está presente, o host é tratado como o nome de host principal. |
mac | principal.mac , network.dhcp.chaddr |
O endereço MAC associado a uma solicitação DHCP é extraído e mapeado. |
src_ip | principal.ip , principal.asset.ip |
Extraídos de formatos de registro específicos usando um padrão grok. |
src_mac | principal.mac |
Extraídos de formatos de registro específicos usando um padrão grok. |
dst_mac | target.mac |
Extraídos de formatos de registro específicos usando um padrão grok. |
timestamp | metadata.event_timestamp |
O carimbo de data/hora é extraído da mensagem de registro e convertido para um formato de carimbo de data/hora do UDM. As informações de fuso horário (tz) são anexadas ao carimbo de data/hora antes da conversão, se disponível. |
timestamp_no_year | metadata.event_timestamp |
Se um carimbo de data/hora sem um ano estiver presente, ele será analisado e o ano atual será adicionado durante o processo de análise. |
usuário | principal.user.userid |
O nome de usuário associado a um evento é extraído e mapeado. |
column1 | security_result.rule_id |
É mapeado da primeira coluna do CSV se a descrição estiver no formato CSV. |
column6 | security_result.rule_type |
Mapeado da sexta coluna do CSV se a descrição estiver no formato CSV. |
column7 | security_result.action |
Mapeado da sétima coluna do CSV se a descrição estiver no formato CSV. Convertido em "BLOCK" ou "ALLOW". |
column8 | network.direction |
Mapeado da oitava coluna do CSV se a descrição estiver no formato CSV. Convertido em "INBOUND" ou "OUTBOUND". |
column13 | network.ip_protocol (se UDP ou ICMP) |
Mapeado da 13ª coluna do CSV se a descrição estiver no formato CSV e o protocolo for UDP ou ICMP. Para eventos TCP/UDP, ele é usado para criar um campo adicional com a chave "Id". |
column16 | principal.ip , principal.asset.ip (se IPv6 e coluna9 for 6) |
Mapeado da décima sexta coluna do CSV se a descrição estiver no formato CSV e a coluna 9 for 6. Para eventos TCP/UDP, ela é usada para a identificação do protocolo se a coluna9 for 4. |
column17 | target.ip , target.asset.ip (se for IPv6 e não ip_failure) |
Mapeado da 17ª coluna CSV se a descrição estiver no formato CSV, a coluna 9 for 6 e o valor for um IP válido. Para eventos TCP/UDP, ele é usado para a identificação do protocolo. |
column18 | principal.port (se for UDP) |
Mapeado da décima oitava coluna do CSV se a descrição estiver no formato CSV e o protocolo for UDP. Para eventos TCP/UDP, ele é mapeado para network.received_bytes . |
column19 | target.port (se for UDP) |
Mapeado da décima nona coluna CSV se a descrição estiver no formato CSV e o protocolo for UDP. Para eventos DHCP, ele é mapeado para network.dhcp.yiaddr . Para outros eventos, ele é mapeado para principal.ip , principal.asset.ip . |
column20 | additional.fields (chave: "data_length") (se for UDP) |
Mapeado da vigésima coluna CSV se a descrição estiver no formato CSV e o protocolo for UDP. Para outros eventos, ele é mapeado para target.ip , target.asset.ip . |
column21 | principal.port (se for TCP/UDP) |
Mapeado da 21ª coluna do CSV se a descrição estiver no formato CSV e o protocolo for TCP ou UDP. |
column22 | target.port (se for TCP/UDP) |
Mapeado da vigésima-segunda coluna CSV se a descrição estiver no formato CSV e o protocolo for TCP ou UDP. |
column23 | additional.fields (chave: "data_length") (se for TCP/UDP) |
Mapeado da 23ª coluna do CSV se a descrição estiver no formato CSV e o protocolo for TCP ou UDP. |
column24 | additional.fields (chave: "tcp_flags") (se for TCP) |
Mapeado da 24ª coluna CSV se a descrição estiver no formato CSV e o protocolo for TCP. |
column25 | additional.fields (chave: "sequence_number") (se for TCP/UDP) |
Mapeado da vigésima quinta coluna CSV se a descrição estiver no formato CSV e o protocolo for TCP ou UDP. |
column29 | additional.fields (chave: "tcp_options") (se for TCP) |
Mapeado da vigésima nona coluna CSV se a descrição estiver no formato CSV e o protocolo for TCP. |
compression_algo | additional.fields (chave: "Compression Algorithm") |
Extraídos do campo de descrição e adicionados como um campo extra. |
desc | metadata.description |
Extraídos do campo de mensagem e usados como descrição. |
principal_ip | principal.ip , principal.asset.ip |
Extraídos do campo de descrição e representam o endereço IP principal. |
principal_username | principal.user.userid |
É extraído do campo "Descrição" e representa o nome de usuário principal. |
status | security_result.detection_fields (chave: "status") |
Extraídos do campo de descrição e adicionados como um campo de detecção no resultado de segurança. |
target_host | target.hostname , target.asset.hostname |
É extraído do campo de descrição e representa o nome de host de destino. |
src_port | principal.port |
É extraído do campo de descrição e representa a porta de origem. Determinado com base em vários campos de registro e na lógica do analisador. Pode ser NETWORK_CONNECTION, NETWORK_DHCP, STATUS_UPDATE ou GENERIC_EVENT. Fixado em "PFSENSE". Fixado em "PFSENSE". Fixado em "PFSENSE". Defina como "DHCP" para eventos DHCP. Defina como "BOOTREQUEST" para DHCPDISCOVER e DHCPREQUEST e "BOOTREPLY" para DHCPOFFER e DHCPACK. Defina como "DISCOVER", "REQUEST", "OFFER" ou "ACK" com base no campo dhcp_type . |
Alterações
2024-05-08
- Foram adicionados padrões Grok para analisar o campo "description".
- "principal_ip" foi associado a "principal.ip" e "principal.asset.ip".
- "src_port" foi mapeado para "principal.port".
- "compression_algo" foi associado a "additional.fields".
- Mapeamos "status" para "security_result.detection_fields".
- "principal_username" foi associado a "principal.user.userid".
- "target_host" foi mapeado para "target.hostname" e "target.asset.hostname".
2023-05-05
- Adição de conversão para maiúsculas antes do mapeamento de "network.ip_protocol".
- "column18" foi mapeada para "principal.port" quando o protocolo está presente em "column13".
- "column19" foi mapeada para "target.port" quando o protocolo está presente em "column13".
- Mapeou "column20" para "additional.fields" como "data-length" quando o protocolo está presente em "column13".
2023-02-20
- O padrão Grok foi adicionado para oferecer suporte ao novo formato de filtro de registro e ao formato syslog-ng.
2022-10-04
- O nome do dispositivo do firewall foi remapeado para intermediary.hostname em vez de principal.hostname para registros em que event_types é "NETWORK_CONNECTION".
2022-09-05
- Enhancement-
- para registros de formato CSV mapeados nos seguintes campos.
- O padrão grok foi adicionado para extrair "IP" e "MAC".
- Mapeou "coluna19", que é "endereço-de-origem", para "network.dhcp.yiaddr".
- "security_result.action" foi mapeado para "ALLOW" quando "column7" é igual a "pass".
- Quando "column9" é igual a "6", o que indica "IPV6", os seguintes campos são mapeados:
- Mapeamos "coluna17", que é "endereço-de-destino", para "target.ip".
- Mapeou "coluna16", que é "endereço-de-origem", para "principal.ip".
- "event_type" foi associado a "NETWORK_CONNECTION" quando "column16" e "column17" não são nulos.
- Mapeamos "column12", que é "hop_limit", para "additional.fields".
- "column13", que é "ip_protocol", foi mapeada para "network.ip_protocol".
- Os analisadores personalizados foram migrados para o analisador padrão.
- Foi adicionada uma verificação condicional para definir "event_type" como "STATUS_UPDATE".
2022-06-30
- Mapeamos "ttl" para "additional.fields".
- Mapeamos "Id" para "additional.fields".
- O "Offset" foi mapeado para "additional.fields".
- Mapeamos "Comprimento de dados" para "additional.fields".
- "Length" foi mapeado para "additional.fields".
- Mapeamos "número-da-sequência" para "additional.fields".
2022-04-11
- Parser recém-criado