Recoger registros de Sophos Capsule8

Disponible en:

En este documento se explica cómo recoger registros de Sophos Linux Sensor (antes Capsule8) mediante Bindplane. Sophos Capsule8 ofrece protección en tiempo de ejecución para cargas de trabajo de Linux, contenedores y entornos de Kubernetes. Para ello, detecta las amenazas a nivel de kernel y responde a ellas mediante la tecnología eBPF. El analizador primero extrae y estructura los datos de registro en formato JSON. A continuación, asigna los campos extraídos a sus atributos correspondientes en el modelo de datos unificado (UDM) de Chronicle, centrándose en los metadatos, los resultados de seguridad y la información principal.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Una instancia de Google SecOps
  • Windows 2016 o versiones posteriores, o un host Linux con systemd
  • Un ordenador adicional con Windows o Linux que pueda ejecutar Python de forma continua
  • Si se ejecuta a través de un proxy, asegúrese de que los puertos del cortafuegos estén abiertos según los requisitos del agente de Bindplane.
  • Acceso privilegiado a la consola de administración de Sophos Central
  • Sophos Linux Sensor (antes Capsule8) implementado en tus sistemas Linux

Configurar Sophos Linux Sensor para exportar alertas a Sophos Central

Antes de configurar la integración, debe configurar Sophos Linux Sensor para que envíe datos de alertas a Sophos Central.

Requisitos previos para la integración de Sophos Central

  1. Sophos Linux Sensor versión 5.5.2.22 o posterior.
  2. Una de las siguientes licencias:
    • Intercept X Advanced for Server con XDR
    • Central Managed Detection and Response Essential Server
    • Central Managed Detection and Response Complete Server
  3. La URL de MCS de Sophos Central y el ID de cliente.
  4. Un token de API de repositorio de paquetes de SLS válido.

Buscar la URL de MCS

  1. Inicia sesión en Sophos Central.
  2. Haz clic en el nombre de tu cuenta > Configuración de asistencia.
  3. Busque la línea que empieza por This account is located para saber en qué región geográfica se encuentra su cuenta de Sophos Central.
  4. Consulta la siguiente tabla para encontrar tu URL de MCS en función de tu región:

    Región URL de MCS
    Estados Unidos (Oregón) mcs2-cloudstation-us-west-2.prod.hydra.sophos.com
    Estados Unidos (Ohio) mcs2-cloudstation-us-east-2.prod.hydra.sophos.com
    Irlanda mcs2-cloudstation-eu-west-1.prod.hydra.sophos.com
    Alemania mcs2-cloudstation-eu-central-1.prod.hydra.sophos.com
    Canadá mcs2.stn100yul.ctr.sophos.com
    Australia mcs2.stn100syd.ctr.sophos.com
    Asia-Pacífico (Tokio) mcs2.stn100hnd.ctr.sophos.com
    Sudamérica (São Paulo) mcs2.stn100gru.ctr.sophos.com

Si tu región no aparece en la tabla, usa mcs2.stn100bom.ctr.sophos.com como URL de MCS.

Configurar la salida de alertas de Sophos Linux Sensor

  1. Abre /etc/sophos/runtimedetections.yaml en un editor de texto.
  2. Añada las siguientes líneas y sustituya los valores de marcador de posición por los detalles reales de Sophos Central:

    send_labs_telemetry: true
    endpoint_telemetry_enabled: true
    cloud_meta: auto
    
    # Set your customer id:
    customer_id: "{tenant-id}"
    
    mcs:
      token: "{LINUX_REPO_API_KEY}"
      url: "{MCS_URL}"
      enabled: true
    
  3. Guarda los cambios y sal.

  4. Reinicia el sensor:

    systemctl restart sophoslinuxsensor
    

Opcional: Configurar Sophos Linux Sensor para enviar metaeventos a Data Lake

A partir de la versión 5.11.0, SLS admite el envío de datos de eventos al lago de datos de Sophos.

  1. Abre /etc/sophos/runtimedetections.yaml en un editor de texto.
  2. Añade la siguiente configuración:

    investigations:
      reporting_interval: 5s
      zeromq:
        topics:
        - process_events: running_processes_linux_events
          audit_user_msg: user_events_linux
      sinks:
      - backend: mcs
        name: "mcs"
        type: mcs
      flight_recorder:
        enabled: true
        tables:
        - name: "process_events"
          enabled: true
          rows: 1000
          filter:
          - match eventType == "PROCESS_EVENT_TYPE_EXEC"
          - match eventType == "BASELINE_TASK"
          - default ignore
        - name: "audit_user_msg"
          enabled: true
          rows: 1000
          filter:
          - ignore programName == "cron"
          - ignore processPid == 1
          - default match
    
  3. Guarda los cambios y sal.

  4. Reinicia el sensor:

    systemctl restart sophoslinuxsensor
    

Obtener el archivo de autenticación de ingestión de Google SecOps

  1. Inicia sesión en la consola de Google SecOps.
  2. Ve a Configuración de SIEM > Agentes de recogida.
  3. Descarga el archivo de autenticación de ingestión. Guarda el archivo de forma segura en el sistema en el que se instalará Bindplane.

Obtener el ID de cliente de Google SecOps

  1. Inicia sesión en 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.

Instalar el agente de Bindplane

Instalación de ventanas

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

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalación de Linux

  1. Abre un terminal con privilegios de superusuario o sudo.
  2. Ejecuta el siguiente comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

Recursos de instalación adicionales

Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps

  1. Accede al archivo de configuración:

    1. Busca el archivo config.yaml. Normalmente, se encuentra en el directorio /etc/bindplane-agent/ en Linux o en el directorio de instalación en Windows.
    2. Abre el archivo con un editor de texto (por ejemplo, nano, vi o Bloc de notas).
  2. Edita el archivo config.yaml de la siguiente manera:

    receivers:
      udplog:
        # Replace the port and IP address as required
        listen_address: "0.0.0.0:514"
    
    exporters:
      chronicle/chronicle_w_labels:
        compression: gzip
        # Adjust the path to the credentials file you downloaded in Step 1
        creds_file_path: '/path/to/ingestion-authentication-file.json'
        # Replace with your actual customer ID from Step 2
        customer_id: <customer_id>
        endpoint: malachiteingestion-pa.googleapis.com
        # Add optional ingestion labels for better organization
        log_type: 'SOPHOS_CAPSULE8'
        raw_log_field: body
        ingestion_labels:
    
    service:
      pipelines:
        logs/source0__chronicle_w_labels-0:
          receivers:
            - udplog
          exporters:
            - chronicle/chronicle_w_labels
    

Reinicia el agente de Bindplane para aplicar los cambios

  • Para reiniciar el agente de Bindplane en Linux, ejecuta el siguiente comando:

    sudo systemctl restart bindplane-agent
    
  • Para reiniciar el agente de Bindplane en Windows, puedes usar la consola Servicios o introducir el siguiente comando:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Configurar el acceso a la API de Sophos Central

  1. Inicia sesión en Sophos Central Admin.
  2. Selecciona Configuración global > Gestión de tokens de API.
  3. Haz clic en Añadir token para crear uno.
  4. Introduce un nombre para el token y haz clic en Guardar. Se mostrará el resumen del token de la API del token proporcionado.
  5. En la sección Resumen del token de la API, haz clic en Copiar para copiar la URL de acceso a la API y los encabezados.

Instalar Python en otra máquina

  1. Abre el navegador web y ve al sitio web de Python.
  2. Haz clic en Descargar Python para tu sistema operativo.
  3. Instala Python:

    • En Windows:
      1. Ejecuta el instalador.
      2. Marca la casilla Add Python to PATH (Añadir Python a PATH).
      3. Haz clic en Instalar ahora.
    • En Mac:

      1. Puede que Python ya esté instalado. Si no es así, puedes instalar la versión más reciente mediante la terminal.
      2. Abre Terminal y escribe el siguiente comando:

        python --version
        

Descargar la secuencia de comandos de integración de Sophos

  1. Ve a la página de GitHub del repositorio de GitHub de integración de SIEM de Sophos Central.
  2. Haz clic en el botón verde Código > Descargar ZIP.
  3. Extrae el archivo ZIP.

Configurar el script

  1. Abre el archivo config.ini en el directorio donde hayas extraído el archivo ZIP.
  2. Edita el archivo de configuración:
    • Token de la API: introduce la clave de la API que has copiado anteriormente de Sophos Central.
    • Detalles del servidor Syslog: introduce los detalles de tu servidor Syslog.
    • Host: introduce la dirección IP del agente de BindPlane.
    • Puerto: introduce el número de puerto del agente de BindPlane.
    • Protocolo: introduce UDP (también puedes usar TCP o TLS en función de tu configuración).
  3. Guarda el archivo.

Ejecutar la secuencia de comandos

  1. Ve a la carpeta de secuencias de comandos.

    • En Windows:

      1. Pulsa la tecla Windows y escribe cmd.
      2. Haz clic en Símbolo del sistema.
      3. Ve a la carpeta de secuencias de comandos:
      cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
    • En macOS:

      1. Ve a Aplicaciones > Utilidades.
      2. Abre la aplicación Terminal.
      3. Ve a la carpeta de secuencias de comandos:
      cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
      
  2. Ejecuta la secuencia de comandos:

    • Escribe el siguiente comando para iniciar la secuencia de comandos:

      python siem.py
      

Automatiza la secuencia de comandos para que se ejecute continuamente en Windows (con el Programador de tareas):

  1. Abre Programador de tareas escribiendo Programador de tareas en el menú Inicio.
  2. Haz clic en Crear tarea.
  3. En la pestaña General:
    • Ponle un nombre a la tarea (por ejemplo, Sophos AV Log Export).
  4. En la pestaña Activadores:
    • Haz clic en Nuevo y configura la tarea para que se ejecute Diariamente o Al inicio (según tus preferencias).
  5. En la pestaña Acciones:
    • Haz clic en Nuevo y selecciona Iniciar un programa.
    • Busca el archivo ejecutable python.exe (normalmente se encuentra en C:/Python/XX/python.exe).
    • En el campo Add arguments (Añadir argumentos), escribe la ruta a la secuencia de comandos (por ejemplo, C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integrationsiem.py).
  6. Haz clic en Aceptar para guardar la tarea.

Automatiza la secuencia de comandos para que se ejecute de forma continua en Mac (con tareas cron):

  1. Abre Terminal.
  2. Escribe crontab -e y pulsa Intro.
  3. Añade una línea nueva al final del archivo:

    * * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
    
  4. Haz clic en Guardar y cierra el editor.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
categorías read_only_udm.security_result.category_details Cada elemento de la matriz de categorías se añade como un elemento category_details independiente.
comentarios read_only_udm.security_result.description Se asigna directamente desde el campo de comentarios.
confianza read_only_udm.security_result.severity_details Se asigna directamente desde el campo de confianza.
description read_only_udm.security_result.summary Se asigna directamente desde el campo de descripción.
incident_id read_only_udm.security_result.rule_id Se asigna directamente desde el campo incident_id.
linaje principal.process.parent_process... La matriz de linaje se usa para rellenar una cadena de procesos principales, con una profundidad de hasta 15 niveles. Cada elemento de la matriz de linaje representa un proceso de la cadena. El índice 0 es el elemento superior inmediato y los índices más altos representan los antecesores más lejanos. Los campos pid y name de cada elemento de linaje se asignan a los campos correspondientes de UDM.
location.container_id principal.labels.value Se asigna directamente desde el campo location.container_id. La clave correspondiente es "container_id".
location.container_labels.maintainer principal.labels.value Se asigna directamente desde el campo location.container_labels.maintainer. La clave correspondiente es "maintainer".
location.container_name principal.labels.value Se asigna directamente desde el campo location.container_name. La clave correspondiente es "container_name".
location.image_id principal.labels.value Se asigna directamente desde el campo location.image_id. La clave correspondiente es "image_id".
location.image_name principal.labels.value Se asigna directamente desde el campo location.image_name. La clave correspondiente es "image_name".
location.kubernetes_namespace principal.labels.value Se asigna directamente desde el campo location.kubernetes_namespace. La clave correspondiente es "kubernetes_namespace".
location.kubernetes_pod principal.labels.value Se asigna directamente desde el campo location.kubernetes_pod. La clave correspondiente es "kubernetes_pod".
matched_rule read_only_udm.security_result.rule_name Se asigna directamente desde el campo matched_rule.
metadata.gcp_instance_hostname principal.hostname Se asigna directamente desde el campo metadata.gcp_instance_hostname.
metadata.gcp_instance_zone principal.cloud.availability_zone La zona de disponibilidad se extrae del campo metadata.gcp_instance_zone mediante una expresión regular.
metadata.gcp_project_id principal.cloud.project.name Se asigna directamente desde el campo metadata.gcp_project_id.
metadata.gcp_project_numeric_id principal.cloud.project.id Se asigna directamente desde el campo metadata.gcp_project_numeric_id.
metadata.network_interface_eth0_addr_0 principal.ip La dirección IP se extrae del campo metadata.network_interface_eth0_addr_0 mediante una expresión regular.
metadata.network_interface_eth0_hardware_addr principal.mac Se asigna directamente desde el campo metadata.network_interface_eth0_hardware_addr.
policy_type read_only_udm.metadata.product_event_type Se asigna directamente desde el campo policy_type.
process_info.args principal.labels.value Cada elemento de la matriz process_info.args se añade como una etiqueta independiente. La clave se define como "process_info.arg[index]", donde index es la posición del argumento en la matriz.
process_info.name principal.process.file.full_path Se asigna directamente desde el campo process_info.name.
process_info.pid principal.process.pid Se asigna directamente desde el campo process_info.pid.
process_info.ppid principal.process.parent_process.pid Se asigna directamente desde el campo process_info.ppid.
prioridad read_only_udm.security_result.severity Se asigna directamente desde el campo de prioridad y se convierte a mayúsculas.
timestamp read_only_udm.metadata.event_timestamp Se asigna directamente desde el campo de marca de tiempo.
uuid read_only_udm.metadata.product_log_id Se asigna directamente desde el campo uuid.
N/A read_only_udm.metadata.log_type Se debe asignar el valor constante "SOPHOS_CAPSULE8".
N/A read_only_udm.metadata.event_type Se asigna al valor constante "SCAN_HOST".
N/A read_only_udm.metadata.vendor_name Se asigna el valor constante "Sophos".
N/A read_only_udm.metadata.product_name Se asigna el valor constante "Capsule8".

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.