Recopila registros de Netgate pfSense
En este documento, se describe cómo puedes recopilar los registros de Netgate pfSense con un reenviador de Google Security Operations.
Para obtener más información, consulta Transferencia de datos a Google SecOps.
Una etiqueta de transferencia identifica el analizador que normaliza los datos de registro sin procesar al formato estructurado del UDM. La información de este documento se aplica al analizador con la etiqueta de transferencia PFSENSE
.
Configura Netgate pfSense
- Accede a la interfaz de pfSense con las credenciales de administrador.
- En la configuración de Registro global, haz lo siguiente:
- Selecciona Estado > Registros del sistema > Configuración.
- En la pestaña Configuración, selecciona Opciones de registro generales y haz lo siguiente:
- En el campo Log message format, selecciona syslog (RFC 5424, con marcas de tiempo de precisión de microsegundos de RFC 3339).
- En el campo Registrar bloqueos predeterminados del firewall, selecciona las siguientes casillas de verificación:
- Registra los paquetes que coinciden con las reglas de bloqueo predeterminadas del conjunto de reglas
- Registro del paquete que coincide con las reglas de paso predeterminadas que se agregaron al conjunto de reglas
- Registra los paquetes bloqueados por las reglas "Bloquear redes bogon"
- Registra los paquetes bloqueados por las reglas "Bloquear redes privadas"
- Para guardar la configuración nueva, haz clic en Guardar.
Envía los registros del firewall a Google SecOps
- En la configuración del registro global, selecciona Estado > Registros del sistema > Configuración.
- En la pestaña Configuración, selecciona Opciones de registro remoto y haz lo siguiente:
- En el campo Habilitar registro remoto, selecciona la casilla de verificación Enviar mensajes de registro al servidor syslog remoto.
- En el campo Dirección de origen, mantén el valor predeterminado como Cualquier.
- En el campo Protocolo IP, si la dirección de origen se selecciona como el valor predeterminado, no es necesario que especifiques la dirección IP. De lo contrario, ingresa la dirección IP.
- En Servidores de registros remotos, especifica la dirección IP del reenviador de SecOps de Google.
- En Contenido de syslog remoto, selecciona la casilla de verificación Eventos de firewall.
- Para guardar los cambios, haz clic en Guardar.
Configura el reenviador de Google SecOps para transferir registros de Netgate pfSense
- Selecciona Configuración de SIEM > Redireccionamientos.
- Haz clic en Agregar nuevo remitente.
- En el campo Nombre del reenviador, ingresa un nombre único para el reenviador.
- Haz clic en Enviar y, luego, en Confirmar. Se agregará el reenviador y aparecerá la ventana Add collector configuration.
- En el campo Nombre del recopilador, escribe un nombre único para el recopilador.
- Selecciona pfSense como el Tipo de registro.
- En el campo Tipo de recopilador, selecciona Syslog.
- Configura los siguientes parámetros de entrada obligatorios:
- Protocolo: Especifica el protocolo de conexión que usa el recopilador para escuchar datos de syslog.
- Dirección: Especifica la dirección IP o el nombre de host de destino donde reside el recopilador y escucha los datos de syslog.
- Puerto: Especifica el puerto de destino en el que reside el recopilador y escucha los datos de syslog.
- Haz clic en Enviar.
Para obtener más información sobre los reenvíos de Google SecOps, consulta Cómo administrar las configuraciones de reenvío a través de la IU de Google SecOps.
Si tienes problemas cuando creas reenvío de puertos, comunícate con el equipo de asistencia de SecOps de Google.
Referencia de la asignación de campos
Este analizador de firewall de pfSense extrae campos de los mensajes de syslog con patrones de grok y controla varios formatos de registro, incluidos los eventos de DHCP y firewall. Luego, asigna estos campos extraídos a la UDM y enriquece los datos con información contextual, como direcciones IP, direcciones MAC, nombres de usuario y detalles de la red.
Tabla de asignación de la UDM
Campo de registro | Asignación de UDM | Lógica |
---|---|---|
aplicación | principal.application |
El valor se extrae del mensaje de registro con patrones de grok. En el caso de los mensajes de syslog, el nombre de la aplicación suele aparecer después del nombre de host y la marca de tiempo. |
comando | principal.process.command_line |
Se extrae del campo de descripción cuando el registro indica una ejecución de comando. |
descripción | metadata.description |
El campo de descripción se asigna a la descripción de metadatos de la UDM, excepto para los registros de la aplicación syslog-ng, en los que se asigna a metadata.description . En el caso de los eventos de DHCP, dhcp_type se agrega al principio de la descripción. |
dhcp_type | metadata.product_event_type |
El tipo de mensaje DHCP (p.ej., DHCPDISCOVER, DHCPOFFER) se extrae y asigna. |
host | intermediary.hostname O intermediary.ip |
Si el valor del host es una dirección IP válida, se asigna a intermediary.ip . De lo contrario, se asigna a intermediary.hostname . |
host | principal.hostname , principal.asset.hostname |
Cuando no hay una IP principal, el host se considera el nombre de host principal. |
mac | principal.mac , network.dhcp.chaddr |
Se extrae y asigna la dirección MAC asociada con una solicitud de DHCP. |
src_ip | principal.ip , principal.asset.ip |
Se extraen de formatos de registro específicos con un patrón de grok. |
src_mac | principal.mac |
Se extraen de formatos de registro específicos con un patrón de grok. |
dst_mac | target.mac |
Se extraen de formatos de registro específicos con un patrón de grok. |
timestamp | metadata.event_timestamp |
La marca de tiempo se extrae del mensaje de registro y se convierte a un formato de marca de tiempo de la AUA. Si está disponible, la información de zona horaria (tz) se adjunta a la marca de tiempo antes de la conversión. |
timestamp_no_year | metadata.event_timestamp |
Si hay una marca de tiempo sin un año, se analiza y se agrega el año actual durante el proceso de análisis. |
usuario | principal.user.userid |
Se extrae y asigna el nombre de usuario asociado con un evento. |
column1 | security_result.rule_id |
Se asigna a partir de la primera columna del archivo CSV si la descripción está en formato CSV. |
column6 | security_result.rule_type |
Se asigna a partir de la sexta columna del archivo CSV si la descripción está en formato CSV. |
column7 | security_result.action |
Se asigna a partir de la séptima columna del archivo CSV si la descripción está en formato CSV. Se convirtió en "BLOQUEAR" o "PERMITIR". |
column8 | network.direction |
Se asigna a partir de la octava columna del archivo CSV si la descripción está en formato CSV. Se convirtió en "INBOUND" o "OUTBOUND". |
column13 | network.ip_protocol (si es UDP o ICMP) |
Se asigna desde la decimotercera columna CSV si la descripción está en formato CSV y el protocolo es UDP o ICMP. En el caso de los eventos TCP/UDP, se usa para crear un campo adicional con la clave "Id". |
column16 | principal.ip , principal.asset.ip (si es IPv6 y column9 es 6) |
Se asigna a partir de la decimosexta columna del archivo CSV si la descripción está en formato CSV y la columna 9 es 6. En el caso de los eventos TCP/UDP, se usa para la identificación del protocolo si column9 es 4. |
column17 | target.ip , target.asset.ip (si es IPv6 y no ip_failure) |
Se asigna desde la decimoséptima columna CSV si la descripción está en formato CSV, la columna 9 es 6 y el valor es una IP válida. En el caso de los eventos TCP/UDP, se usa para la identificación del protocolo. |
column18 | principal.port (si es UDP) |
Se asigna desde la decimoctava columna del archivo CSV si la descripción está en formato CSV y el protocolo es UDP. Para los eventos TCP/UDP, se asigna a network.received_bytes . |
column19 | target.port (si es UDP) |
Se asigna desde la decimonovena columna CSV si la descripción está en formato CSV y el protocolo es UDP. Para los eventos de DHCP, se asigna a network.dhcp.yiaddr . Para otros eventos, se asigna a principal.ip , principal.asset.ip . |
column20 | additional.fields (clave: "data_length") (si es UDP) |
Se asigna desde la vigésima columna CSV si la descripción está en formato CSV y el protocolo es UDP. Para otros eventos, se asigna a target.ip , target.asset.ip . |
column21 | principal.port (si es TCP/UDP) |
Se asigna desde la vigésima primera columna del archivo CSV si la descripción está en formato CSV y el protocolo es TCP o UDP. |
column22 | target.port (si es TCP/UDP) |
Se asigna desde la vigésima segunda columna del archivo CSV si la descripción está en formato CSV y el protocolo es TCP o UDP. |
column23 | additional.fields (clave: "data_length") (si es TCP/UDP) |
Se asigna desde la vigésima tercera columna CSV si la descripción está en formato CSV y el protocolo es TCP o UDP. |
column24 | additional.fields (clave: "tcp_flags") (si es TCP) |
Se asigna desde la vigésimo cuarta columna CSV si la descripción está en formato CSV y el protocolo es TCP. |
column25 | additional.fields (clave: "sequence_number") (si es TCP/UDP) |
Se asigna a partir de la vigésima quinta columna del archivo CSV si la descripción está en formato CSV y el protocolo es TCP o UDP. |
column29 | additional.fields (clave: "tcp_options") (si es TCP) |
Se asigna desde la vigésima novena columna CSV si la descripción está en formato CSV y el protocolo es TCP. |
compression_algo | additional.fields (clave: "Compression Algorithm") |
Se extrae del campo de descripción y se agrega como un campo adicional. |
desc | metadata.description |
Se extrae del campo de mensaje y se usa como descripción. |
principal_ip | principal.ip , principal.asset.ip |
Se extrae del campo de descripción y representa la dirección IP principal. |
principal_username | principal.user.userid |
Se extrae del campo de descripción y representa el nombre de usuario principal. |
estado | security_result.detection_fields (clave: "status") |
Se extrae del campo de descripción y se agrega como un campo de detección dentro del resultado de seguridad. |
target_host | target.hostname , target.asset.hostname |
Se extrae del campo de descripción y representa el nombre de host de destino. |
src_port | principal.port |
Se extrae del campo de descripción y representa el puerto de origen. Se determina en función de varios campos de registro y la lógica del analizador. Puede ser NETWORK_CONNECTION, NETWORK_DHCP, STATUS_UPDATE o GENERIC_EVENT. Está codificado de forma fija en “PFSENSE”. Está codificado de forma fija en “PFSENSE”. Está codificado de forma fija en “PFSENSE”. Establece el valor en "DHCP" para los eventos de DHCP. Establece en “BOOTREQUEST” para DHCPDISCOVER y DHCPREQUEST, y en “BOOTREPLY” para DHCPOFFER y DHCPACK. Establece el valor en "DISCOVER", "REQUEST", "OFFER" o "ACK" según el campo dhcp_type . |
Cambios
2024-05-08
- Se agregaron patrones de Grok para analizar el campo "description".
- Se asignó "principal_ip" a "principal.ip" y "principal.asset.ip".
- Se asignó "src_port" a "principal.port".
- Se asignó "compression_algo" a "additional.fields".
- Se asignó "status" a "security_result.detection_fields".
- Se asignó "principal_username" a "principal.user.userid".
- Se asignó "target_host" a "target.hostname" y "target.asset.hostname".
2023-05-05
- Se agregó la conversión a mayúsculas antes de asignar "network.ip_protocol".
- Se asignó "column18" a "principal.port" cuando el protocolo está presente en "column13".
- Se asignó "column19" a "target.port" cuando el protocolo está presente en "column13".
- Se asignó "column20" a "additional.fields" como "data-length" cuando el protocolo está presente en "column13".
2023-02-20
- Se agregó el patrón Grok para admitir el nuevo formato de registro de filtro y el formato syslog-ng.
2022-10-04
- Se volvió a asignar el nombre del dispositivo de firewall a intermediary.hostname en lugar de principal.hostname para los registros en los que event_types es "NETWORK_CONNECTION".
2022-09-05
- Enhancement-
- para los registros de formato CSV asignados a los siguientes campos.
- Se agregó el patrón grok para recuperar "IP" y "MAC".
- Se asignó "column19", que es "source-address", a "network.dhcp.yiaddr".
- Se asignó "security_result.action" a "ALLOW" cuando "column7" es igual a "pass".
- Cuando "column9" es igual a "6", que indica "IPv6", se asignan los siguientes campos:
- Se asignó "column17", que es "destination-address", a "target.ip".
- Se asignó "column16", que es "source-address", a "principal.ip".
- Se asignó "event_type" a "NETWORK_CONNECTION" cuando "column16" y "column17" no son nulos.
- Se asignó "column12", que es "hop_limit", a "additional.fields".
- Se asignó "column13", que es "ip_protocol", a "network.ip_protocol".
- Se migraron los analizadores personalizados al analizador predeterminado.
- Se agregó una verificación condicional para establecer "event_type" en "STATUS_UPDATE".
2022-06-30
- Se asignó "ttl" a "additional.fields".
- Se asignó "Id" a "additional.fields".
- Se asignó "Offset" a "additional.fields".
- Se asignó "Data length" a "additional.fields".
- Se asignó "Longitud" a "additional.fields".
- Se asignó "Sequence-number" a "additional.fields".
2022-04-11
- Analizador creado recientemente