Usar o agente do BindPlane

O agente BindPlane, também conhecido como agente de coleta, é um agente de código aberto, baseado no OpenTelemetry Collector, que coleta registros de várias fontes, incluindo logs de eventos do Microsoft Windows, e envia para as Operações de segurança do Google.

O console de gerenciamento OP do BindPlane do observIQ oferece uma interface abrangente e para gerenciar as implantações de coletores do OpenTelemetry (OTel) no o Google SecOps e o Google Cloud. o observIQ fornece um BindPlane para edição do Google do console de gerenciamento. Para mais informações, consulte as soluções observIQ. Console de gerenciamento é opcional. É possível usar o agente com ou sem o console. Para mais informações sobre o console, consulte Console de gerenciamento de OP do BindPlane.

Essa é a mesma solução usada pelo Cloud Logging para implantações no local.

Antes de começar

Para instalar o agente, você precisa do seguinte:

  • Arquivo de autenticação de ingestão de SecOps do Google

    Para fazer o download do arquivo de autenticação, siga estas etapas:

    1. Abra o console do Google SecOps.
    2. Acesse Configurações do SIEM > Agente de coleta.
    3. Faça o download do arquivo de autenticação de ingestão do Google SecOps.
  • ID de cliente do Google SecOps

    Para encontrar o ID de cliente, siga estas etapas:

    1. Abra o console do Google SecOps.
    2. Acesse Configurações do SIEM > Perfil.
    3. Copie o ID do cliente na seção Detalhes da organização.
  • Windows 2012 SP2 ou posterior ou host do Linux com systemd

  • Conectividade à Internet

  • Acesso ao GitHub

Verificar a configuração do firewall

todos os firewalls ou proxies autenticados entre o agente e a Internet exigem regras para abrir o acesso aos seguintes hosts:

Tipo de conexão Destino Port
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 de gerenciamento OP do BindPlane

O console de gerenciamento OP do BindPlane oferece os seguintes recursos principais:

  • Gerenciamento centralizado: o console permite gerenciar todas as implantações de coletores OTel no Google Cloud. É possível ver o status de cada implantação e realizar tarefas de gerenciamento comuns, como iniciar, interromper e reiniciar coletores.
  • Monitoramento em tempo real: o console fornece monitoramento em tempo real do seu OTel implantações de coletor. É possível acompanhar métricas como uso de CPU, uso de memória e capacidade, bem como visualizar registros e traces para solucionar problemas.
  • Alertas e notificações: o console permite configurar alertas e notificações para eventos importantes, como quando um coletor cai ou quando um limite de métrica for excedido.
  • Gerenciamento de configuração: o console permite gerenciar centralmente a configuração dos coletores OTel. É possível editar arquivos de configuração, definir variáveis de ambiente e aplicar políticas de segurança a todas as implantações.
  • Integração com o Google Cloud: é possível criar e gerenciar um coletor OTel. implantações no Google Cloud e usar o console para acessar seus serviços do Google Cloud.

Há duas maneiras de implantar o console de gerenciamento de OP do BindPlane:

.

Instalar o agente do BindPlane

Nesta seção, descrevemos como instalar o agente em diferentes sistemas operacionais de host.

Windows

Para instalar o agente BindPlane no Windows, execute o seguinte comando do PowerShell.

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

Como alternativa, para instalar usando um assistente de instalação, faça o download do instalador mais recente para Windows.

Depois de fazer o download do instalador, abra o assistente de instalação e siga as instruções para configurar e instalar o agente do BindPlane. Para mais informações, consulte Como instalar no Windows.

Linux

É possível instalar o agente no Linux usando um script que determina automaticamente qual pacote instalar. Você também pode usar esse script para atualizar uma instalação existente.

Para instalar usando o script de instalação, execute este script:

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

Instalação a partir de pacote local

Para instalar o agente a partir de um pacote local, use -f com o caminho para o pacote.

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

Instalação de RPM

Faça o download do pacote RPM para sua arquitetura na página de versões e instale o pacote usando rpm. Consulte o exemplo a seguir para instalar o pacote amd64:

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

Substitua VERSION pela versão do pacote que você transferiu por download.

Instalação do DEB

Faça o download do pacote DEB para sua arquitetura na página de versões e instale o pacote usando dpkg. Consulte o exemplo a seguir para instalar a Pacote amd64:

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

Substitua VERSION pela versão do pacote que você transferiu por download.

Para mais informações, consulte Instalação do agente BindPlane.

Configurar o agente

É possível configurar o agente manualmente ou usando o console de gerenciamento de OP do BindPlane. Se você estiver configurando o agente manualmente, será necessário atualizar o exportador para garantir a autenticação do agente com o Google SecOps.

Depois de instalar o agente, o serviço observiq-otel-collector é executado e fica pronto para configuração. O agente registra em C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log por padrão.

O registro de erro padrão do processo do agente pode ser encontrado em C:\Program Files\observIQ OpenTelemetry Collector\log\observiq_collector.err.

Por padrão, o arquivo de configuração do agente fica em C:\Program Files\observIQ OpenTelemetry Collector\config.yaml: Ao alterar a configuração, reinicie o serviço do agente para que as alterações de configuração entrar em vigor.

É possível fazer o download de um arquivo de configuração de amostra e de um token de autenticação usados pelo de operações no console do Google SecOps > Configurações do SIEM > Agente de coleta.

Personalize estas duas seções no arquivo de configuração:

  • Receptor: especifica quais registros o agente precisa coletar e enviar para o Google SecOps.
  • Exportador: especifica o destino para onde o agente envia os registros. Os seguintes exportadores são aceitos:
    • Exportador do Google SecOps: envia registros diretamente para a API de ingestão do Google SecOps
    • Exportador de encaminhador do Google SecOps: envia registros para o encaminhador do Google SecOps
    • Exportador do Cloud Logging: envia registros para o (Cloud Logging)

No exportador, personalize o seguinte:

  • customer_id: ID de cliente do Google SecOps
  • endpoint: endpoint regional do Google SecOps
  • creds: token de autenticação

    Como alternativa, use creds_file_path para fazer referência ao arquivo de credenciais diretamente. Para a configuração do Windows, escape o caminho com barras invertidas.

  • log_type: tipo de registro

  • ingestion_labels: rótulos de ingestão opcionais

  • namespace: namespace opcional

    Cada tipo de registro requer a configuração de um exportador.

Arquitetura

As opções a seguir estão disponíveis para a arquitetura do agente.

Opção 1: o agente de coleta envia registros para o encaminhador do Google SecOps

O agente de coleta envia registros para o encaminhador do Google SecOps

O forwarder do Google SecOps recebe vários streams de syslog. Cada A fonte de dados syslog é diferenciada pela porta de detecção configurada no encaminhador do Google SecOps. O encaminhador cria um GRPC criptografado à instância do Google SecOps para fornecer registros coletados.

A opção de encaminhamento permite a agregação de registros antes de enviá-los ao Google SecOps.

Opção 2: o agente de coleta envia os registros diretamente para a API de ingestão de SecOps do Google

O agente de coleta envia registros diretamente para a API de ingestão de SecOps do Google

Opção 3: o agente de coleta envia registros diretamente para o Cloud Logging

O agente de coleta envia registros diretamente para o Cloud Logging

Opção 4: o agente de coleta envia registros para vários destinos

O agente de coleta envia registros para vários destinos

Escalonabilidade

Os coletores de agente costumam usar recursos mínimos, mas ao lidar com grandes volumes de telemetria (registros ou traces) em um sistema, considere o consumo de recursos para evitar o impacto em outros serviços. Para mais informações, consulte Dimensionamento e escalonamento de agentes

Suporte

Em caso de problemas relacionados ao agente do coletor, entre em contato com o suporte do Google Cloud.

Em caso de problemas relacionados ao gerenciamento de OP do BindPlane, entre em contato com o suporte do ObservIQ.

Outras amostras de configuração de coleta de registros

As seções a seguir listam os outros exemplos de configuração de coleta de registros.

Enviar eventos e sysmon do Windows diretamente para o Google SecOps

Configure esses parâmetros na amostra:

Exemplo de configuração:

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]

Enviar eventos e syslog do Windows diretamente para o Google SecOps

Configure esses parâmetros na amostra:

Exemplo de configuração:

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

Enviar eventos e syslog do Windows para o encaminhador do Google SecOps

Configure esses parâmetros na amostra:

Exemplo de configuração:

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

Enviar o syslog diretamente para o Google SecOps

Configure esses parâmetros na amostra:

Exemplo de configuração:

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

Coletar eventos do Windows remotamente e enviá-los diretamente ao Google SecOps

Configure esses parâmetros na amostra:

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

Exemplo de configuração:

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

Enviar dados para o Cloud Logging

Configure o parâmetro credentials_file na amostra.

Exemplo de configuração:

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

Consultar um banco de dados SQL e enviar os resultados para o Google SecOps

Configure esses parâmetros na amostra:

Exemplo de configuração:

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

Remover registros que correspondam a uma expressão regular

É possível configurar o coletor para excluir registros que correspondem a uma expressão regular. Isso é útil para filtrar registros indesejados, como erros conhecidos ou mensagens de depuração.

Para descartar registros que correspondam a uma expressão regular, adicione um processador do tipo filter/drop-matching-logs-to-Chronicle à configuração. Esse processador usa a função IsMatch para avaliar o corpo do registro em relação à expressão regular. Se a função retornar true, o registro será descartado.

A configuração de exemplo a seguir descarta registros que contêm as strings <EventID>10</EventID> ou <EventID>4799</EventID> no corpo deles.

Você pode personalizar a expressão regular para corresponder a qualquer padrão necessário. A função IsMatch usa a sintaxe de expressão regular RE2.

Exemplo de configuração:

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

O exemplo a seguir adiciona o processador ao pipeline na mesma configuração:

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]

Documentação de referência

Para mais informações sobre o observIQ, consulte: