Recopila registros de firewall de OPNsense
Este analizador extrae campos de los registros del firewall de OPNsense (formatos syslog y CSV) y los asigna al UDM. Utiliza el análisis de grok y CSV para los registros de la aplicación "filterlog", y controla diferentes formatos de registro y protocolos de red (TCP, UDP, ICMP, etcétera) para completar los campos de UDM, como principal, destino, red y security_result. También agrega metadatos, como el nombre del proveedor y del producto, y determina el tipo de evento según la presencia de información principal y de destino.
Antes de comenzar
- Asegúrate de tener una instancia de Google Security Operations.
- Asegúrate de tener acceso con privilegios a la interfaz web de OPNsense.
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a SIEM Settings > Collection Agents.
- Descarga el archivo de autenticación de transferencia.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración del SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de BindPlane
- Para la instalación en Windows, ejecuta la siguiente secuencia de comandos:
 msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
- Para la instalación en Linux, ejecuta la siguiente secuencia de comandos:
 sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
- Puedes encontrar opciones de instalación adicionales en esta guía de instalación.
Configura el agente de Bindplane para que ingiera Syslog y lo envíe a Google SecOps
- Accede a la máquina en la que está instalado el agente de BindPlane.
- Edita el archivo - config.yamlde la siguiente manera:- receivers: tcplog: # Replace the below port <54525> and IP (0.0.0.0) with your specific values listen_address: "0.0.0.0:54525" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the creds location below according the placement of the credentials file you downloaded creds: '{ json file for creds }' # Replace <customer_id> below with your actual ID that you copied customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # You can apply ingestion labels below as preferred ingestion_labels: log_type: SYSLOG namespace: testNamespace raw_log_field: body service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - tcplog exporters: - chronicle/chronicle_w_labels
- Reinicia el agente de Bindplane para aplicar los cambios con el siguiente comando: - sudo systemctl bindplane restart
Agrega la configuración del servidor Syslog a OPNsense
- Accede a la interfaz web de OPNsense.
- Ve a Sistema > Configuración > Registro.
- En la sección Remote Logging, habilita Send logs to remote syslog server marcando la casilla.
- En el campo Servidores Syslog remotos, ingresa la dirección IP del servidor Syslog, incluido el PUERTO (por ejemplo, 10.10.10.10:54525).
- Selecciona Local0 como la instalación de syslog.
- Establece el nivel de Syslog como Alerta. 
- Haz clic en Guardar para aplicar los cambios. 
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica | 
|---|---|---|
| column1 | security_result.rule_id | Se asigna directamente desde column1. | 
| column10 | additional.fields[].key: "tos"additional.fields[].value.string_value: Valor decolumn10 | Se asigna directamente desde column10, anidado enadditional.fieldscon la clave "tos". | 
| column12 | additional.fields[].key: "ttl"additional.fields[].value.string_value: Valor decolumn12 | Se asigna directamente desde column12, anidado enadditional.fieldscon la clave "ttl". | 
| column13 | additional.fields[].key: "Id"additional.fields[].value.string_value: Valor decolumn13 | Se asigna directamente desde column13, anidado enadditional.fieldscon la clave "Id". | 
| column14 | additional.fields[].key: "offset"additional.fields[].value.string_value: Valor decolumn14 | Se asigna directamente desde column14y se anida enadditional.fieldscon la clave "offset". | 
| column15 | additional.fields[].key: "flags"additional.fields[].value.string_value: Valor decolumn15 | Se asigna directamente desde column15, anidado enadditional.fieldscon la clave "flags". | 
| column17 | network.ip_protocol | Se asigna directamente desde column17después de convertirlo a mayúsculas. | 
| column18 | network.received_bytes | Se asigna directamente desde column18después de convertirlo en un número entero sin signo. | 
| column19 | principal.ip | Se asigna directamente desde column19. | 
| column20 | target.ip | Se asigna directamente desde column20. | 
| column21 | principal.port(sicolumn17es TCP o UDP)additional.fields[].key: "data_length"additional.fields[].value.string_value: Valor extraído (sicolumn17es ICMP, GRE, ESP o IGMP) | Si column17es TCP/UDP, se asigna directamente desdecolumn21y se convierte en un número entero. De lo contrario, el valor de "datalength" se extrae con grok y se coloca enadditional.fieldscon la clave "data_length". | 
| column22 | target.port | Se asigna directamente desde column22sicolumn17es TCP o UDP, y se convierte en un número entero. | 
| column24 | additional.fields[].key: "tcp_flags"additional.fields[].value.string_value: Valor decolumn24 | Se asigna directamente desde column24sicolumn17es TCP, anidado enadditional.fieldscon la clave "tcp_flags". | 
| column29 | additional.fields[].key: "tcp_options"additional.fields[].value.string_value: Valor decolumn29 | Se asigna directamente desde column29sicolumn17es TCP, anidado enadditional.fieldscon la clave "tcp_options". | 
| column4 | additional.fields[].key: "tracker"additional.fields[].value.string_value: Valor decolumn4 | Se asigna directamente desde column4, anidado enadditional.fieldscon la clave "tracker". | 
| column5 | additional.fields[].key: "interface"additional.fields[].value.string_value: Valor decolumn5 | Se asigna directamente desde column5, anidado enadditional.fieldscon la clave "interface". | 
| column6 | security_result.rule_type | Se asigna directamente desde column6. | 
| column7 | security_result.action | Se asignó desde column7. Si es "block", se convierte en mayúsculas "BLOCK". Si es "pass", se establece en "ALLOW". | 
| column8 | network.direction | Se asignó desde column8. Si es "in", se debe establecer como "INBOUND". Si es "out", se establece en "OUTBOUND". | 
| domain | principal.administrative_domain | Se asigna directamente desde el domainextraído por Grok. Se establece en "NETWORK_CONNECTION" si están presentes la dirección IP principal y la de destino; de lo contrario, se establece en "GENERIC_EVENT".  Se codificó como "OPNSENSE". Se codificó como "OPNSENSE". | 
| message | Varios campos | Se analizó con los filtros grok y csv para extraer varios campos. Consulta otras filas para ver las asignaciones específicas. | 
| ts | metadata.event_timestamp.seconds,timestamp.seconds | Se analiza a partir del campo de mensaje con grok y, luego, se convierte en una marca de tiempo. El valor de segundos se usa para completar metadata.event_timestamp.secondsytimestamp.seconds. | 
| application | principal.application | Se asigna directamente desde el applicationextraído por Grok. | 
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.