Recopila registros de Sophos UTM
En este documento, se explica cómo transferir registros de Sophos UTM a Google Security Operations con Bindplane.
Sophos UTM (administración unificada de amenazas) es un dispositivo de seguridad de red todo en uno que proporciona funciones de firewall, VPN, prevención de intrusiones, filtrado web, filtrado de correo electrónico y antivirus. Ofrece administración de seguridad centralizada para redes empresariales a través de una sola consola de administración basada en la Web. El analizador extrae campos de los registros con formato KV de UTM de Sophos. Utiliza grok o kv para analizar el mensaje de registro y, luego, asigna estos valores al Modelo de datos unificados (UDM). También establece valores de metadatos predeterminados para la fuente y el tipo de evento.
Antes de comenzar
Asegúrate de cumplir con los siguientes requisitos previos:
- Una instancia de Google SecOps
- Windows Server 2016 o versiones posteriores, o host de Linux con
systemd - Si se ejecuta detrás de un proxy, asegúrate de que los puertos de firewall estén abiertos según los requisitos del agente de Bindplane.
- Acceso con privilegios a la interfaz de WebAdmin de Sophos UTM
Obtén el archivo de autenticación de transferencia de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recopilación.
- Descarga el archivo de autenticación de transferencia. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.
Obtén el ID de cliente de Google SecOps
- Accede a la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia y guarda el ID de cliente de la sección Detalles de la organización.
Instala el agente de Bindplane
Instala el agente de Bindplane en tu sistema operativo Windows o Linux según las siguientes instrucciones.
Instalación en Windows
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el comando siguiente:
msiexec /i "[https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi](https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi)" /quietEspera a que se complete la instalación.
Ejecuta el siguiente comando para verificar la instalación:
sc query observiq-otel-collector
El servicio debe mostrarse como RUNNING.
Instalación en Linux
- Abre una terminal con privilegios de raíz o sudo.
Ejecuta el comando siguiente:
sudo sh -c "$(curl -fsSlL [https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh](https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh))" install_unix.shEspera a que se complete la instalación.
Ejecuta el siguiente comando para verificar la instalación:
sudo systemctl status observiq-otel-collector
El servicio debería mostrarse como activo (en ejecución).
Recursos de instalación adicionales
Para obtener más opciones de instalación y solucionar problemas, consulta la guía de instalación del agente de Bindplane.
Configura el agente de BindPlane para transferir Syslog y enviarlo a Google SecOps
Ubica el archivo de configuración
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Edita el archivo de configuración
Reemplaza todo el contenido de
config.yamlpor la siguiente configuración:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: 'SOPHOS_UTM' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Parámetros de configuración
Reemplaza los marcadores de posición que se indican más abajo:
Configuración del receptor:
udplog: Usaudplogpara el registro del sistema UDP otcplogpara el registro del sistema TCP.0.0.0.0: Dirección IP en la que se realizará la escucha (0.0.0.0para escuchar en todas las interfaces)514: Número de puerto en el que se debe escuchar (puerto syslog estándar)
Configuración del exportador:
creds_file_path: Ruta de acceso completa al archivo de autenticación de la transferencia:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID: ID de cliente de la sección Obtén el ID de clienteendpoint: URL del extremo regional:- EE.UU.:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Asia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Consulta Extremos regionales para obtener la lista completa.
- EE.UU.:
log_type: Tipo de registro tal como aparece en Chronicle (SOPHOS_UTM)
Cómo guardar el archivo de configuración
- Después de editarlo, guarda el archivo:
- Linux: Presiona
Ctrl+O, luegoEntery, después,Ctrl+X. - Windows: Haz clic en Archivo > Guardar.
- Linux: Presiona
Reinicia el agente de Bindplane para aplicar los cambios
Para reiniciar el agente de Bindplane en Linux, haz lo siguiente:
Ejecuta el comando siguiente:
sudo systemctl restart observiq-otel-collectorVerifica que el servicio esté en ejecución:
sudo systemctl status observiq-otel-collectorRevisa los registros en busca de errores:
sudo journalctl -u observiq-otel-collector -f
Para reiniciar el agente de Bindplane en Windows, haz lo siguiente:
Elige una de las siguientes opciones:
- Símbolo del sistema o PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collector- Consola de Services:
- Presiona
Win+R, escribeservices.mscy presiona Intro. - Busca observIQ OpenTelemetry Collector.
- Haz clic con el botón derecho y selecciona Reiniciar.
- Presiona
Verifica que el servicio esté en ejecución:
sc query observiq-otel-collectorRevisa los registros en busca de errores:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Configura el reenvío de Syslog en Sophos UTM
- Accede a la interfaz WebAdmin de Sophos UTM.
- Ve a Logging & Reporting > Log Settings > Remote Syslog Server.
- Haz clic en el botón para Habilitar el registro del sistema remoto.
- Proporciona los siguientes detalles de configuración:
- Servidor Syslog remoto: Ingresa la dirección IP del host del agente de Bindplane.
- Puerto: Ingresa
514.
En la sección Remote Syslog Log Selection, selecciona los tipos de registros que se reenviarán:
- Filtro de paquetes: Registros del filtro de paquetes del firewall
- Filtro web: Actividad de filtrado web
- IPS: Eventos del sistema de prevención de intrusiones
- Autenticación: Eventos de autenticación de usuarios
- Correo electrónico: Eventos de cuarentena y filtrado de correos electrónicos
- Protección de la red: Registros de protección avanzada contra amenazas
- Protección del servidor web: Registros del WAF
- VPN: Eventos de conexión de VPN
- HA/Cluster: Eventos de alta disponibilidad y clúster
- Sistema: Eventos a nivel del sistema
- DHCP: Registros del servidor DHCP
- DNS: Registros de consultas de DNS
Haz clic en Aplicar para guardar la configuración.
Para verificar que se envíen los mensajes de syslog, consulta los registros del agente de Bindplane.
Tabla de asignación de UDM
| Campo de registro | Asignación de UDM | Lógica |
|---|---|---|
| acción | security_result.action | Si la acción es "pass" o "accept", se asigna a "ALLOW". Si la acción es "drop", se asigna a "BLOCK". |
| ad_domain | target.administrative_domain | Es un mapeo directo. |
| address | target.ip, target.asset.ip | Asignación directa, que se usa cuando el ID es "2203". |
| app | target.application | Es un mapeo directo. |
| app-id | additional.fields[].key, additional.fields[].value.string_value | Se cambió el nombre a app_id. Si no está vacío, la clave se establece en "app-id" y el valor es el propio app-id. |
| aplicación | principal.application | Es un mapeo directo. |
| aptptime | additional.fields[].key, additional.fields[].value.string_value | Si no está vacío, la clave se establece en "aptptime" y el valor es el aptptime en sí. |
| auth | extensions.auth.auth_details | Es un mapeo directo. |
| authtime | additional.fields[].key, additional.fields[].value.string_value | Si no está vacío y no es "0", la clave se establece en "authtime" y el valor es el propio authtime. |
| avscantime | additional.fields[].key, additional.fields[].value.string_value | Si no está vacío y no es "0", la clave se establece en "avscantime" y el valor es el propio avscantime. |
| categoría | security_result.detection_fields[].key, security_result.detection_fields[].value | Si no está vacío, la clave se establece en "category" y el valor es la categoría en sí. Si el nombre contiene "portscan", security_result.category se establece en "NETWORK_RECON" y se agrega un campo de detección con la clave "category" y el valor "NETWORK_RECON". |
| categoryname | security_result.category_details | Es un mapeo directo. |
| connection | security_result.rule_name | Asignación directa, que se usa cuando el ID es "2203". |
| Datos de tipo de contenido | (Ver otros campos) | El campo de datos contiene pares clave-valor que se analizan en campos individuales. |
| fecha y hora | metadata.event_timestamp | Se analizó y asignó como segundos desde la época. |
| dispositivo | additional.fields[].key, additional.fields[].value.string_value | Si no está vacío y no es "0", la clave se establece en "device" y el valor es el dispositivo en sí. |
| dnstime | additional.fields[].key, additional.fields[].value.string_value | Si no está vacío y no es "0", la clave se establece en "dnstime" y el valor es el propio dnstime. |
| dstip | target.ip, target.asset.ip | Es un mapeo directo. También se extrae del campo URL si está presente. |
| dstmac | target.mac | Es un mapeo directo. |
| dstport | target.port | Asignación directa, convertida en número entero. |
| Evento de error | security_result.summary | Asignación directa, que se usa cuando el ID es "2201", "2202" o "2203". |
| exceptions | additional.fields[].key, additional.fields[].value.string_value | Si no está vacío, la clave se establece en "exceptions" y el valor son las excepciones en sí. |
| archivo | about.file.full_path | Es un mapeo directo. |
| filteraction | security_result.rule_name | Es un mapeo directo. |
| fullreqtime | additional.fields[].key, additional.fields[].value.string_value | Si no está vacío, la clave se establece en "fullreqtime" y el valor es el fullreqtime en sí. |
| fwrule | security_result.rule_id | Es un mapeo directo. |
| grupo | target.group.group_display_name | Es un mapeo directo. |
| id | metadata.product_log_id | Es un mapeo directo. |
| información | security_result.description | Es un mapeo directo. Si está presente, metadata.event_type se establece en "NETWORK_UNCATEGORIZED". |
| Interfaz de initf | security_result.about.labels[].key, security_result.about.labels[].value | Si no está vacío, se agrega una etiqueta con la clave "Interface" y el valor de la interfaz a security_result.about.labels. |
| ip_address | target.ip, target.asset.ip | Es un mapeo directo. |
| Mensaje de línea de longitud | security_result.summary | Se usa cuando el ID es "0003". También se usa para el análisis general de grok. |
| método | network.http.method | Es un mapeo directo. |
| nombre | security_result.summary | Es un mapeo directo. |
| outitf pid | target.process.pid | Es un mapeo directo. |
| puerto | target.port | Asignación directa, convertida en número entero. |
| prec profile | security_result.rule_name | Es un mapeo directo. |
| protocolo | network.ip_protocol | Se convierte en el nombre del protocolo de IP con una tabla de consulta. |
| Referencia del motivo | network.http.referral_url | Es un mapeo directo. |
| solicitud | additional.fields[].key, additional.fields[].value.string_value | Si no está vacío, la clave se establece en "request" y el valor es la solicitud en sí. |
| reputación | additional.fields[].key, additional.fields[].value.string_value | Si no está vacío, la clave se establece en "reputation" y el valor es la reputación en sí. |
| rx | network.received_bytes | Asignación directa, que se usa cuando el ID es "2202" y se convierte en un número entero sin signo. |
| gravedad de la zona de pruebas | security_result.severity | Si la gravedad es "info", se asigna a "LOW". |
| tamaño | target.file.size | Es una asignación directa, convertida en un número entero sin signo. |
| srcip | principal.ip, principal.asset.ip | Es un mapeo directo. |
| srcmac | principal.mac | Es un mapeo directo. |
| srcport | principal.port | Asignación directa, convertida en número entero. |
| statuscode | network.http.response_code | Asignación directa, convertida en número entero. |
| sub | network.application_protocol | Si sub es "http", metadata.event_type se establece en "NETWORK_HTTP" y network.application_protocol se establece en "HTTP". Si sub es "packetfilter", metadata.description se establece en sub. De lo contrario, se convierte al nombre del protocolo de la aplicación con una tabla de consulta. Si no se encuentra ninguna coincidencia en la tabla de consulta, se usa el dstport para la búsqueda. |
| sys | metadata.product_event_type | Es un mapeo directo. |
| tcpflags tos ttl tx | network.sent_bytes | Asignación directa, que se usa cuando el ID es "2202" y se convierte en un número entero sin signo. |
| ua | network.http.user_agent | Es un mapeo directo. |
| url | network.http.referral_url, target.hostname, target.asset.hostname | Asignación directa para network.http.referral_url. Es el nombre de host extraído para target.hostname y target.asset.hostname. También se usa para extraer dstip. |
| usuario | target.user.userid | Es un mapeo directo. |
| nombre de usuario | target.user.userid | Asignación directa, que se usa cuando el ID es "2201" o "2202". |
| variante | No se incluye en el UDM final, pero se usa en la descripción | Se usa junto con sub para crear security_result.description cuando el ID es "2201", "2202" o "2203". |
| virtual_ip | target.ip, target.asset.ip | Asignación directa, que se usa cuando el ID es "2201" o "2202". |
| metadata.event_type | metadata.event_type | Se inicializa como "GENERIC_EVENT". Se establecen en valores específicos según el contenido del registro y la lógica del analizador. |
| metadata.log_type | metadata.log_type | Está codificado como "SOPHOS_UTM". |
| metadata.product_name | metadata.product_name | Está codificado como "SOPHOS UTM". |
| metadata.vendor_name | metadata.vendor_name | Está codificado como "SOPHOS Ltd". |
| intermediary.hostname | intermediary.hostname | Se extrae del mensaje de registro con grok y se cambia su nombre. |
content-type |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
reason |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
referer |
event.idm.read_only_udm.additional.fields |
Se asignó desde el registro de cambios |
subject |
network.email.subject |
Se asignó desde el registro de cambios |
from |
network.email.from |
Se asignó desde el registro de cambios |
to |
network.email.to |
Se asignó desde el registro de cambios |
virus |
security_result.detection_fields |
Se asignó desde el registro de cambios |
filename |
target.file.names |
Se asignó desde el registro de cambios |
severity |
security_result.severity_details |
Se asignó desde el registro de cambios |
inter_host |
intermediary.hostname |
Se asignó desde el registro de cambios |
Registro de cambios
Consulta el registro de cambios de este analizador
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.