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 Sophos UTM. 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 el origen y el tipo del 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" /quietEspera a que se complete la instalación.
Ejecute 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 administrador o sudo.
Ejecuta el comando siguiente:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shEspera a que se complete la instalación.
Ejecute 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.yamlcon 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)
Guarda 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, ejecuta el siguiente comando:
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, elige una de las siguientes opciones:
Símbolo del sistema o PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collectorConsola de Services:
- Presiona
Win+R, escribeservices.mscy presiona Intro. - Busca observIQ OpenTelemetry Collector.
Haz clic con el botón derecho y selecciona Reiniciar.
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"
- Presiona
Configura el reenvío de Syslog en Sophos UTM
- Accede a la interfaz de WebAdmin de Sophos UTM.
- Ve a Logging & Reporting > Log Settings > Remote Syslog Server.
- Haz clic en el botón de activación para Habilitar el syslog 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 de servidores 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 | Asignación directa |
| address | target.ip, target.asset.ip | Asignación directa, que se usa cuando el ID es "2203". |
| app | target.application | Asignación directa |
| 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 | Asignación directa |
| 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 | Asignación directa |
| 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. |
| category | 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 | Asignación directa |
| 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 se asignó como segundos desde el ciclo. |
| 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 | Asignación directa También se extrae del campo URL si está presente. |
| dstmac | target.mac | Asignación directa |
| dstport | target.port | Es el mapeo directo, convertido a 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 | Asignación directa |
| filteraction | security_result.rule_name | Asignación directa |
| 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 | Asignación directa |
| grupo | target.group.group_display_name | Asignación directa |
| id | metadata.product_log_id | Asignación directa |
| información | security_result.description | Asignación directa 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 | Asignación directa |
| 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 | Asignación directa |
| nombre | security_result.summary | Asignación directa |
| outitf pid | target.process.pid | Asignación directa |
| puerto | target.port | Es el mapeo directo, convertido a número entero. |
| prec profile | security_result.rule_name | Asignación directa |
| protocolo | network.ip_protocol | Se convierte al nombre del protocolo de IP con una tabla de búsqueda. |
| Referencia del motivo | network.http.referral_url | Asignación directa |
| 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 debe asignar a "LOW". |
| tamaño | target.file.size | Es un mapeo directo, convertido en un número entero sin signo. |
| srcip | principal.ip, principal.asset.ip | Asignación directa |
| srcmac | principal.mac | Asignación directa |
| srcport | principal.port | Es el mapeo directo, convertido a número entero. |
| statuscode | network.http.response_code | Es el mapeo directo, convertido a 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 búsqueda. Si no se encuentra ninguna coincidencia en la tabla de búsqueda, se usa el dstport para la búsqueda. |
| sys | metadata.product_event_type | Asignación directa |
| 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 | Asignación directa |
| url | network.http.referral_url, target.hostname, target.asset.hostname | Es la 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 | Asignación directa |
| 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. |
¿Necesitas más ayuda? Obtén respuestas de miembros de la comunidad y profesionales de Google SecOps.