Usa el agente de BindPlane
El agente de BindPlane (también conocido como agente de recopilación) es un agente de código abierto basado en el recopilador de OpenTelemetry, que recopila registros de una variedad de fuentes, incluidos los registros de eventos de Microsoft Windows, y los envía a Google Security Operations.
La consola de administración de operaciones de BindPlane de observIQ proporciona una plataforma completa y unificada para administrar tus implementaciones de recopilador de OpenTelemetry (OTel) en Google SecOps y Google Cloud. observIQ proporciona un BindPlane para la edición de Google de la consola de administración. Para obtener más información, consulta las soluciones de observIQ. La consola de administración es opcional. Puedes usar el agente con o sin la consola. Para obtener más información sobre la consola, consulta la consola de administración de operaciones de BindPlane.
Esta es la misma solución que usa Cloud Logging para las implementaciones locales.
Antes de comenzar
Para instalar el agente, necesitas lo siguiente:
Archivo de autenticación de transferencia de Google SecOps
Para descargar el archivo de autenticación, sigue estos pasos:
- Abre la consola de Google SecOps.
- Ve a Configuración de SIEM > Agente de recopilación.
- Descarga el archivo de autenticación de transferencia de Google SecOps.
ID de cliente de Google SecOps
Para encontrar el ID del cliente, sigue estos pasos:
- Abre la consola de Google SecOps.
- Ve a Configuración de SIEM > Perfil.
- Copia el ID de cliente de la sección Detalles de la organización.
Windows 2012 SP2 o una versión posterior, o un host Linux con systemd
Conectividad a Internet
Acceso a GitHub
Verifica la configuración del firewall
Cualquier firewall o proxy autenticado entre el agente y la Internet requiere reglas para abrir el acceso a los siguientes hosts:
Tipo de conexión | Destino | Puerto |
TCP | malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-northeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-south1-malachiteingestion-pa.googleapis.com | 443 |
TCP | asia-southeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | australia-southeast1-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west2-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west3-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west6-malachiteingestion-pa.googleapis.com | 443 |
TCP | europe-west12-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-central1-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-central2-malachiteingestion-pa.googleapis.com | 443 |
TCP | me-west1-malachiteingestion-pa.googleapis.com | 443 |
TCP | northamerica-northeast2-malachiteingestion-pa.googleapis.com | 443 |
TCP | accounts.google.com | 443 |
TCP | oauth2.googleapis.com | 443 |
Consola de administración de operadores de BindPlane
La consola de administración de OP de BindPlane ofrece las siguientes funciones clave:
- Administración centralizada: La consola te permite administrar todas tus implementaciones de los recopiladores de OTel en Google Cloud. Puedes ver el estado de cada implementación, así como realizar tareas de administración comunes, como iniciar, detener y reiniciar los recopiladores.
- Supervisión en tiempo real: La consola proporciona supervisión en tiempo real de tus implementaciones de los recopiladores de OTel. Puedes hacer un seguimiento de métricas, como el uso de CPU, el uso de memoria y la capacidad de procesamiento, así como ver registros y seguimientos para solucionar problemas.
- Alertas y notificaciones: La consola te permite configurar alertas y notificaciones para eventos importantes, como cuando se cae un recopilador o se supera un límite de métrica.
- Administración de configuración: La consola te permite administrar de forma centralizada la configuración de tus agentes de OTel. Puedes editar archivos de configuración, establecer variables de entorno y aplicar políticas de seguridad a todas tus implementaciones.
- Integración con Google Cloud: Puedes crear y administrar implementaciones del recopilador de OTel en Google Cloud y usar la consola para acceder a tus recursos de Google Cloud.
Existen dos maneras de implementar la consola de administración de operaciones de BindPlane:
- Descarga e instala en un host de Linux: Disponible como paquete DEB, paquete RPM o imagen de Docker.
- Instala y aprovisiona desde Google Cloud Marketplace.
Instala el agente de BindPlane
En esta sección, se describe cómo instalar el agente en diferentes sistemas operativos de host.
Windows
Para instalar el agente de BindPlane en Windows, ejecuta el siguiente comando de PowerShell.
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Como alternativa, para instalarlo con un asistente, descarga el instalador más reciente para Windows.
Después de descargar el instalador, abre el asistente de instalación y sigue las instrucciones para configurar e instalar el agente de BindPlane. Para obtener más información sobre la instalación, consulta Cómo instalar en Windows.
Linux
Puedes instalar el agente en Linux con una secuencia de comandos que determina automáticamente qué paquete instalar. También puedes usar esta secuencia de comandos para actualizar una instalación existente.
Para instalar con la secuencia de comandos de instalación, ejecuta la siguiente secuencia de comandos:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Instalación desde un paquete local
Para instalar el agente desde un paquete local, usa -f
con la ruta de acceso al paquete.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh -f path_to_package
Instalación de RPM
Descarga el paquete RPM para tu arquitectura desde la página de lanzamientos y, luego, instálalo con rpm
. Consulta el siguiente ejemplo para instalar el paquete amd64
:
sudo rpm -U ./observiq-otel-collector_v${VERSION}_linux_amd64.rpm sudo systemctl enable --now observiq-otel-collector
Reemplaza VERSION
por la versión del paquete que descargaste.
Instalación de DEB
Descarga el paquete DEB para tu arquitectura desde la página de versiones y, luego, instálalo con dpkg
. Consulta el siguiente ejemplo para instalar el paquete amd64
:
sudo dpkg -i --force-overwrite ./observiq-otel-collector_v${VERSION}_linux_amd64.deb sudo systemctl enable --now observiq-otel-collector
Reemplaza VERSION
por la versión del paquete que descargaste.
Para obtener más información, consulta Instalación del agente de BindPlane.
Configura el agente
Puedes configurar el agente de forma manual o con la consola de administración de operaciones de BindPlane. Si configuras el agente de forma manual, debes actualizar los parámetros del exportador para asegurarte de que el agente se autentique con Google SecOps.
Después de instalar el agente, se ejecuta el servicio observiq-otel-collector
y está listo para la configuración. El agente se registra en C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log
de forma predeterminada.
El registro de errores estándar del proceso del agente se encuentra en C:\Program Files\observIQ OpenTelemetry Collector\log\observiq_collector.err
.
De forma predeterminada, el archivo de configuración del agente se encuentra en C:\Program Files\observIQ OpenTelemetry Collector\config.yaml
. Cuando cambies la configuración, debes reiniciar el servicio del agente para que los cambios de configuración se apliquen.
Puedes descargar un archivo de configuración de muestra y el token de autenticación que usa el agente desde la consola de Google SecOps > Configuración de SIEM > Agente de recopilación.
Personaliza estas dos secciones en el archivo de configuración:
- Receptor: Especifica qué registros debe recopilar y enviar el agente a Google SecOps.
- Exportador: Especifica el destino al que el agente envía los registros.
Se admiten los siguientes exportadores:
- Exportador de Google SecOps: Envía registros directamente a la API de transferencia de Google SecOps.
- Exportador de reenvío de Google SecOps: Envía registros al reenviador de Google SecOps.
- Exportador de Cloud Logging: Envía registros a (Cloud Logging).
En el exportador, personaliza lo siguiente:
customer_id
: ID de cliente de Google SecOpsendpoint
: Extremo regional de Google SecOpscreds
Token de autenticaciónComo alternativa, puedes usar
creds_file_path
para hacer referencia al archivo de credenciales directamente. Para la configuración de Windows, escapa la ruta de acceso con barras diagonales inversas.log_type
: Tipo de registroingestion_labels
: Etiquetas de transferencia opcionalesnamespace
: Es el espacio de nombres opcional.Cada tipo de registro requiere que configures un exportador.
Arquitectura
Las siguientes opciones están disponibles para la arquitectura del agente.
Opción 1: El agente de recopilación envía registros al reenviador de Google SecOps
El redireccionamiento de Google SecOps recibe múltiples flujos de syslog. Cada fuente de datos de syslog se distingue por el puerto de escucha configurado en el reenviador de SecOps de Google. El reenviador establece una conexión GRPC encriptada con tu instancia de Google SecOps para entregar los registros recopilados.
Ten en cuenta que la opción de reenvío permite la agregación de registros antes de enviarlos a Google SecOps.
Opción 2: El agente de recopilación envía registros directamente a la API de transferencia de SecOps de Google
Opción 3: El agente de recopilación envía registros directamente a Cloud Logging
Opción 4: El agente de recopilación envía registros a varios destinos
Escalabilidad
Los agentes de recopilación suelen usar recursos mínimos, pero cuando se manejan grandes volúmenes de telemetría (registros o seguimientos) en un sistema, debes tener en cuenta el consumo de recursos para evitar afectar a otros servicios. Para obtener más información, consulta Escalamiento y tamaño del agente.
Asistencia
Si tienes problemas relacionados con el agente de recopilación, comunícate con el equipo de asistencia de Google Cloud.
Si tienes problemas relacionados con la administración de OP de BindPlane, comunícate con el equipo de asistencia de observIQ.
Ejemplos adicionales de configuración de recopilación de registros
En las siguientes secciones, se enumeran los ejemplos de configuración adicionales de recopilación de registros.
Envía eventos de Windows y Sysmon directamente a Google SecOps
Configura estos parámetros en la muestra:
-
namespace
ingestion_labels
log_type
customer_id
creds
Configuración de ejemplo
receivers:
windowseventlog/sysmon:
channel: Microsoft-Windows-Sysmon/Operational
raw: true
windowseventlog/security:
channel: security
raw: true
windowseventlog/application:
channel: application
raw: true
windowseventlog/system:
channel: system
raw: true
processors:
batch:
exporters:
chronicle/sysmon:
endpoint: malachiteingestion-pa.googleapis.com
creds: '{
"type": "service_account",
"project_id": "malachite-projectname",
"private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
"private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
"client_email": "account@malachite-projectname.iam.gserviceaccount.com",
"client_id": "123456789123456789",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}'
log_type: 'WINDOWS_SYSMON'
override_log_type: false
raw_log_field: body
customer_id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'
chronicle/winevtlog:
endpoint: malachiteingestion-pa.googleapis.com
creds: '{
"type": "service_account",
"project_id": "malachite-projectname",
"private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
"private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
"client_email": "account@malachite-projectname.iam.gserviceaccount.com",
"client_id": "123456789123456789",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}'
log_type: 'WINEVTLOG'
override_log_type: false
raw_log_field: body
customer_id: 'dddddddd-dddd-dddd-dddd-dddddddddddd'
service:
pipelines:
logs/sysmon:
receivers: [windowseventlog/sysmon]
processors: [batch]
exporters: [chronicle/sysmon]
logs/winevtlog:
receivers:
- windowseventlog/security
- windowseventlog/application
- windowseventlog/system
processors: [batch]
exporters: [chronicle/winevtlog]
Envía eventos de Windows y syslog directamente a Google SecOps
Configura estos parámetros en la muestra:
windowseventlogreceiver
tcplogreceiver
listen_address
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
creds
Configuración de ejemplo
receivers:
tcplog:
listen_address: "0.0.0.0:54525"
windowseventlog/source0__application:
attributes:
log_type: windows_event.application
channel: application
max_reads: 100
poll_interval: 1s
raw: true
start_at: end
windowseventlog/source0__security:
attributes:
log_type: windows_event.security
channel: security
max_reads: 100
poll_interval: 1s
raw: true
start_at: end
windowseventlog/source0__system:
attributes:
log_type: windows_event.system
channel: system
max_reads: 100
poll_interval: 1s
raw: true
start_at: end
exporters:
chronicle/chronicle_w_labels:
compression: gzip
creds: '{ json blob for creds }'
customer_id: <customer_id>
endpoint: malachiteingestion-pa.googleapis.com
ingestion_labels:
env: dev
log_type: <applicable_log_type>
namespace: testNamespace
raw_log_field: body
service:
pipelines:
logs/source0__chronicle_w_labels-0:
receivers:
- windowseventlog/source0__system
- windowseventlog/source0__application
- windowseventlog/source0__security
exporters:
- chronicle/chronicle_w_labels
logs/source1__chronicle_w_labels-0:
receivers:
- tcplog
exporters:
- chronicle/chronicle_w_labels
Envía eventos de Windows y syslog al reenviador de Google SecOps
Configura estos parámetros en la muestra:
windowseventlogreceiver
tcplogreceiver
listen_address
chronicleforwarder
endpoint
Configuración de ejemplo
receivers:
tcplog:
listen_address: "0.0.0.0:54525"
windowseventlog/source0__application:
attributes:
log_type: windows_event.application
channel: application
max_reads: 100
poll_interval: 1s
raw: true
start_at: end
windowseventlog/source0__security:
attributes:
log_type: windows_event.security
channel: security
max_reads: 100
poll_interval: 1s
raw: true
start_at: end
windowseventlog/source0__system:
attributes:
log_type: windows_event.system
channel: system
max_reads: 100
poll_interval: 1s
raw: true
start_at: end
exporters:
chronicleforwarder/forwarder:
export_type: syslog
raw_log_field: body
syslog:
endpoint: 127.0.0.1:10514
transport: udp
service:
pipelines:
logs/source0__forwarder-0:
receivers:
- windowseventlog/source0__system
- windowseventlog/source0__application
- windowseventlog/source0__security
exporters:
- chronicleforwarder/forwarder
logs/source1__forwarder-0:
receivers:
- tcplog
exporters:
- chronicleforwarder/forwarder
Cómo enviar syslog directamente a Google SecOps
Configura estos parámetros en la muestra:
tcplogreceiver
listen_address
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
Creds
Configuración de ejemplo
receivers:
tcplog:
listen_address: "0.0.0.0:54525"
exporters:
chronicle/chronicle_w_labels:
compression: gzip
creds: '{ json blob for creds }'
customer_id: <customer_id>
endpoint: malachiteingestion-pa.googleapis.com
ingestion_labels:
env: dev
log_type: <applicable_log_type>
namespace: testNamespace
raw_log_field: body
service:
pipelines:
logs/source0__chronicle_w_labels-0:
receivers:
- tcplog
exporters:
- chronicle/chronicle_w_labels
Recopila eventos de Windows de forma remota y envíalos directamente a Google SecOps
Configura estos parámetros en la muestra:
windowseventlogreceiver
username
password
server
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
creds
Configuración de ejemplo
receivers:
windowseventlog/system:
channel: system
max_reads: 100
start_at: end
poll_interval: 10s
raw: true
remote:
username: "username"
password: "password"
server: "remote-server"
windowseventlog/application:
channel: application
max_reads: 100
start_at: end
poll_interval: 10s
raw: true
remote:
username: "username"
password: "password"
server: "server-ip"
windowseventlog/security:
channel: security
max_reads: 100
start_at: end
poll_interval: 10s
raw: true
remote:
username: "username"
password: "password"
server: "server-ip"
exporters:
chronicle/chronicle_w_labels:
compression: gzip
creds: '{ json blob for creds }'
customer_id: <customer_id>
endpoint: malachiteingestion-pa.googleapis.com
ingestion_labels:
env: dev
log_type: WINEVTLOG
namespace: testNamespace
raw_log_field: body
service:
pipelines:
logs/source0__chronicle_w_labels-0:
receivers:
- windowseventlog/system
- windowseventlog/application
- windowseventlog/security
exporters:
- chronicle/chronicle_w_labels
Envía datos a Cloud Logging
Configura el parámetro credentials_file
en la muestra.
Configuración de ejemplo
exporters:
googlecloud:
credentials_file: /opt/observiq-otel-collector/credentials.json
Cómo consultar una base de datos SQL y enviar los resultados a Google SecOps
Configura estos parámetros en la muestra:
sqlqueryreceiver
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
creds
Configuración de ejemplo
receivers:
sqlquery/source0:
datasource: host=localhost port=5432 user=postgres password=s3cr3t sslmode=disable
driver: postgres
queries:
- logs:
- body_column: log_body
sql: select * from my_logs where log_id > $$1
tracking_column: log_id
tracking_start_value: "10000"
processors:
transform/source0_processor0__logs:
error_mode: ignore
log_statements:
- context: log
statements:
- set(attributes["chronicle_log_type"], "POSTGRESQL") where true
exporters:
chronicle/chronicle_sql:
compression: gzip
creds: '{
"type": "service_account",
"project_id": "malachite-projectname",
"private_key_id": "abcdefghijklmnopqrstuvwxyz123456789",
"private_key": "-----BEGIN PRIVATE KEY-----abcdefg-----END PRIVATE KEY-----\n",
"client_email": "account@malachite-projectname.iam.gserviceaccount.com",
"client_id": "123456789123456789",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/account%40malachite-projectname.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}'
customer_id: customer_id
endpoint: malachiteingestion-pa.googleapis.com
log_type: POSTGRESQL
namespace: null
raw_log_field: body
retry_on_failure:
enabled: false
sending_queue:
enabled: false
service:
pipelines:
logs/source0_chronicle_sql-0:
receivers:
- sqlquery/source0
processors:
- transform/source0_processor0__logs
exporters:
- chronicle/chronicle_sql
Cómo descartar registros que coincidan con una expresión regular
Puedes configurar el recopilador para que descarte los registros que coincidan con una expresión regular. Esto es útil para filtrar registros no deseados, como errores conocidos o mensajes de depuración.
Para descartar registros que coincidan con una expresión regular, agrega un procesador de tipo filter/drop-matching-logs-to-Chronicle
a tu configuración. Este procesador usa la función IsMatch
para evaluar el cuerpo del registro en función de la expresión regular. Si la función muestra true
, se descarta el registro.
En la siguiente configuración de ejemplo, se descartan los registros que contienen las cadenas <EventID>10</EventID>
o <EventID>4799</EventID>
en el cuerpo del registro.
Puedes personalizar la expresión regular para que coincida con cualquier patrón que necesites. La función IsMatch
usa la sintaxis de expresión regular RE2.
Configuración de ejemplo
processors:
filter/drop-matching-logs-to-Chronicle:
error_mode: ignore
logs:
log_record:
- (IsMatch(body, "<EventID>10</EventID>")) or (IsMatch(body, "<EventID>4799</EventID>"))
En el siguiente ejemplo, se agrega el procesador a la canalización con la misma configuración:
service:
pipelines:
logs/winevtlog:
receivers:
- windowseventlog/security
- windowseventlog/application
- windowseventlog/system
processors:
- filter/drop-matching-logs-to-Chronicle # Add this line
- batch
exporters: [chronicle/winevtlog]
Documentación de referencia
Para obtener más información sobre observIQ, consulta lo siguiente:
- Soluciones de observIQ
- Guía de inicio rápido de la OP de BindPlane
- Envía registros a Cloud Logging
- Filtra por procesador de condiciones
- Fuentes disponibles para la operación de Bindplane