Utilizzare l'agente BindPlane

L'agente BindPlane (noto anche come agente di raccolta) è un agente open source basato su OpenTelemetry Collector, che raccoglie log da varie origini, inclusi i log eventi di Microsoft Windows, e li invia a Google Security Operations.

La console di gestione observIQ BindPlane OP offre una piattaforma completa e unificata per la gestione dei deployment dei raccoglitori OpenTelemetry (OTel) in Google SecOps e Google Cloud. observIQ fornisce un BindPlane per la versione Google della console di gestione. Per ulteriori informazioni, vedi Soluzioni OsservIQ. La console di gestione è facoltativa. Puoi utilizzare l'agente con o senza la console. Per ulteriori informazioni sulla console, consulta la console di gestione di BindPlane OP.

Questa è la stessa soluzione utilizzata da Cloud Logging per i deployment on-premise.

Prima di iniziare

Per installare l'agente, è necessario quanto segue:

  • File di autenticazione per l'importazione di Google SecOps

    Per scaricare il file di autenticazione, segui questi passaggi:

    1. Apri la console Google SecOps.
    2. Vai a Impostazioni SIEM > Agente di raccolta.
    3. Scarica il file di autenticazione per l'importazione di Google SecOps.
  • ID cliente Google SecOps

    Per individuare l'ID cliente:

    1. Apri la console Google SecOps.
    2. Vai a Impostazioni SIEM > Profilo.
    3. Copia l'ID cliente dalla sezione Organization Details (Dettagli organizzazione).
  • Windows 2012 SP2 o versione successiva o host Linux con systemd

  • Connessione a internet

  • Accesso a GitHub

Verifica la configurazione del firewall

Eventuali firewall o proxy autenticati tra l'agente e internet richiedono regole per aprire l'accesso ai seguenti host:

Tipo di connessione Destinazione Port (Porta)
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

Console di gestione OP BindPlane

La console di gestione dell'OP BindPlane offre le seguenti funzionalità chiave:

  • Gestione centralizzata: la console consente di gestire tutti i deployment dei raccoglitori OTel in Google Cloud. Puoi visualizzare lo stato di ciascun deployment ed eseguire attività di gestione comuni come l'avvio, l'arresto e il riavvio dei raccoglitori.
  • Monitoraggio in tempo reale: la console fornisce il monitoraggio in tempo reale dei deployment del raccoglitore OTel. Puoi tenere traccia di metriche come utilizzo della CPU, memoria e velocità effettiva, nonché visualizzare log e tracce per risolvere i problemi.
  • Avvisi e notifiche: la console consente di configurare avvisi e notifiche per eventi importanti, ad esempio quando un raccoglitore smette di funzionare o viene superata una soglia di metrica.
  • Gestione della configurazione: la console consente di gestire centralmente la configurazione dei raccoglitori OTel. Puoi modificare i file di configurazione, impostare variabili di ambiente e applicare criteri di sicurezza a tutti i deployment.
  • Integrazione con Google Cloud: puoi creare e gestire i deployment dei raccoglitori OTel in Google Cloud e utilizzare la console per accedere alle tue risorse Google Cloud.

Esistono due modi per eseguire il deployment della console di gestione OP BindPlane:

Installa l'agente BindPlane

Questa sezione descrive come installare l'agente su diversi sistemi operativi host.

Windows

Per installare l'agente BindPlane su Windows, esegui il seguente comando PowerShell.

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

In alternativa, per eseguire l'installazione con una procedura guidata, scarica il programma di installazione più recente per Windows.

Dopo aver scaricato il programma di installazione, apri la procedura guidata di installazione e segui le istruzioni per configurare e installare l'agente BindPlane. Per ulteriori informazioni sull'installazione, consulta la sezione Installazione su Windows.

Linux

Puoi installare l'agente su Linux utilizzando uno script che determina automaticamente quale pacchetto installare. Puoi utilizzare questo script anche per aggiornare un'installazione esistente.

Per eseguire l'installazione utilizzando lo script di installazione, esegui lo script seguente:

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

Installazione dal pacchetto locale

Per installare l'agente da un pacchetto locale, utilizza -f con il percorso del pacchetto.

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

Installazione RPM

Scarica il pacchetto RPM per la tua architettura dalla pagina delle release e installa il pacchetto utilizzando rpm. Consulta l'esempio seguente per installare il pacchetto amd64:

sudo rpm -U ./observiq-otel-collector_v${VERSION}_linux_amd64.rpm
sudo systemctl enable --now observiq-otel-collector

Sostituisci VERSION con la versione del pacchetto scaricato.

Installazione DEB

Scarica il pacchetto DEB per la tua architettura dalla pagina delle release e installa il pacchetto utilizzando dpkg. Consulta l'esempio seguente per installare il pacchetto amd64:

sudo dpkg -i --force-overwrite ./observiq-otel-collector_v${VERSION}_linux_amd64.deb
sudo systemctl enable --now observiq-otel-collector

Sostituisci VERSION con la versione del pacchetto scaricato.

Per maggiori informazioni, vedi Installazione dell'agente BindPlane.

Configura l'agente

Puoi configurare l'agente manualmente o utilizzando la console di gestione OP BindPlane. Se configuri l'agente manualmente, devi aggiornare i parametri dell'esportatore per garantire che l'agente esegua l'autenticazione con Google SecOps.

Dopo l'installazione dell'agente, il servizio observiq-otel-collector viene eseguito ed è pronto per la configurazione. L'agente accede a C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log per impostazione predefinita.

Il log degli errori standard per il processo dell'agente è disponibile all'indirizzo C:\Program Files\observIQ OpenTelemetry Collector\log\observiq_collector.err.

Per impostazione predefinita, il file di configurazione dell'agente si trova in C:\Program Files\observIQ OpenTelemetry Collector\config.yaml. Quando modifichi la configurazione, devi riavviare il servizio dell'agente affinché le modifiche alla configurazione vengano applicate.

Puoi scaricare un file di configurazione di esempio e un token di autenticazione utilizzati dall'agente dalla console Google SecOps > Impostazioni SIEM > Agente di raccolta.

Personalizza queste due sezioni nel file di configurazione:

  • Ricevitore: specifica i log che l'agente deve raccogliere e inviare a Google SecOps.
  • Exporter: specifica la destinazione in cui l'agente invia i log. Sono supportati i seguenti esportatori:
    • Esportatore Google SecOps: invia i log direttamente all'API di importazione di Google SecOps
    • Strumento di esportazione per l'inoltro di Google SecOps: invia i log al forwarding di Google SecOps
    • Esportatore Cloud Logging: invia i log a (Cloud Logging)

Nell'utilità di esportazione, personalizza quanto segue:

  • customer_id: ID cliente Google SecOps
  • endpoint: endpoint a livello di regione Google SecOps
  • creds: token di autenticazione

    In alternativa, puoi utilizzare creds_file_path per fare riferimento direttamente al file delle credenziali. Per la configurazione Windows, esegui l'escape del percorso utilizzando barre rovesciate.

  • log_type: tipo di log

  • ingestion_labels: etichette di importazione facoltative

  • namespace: spazio dei nomi facoltativo

    Ogni tipo di log richiede la configurazione di un esportatore.

Architettura

Per l'architettura dell'agente sono disponibili le seguenti opzioni.

Opzione 1: l'agente di raccolta invia i log al server di inoltro di Google SecOps

L'agente di raccolta invia i log al server di inoltro di Google SecOps

Il forwarder di Google SecOps riceve più flussi syslog. Ogni origine dati syslog è distinta per la porta di ascolto configurata nel forwarding di Google SecOps. Il forwarding stabilisce una connessione GRPC criptata alla tua istanza Google SecOps per consegnare i log raccolti.

Tieni presente che l'opzione di forwarding consente l'aggregazione dei log prima di inviarli a Google SecOps.

Opzione 2: l'agente di raccolta invia i log direttamente all'API di importazione di Google SecOps

L'agente di raccolta invia i log direttamente all'API di importazione di Google SecOps

Opzione 3: l'agente di raccolta invia i log direttamente a Cloud Logging

L'agente di raccolta invia i log direttamente a Cloud Logging

Opzione 4: l'agente di raccolta invia i log a più destinazioni

L'agente di raccolta invia i log a più destinazioni

Scalabilità

I raccoglitori di agenti in genere utilizzano risorse minime, ma quando gestiscono grandi volumi di telemetria (log o tracce) in un sistema, fai attenzione al consumo di risorse per evitare di influire su altri servizi. Per maggiori informazioni, consulta la pagina Dimensioni e scalabilità degli agenti

Assistenza

Per eventuali problemi relativi all'agente raccoglitore, contatta l'assistenza Google Cloud.

Per eventuali problemi relativi alla gestione dell'OP BindPlane, contatta l'assistenza di ObservIQ.

Altri esempi di configurazione per la raccolta di log

Le sezioni seguenti elencano gli altri esempi di configurazione della raccolta di log.

Invia eventi e sysmon di Windows direttamente a Google SecOps

Configura questi parametri nell'esempio:

Configurazione di esempio:

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]

Invia eventi e syslog di Windows direttamente a Google SecOps

Configura questi parametri nell'esempio:

Configurazione di esempio:

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

Invia eventi e syslog di Windows al forwarding SecOps di Google

Configura questi parametri nell'esempio:

Configurazione di esempio:

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

Invia syslog direttamente a Google SecOps

Configura questi parametri nell'esempio:

Configurazione di esempio:

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

Raccogli eventi Windows da remoto e inviali direttamente a Google SecOps

Configura questi parametri nell'esempio:

  • windowseventlogreceiver
    • username
    • password
    • server
  • chronicleexporter
    • namespace
    • ingestion_labels
    • log_type
    • customer_id
    • creds

Configurazione di esempio:

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

Invia dati a Cloud Logging

Configura il parametro credentials_file nell'esempio.

Configurazione di esempio:

exporters:
  googlecloud:
    credentials_file: /opt/observiq-otel-collector/credentials.json

Esegui una query su un database SQL e invia i risultati a Google SecOps

Configura questi parametri nell'esempio:

Configurazione di esempio:

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

Elimina i log che corrispondono a un'espressione regolare

Puoi configurare il raccoglitore in modo che elimini i log che corrispondono a un'espressione regolare. Ciò è utile per filtrare i log indesiderati, ad esempio errori noti o messaggi di debug.

Per eliminare i log che corrispondono a un'espressione regolare, aggiungi un processore di tipo filter/drop-matching-logs-to-Chronicle alla tua configurazione. Questo processore utilizza la funzione IsMatch per valutare il corpo del log rispetto all'espressione regolare. Se la funzione restituisce true, il log viene eliminato.

La configurazione dell'esempio seguente elimina i log che contengono le stringhe <EventID>10</EventID> o <EventID>4799</EventID> nel corpo del log.

Puoi personalizzare l'espressione regolare in modo che corrisponda a qualsiasi pattern di cui hai bisogno. La funzione IsMatch utilizza la sintassi delle espressioni regolari RE2.

Configurazione di esempio:

processors:
    filter/drop-matching-logs-to-Chronicle:
        error_mode: ignore
        logs:
            log_record:
                - (IsMatch(body, "<EventID>10</EventID>")) or (IsMatch(body, "<EventID>4799</EventID>"))

Nell'esempio seguente, il processore viene aggiunto alla pipeline nella stessa configurazione:

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]

Documentazione di riferimento

Per ulteriori informazioni su observIQ, vedi: