Recopila registros de Sophos UTM

Se admite en los siguientes sistemas operativos:

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

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recopilación.
  3. 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

  1. Accede a la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Perfil.
  3. 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

  1. Abre el símbolo del sistema o PowerShell como administrador.
  2. Ejecuta el comando siguiente:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Espera a que se complete la instalación.

  4. Ejecute el siguiente comando para verificar la instalación:

    sc query observiq-otel-collector
    

El servicio debe mostrarse como RUNNING.

Instalación en Linux

  1. Abre una terminal con privilegios de administrador o sudo.
  2. Ejecuta el comando siguiente:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Espera a que se complete la instalación.

  4. 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.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Edita el archivo de configuración

  • Reemplaza todo el contenido de config.yaml con 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: Usa udplog para el registro del sistema UDP o tcplog para el registro del sistema TCP.
      • 0.0.0.0: Dirección IP en la que se realizará la escucha (0.0.0.0 para 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
      • YOUR_CUSTOMER_ID: ID de cliente de la sección Obtén el ID de cliente
      • endpoint: 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.
      • 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, luego Enter y, después, Ctrl+X.
    • Windows: Haz clic en Archivo > Guardar

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-collector
    
    1. Verifica que el servicio esté en ejecución:

        sudo systemctl status observiq-otel-collector
      
    2. Revisa 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-collector
      
    • Consola de Services:

      1. Presiona Win+R, escribe services.msc y presiona Intro.
      2. Busca observIQ OpenTelemetry Collector.
      3. Haz clic con el botón derecho y selecciona Reiniciar.

      4. Verifica que el servicio esté en ejecución:

        sc query observiq-otel-collector
        
      5. Revisa 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

  1. Accede a la interfaz de WebAdmin de Sophos UTM.
  2. Ve a Logging & Reporting > Log Settings > Remote Syslog Server.
  3. Haz clic en el botón de activación para Habilitar el syslog remoto.
  4. Proporciona los siguientes detalles de configuración:
    • Servidor Syslog remoto: Ingresa la dirección IP del host del agente de Bindplane.
    • Puerto: Ingresa 514.
  5. 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
  6. Haz clic en Aplicar para guardar la configuración.
  7. 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.