Recoger registros de Sophos Capsule8
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
- Sophos Linux Sensor versión 5.5.2.22 o posterior.
- 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
- La URL de MCS de Sophos Central y el ID de cliente.
- Un token de API de repositorio de paquetes de SLS válido.
Buscar la URL de MCS
- Inicia sesión en Sophos Central.
- Haz clic en el nombre de tu cuenta > Configuración de asistencia.
- 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. 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
- Abre
/etc/sophos/runtimedetections.yaml
en un editor de texto. 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
Guarda los cambios y sal.
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.
- Abre
/etc/sophos/runtimedetections.yaml
en un editor de texto. 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
Guarda los cambios y sal.
Reinicia el sensor:
systemctl restart sophoslinuxsensor
Obtener el archivo de autenticación de ingestión de Google SecOps
- Inicia sesión en la consola de Google SecOps.
- Ve a Configuración de SIEM > Agentes de recogida.
- 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
- Inicia sesión en 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.
Instalar el agente de Bindplane
Instalación de ventanas
- Abre el símbolo del sistema o PowerShell como administrador.
Ejecuta el siguiente comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalación de Linux
- Abre un terminal con privilegios de superusuario o sudo.
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
- Para ver otras opciones de instalación, consulta esta guía de instalación.
Configurar el agente de BindPlane para ingerir Syslog y enviarlo a Google SecOps
Accede al archivo de configuración:
- 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. - Abre el archivo con un editor de texto (por ejemplo,
nano
,vi
o Bloc de notas).
- Busca el archivo
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
- Sustituye el puerto y la dirección IP según sea necesario en tu infraestructura.
- Sustituye
<customer_id>
por el ID de cliente real. - Actualiza
/path/to/ingestion-authentication-file.json
a la ruta en la que se guardó el archivo de autenticación en la sección Obtener el archivo de autenticación de ingestión de Google SecOps.
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
- Inicia sesión en Sophos Central Admin.
- Selecciona Configuración global > Gestión de tokens de API.
- Haz clic en Añadir token para crear uno.
- Introduce un nombre para el token y haz clic en Guardar. Se mostrará el resumen del token de la API del token proporcionado.
- 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
- Abre el navegador web y ve al sitio web de Python.
- Haz clic en Descargar Python para tu sistema operativo.
Instala Python:
- En Windows:
- Ejecuta el instalador.
- Marca la casilla Add Python to PATH (Añadir Python a PATH).
- Haz clic en Instalar ahora.
En Mac:
- Puede que Python ya esté instalado. Si no es así, puedes instalar la versión más reciente mediante la terminal.
Abre Terminal y escribe el siguiente comando:
python --version
- En Windows:
Descargar la secuencia de comandos de integración de Sophos
- Ve a la página de GitHub del repositorio de GitHub de integración de SIEM de Sophos Central.
- Haz clic en el botón verde Código > Descargar ZIP.
- Extrae el archivo ZIP.
Configurar el script
- Abre el archivo
config.ini
en el directorio donde hayas extraído el archivo ZIP. - 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).
- Guarda el archivo.
Ejecutar la secuencia de comandos
Ve a la carpeta de secuencias de comandos.
En Windows:
- Pulsa la tecla Windows y escribe
cmd
. - Haz clic en Símbolo del sistema.
- Ve a la carpeta de secuencias de comandos:
cd C:/Users/YourName/Downloads/Sophos-Central-SIEM-Integration
- Pulsa la tecla Windows y escribe
En macOS:
- Ve a Aplicaciones > Utilidades.
- Abre la aplicación Terminal.
- Ve a la carpeta de secuencias de comandos:
cd /Users/YourName/Downloads/Sophos-Central-SIEM-Integration
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):
- Abre Programador de tareas escribiendo Programador de tareas en el menú Inicio.
- Haz clic en Crear tarea.
- En la pestaña General:
- Ponle un nombre a la tarea (por ejemplo,
Sophos AV Log Export
).
- Ponle un nombre a la tarea (por ejemplo,
- 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).
- En la pestaña Acciones:
- Haz clic en Nuevo y selecciona Iniciar un programa.
- Busca el archivo ejecutable
python.exe
(normalmente se encuentra enC:/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
).
- 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):
- Abre Terminal.
- Escribe
crontab -e
y pulsa Intro. Añade una línea nueva al final del archivo:
* * * * * /usr/bin/python /Users/YourName/Downloads/Sophos-Central-SIEM-Integration/siem.py
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.