Usar o agente do BindPlane
O agente BindPlane (também chamado de agente de coleta) é um agente de código aberto baseado no coletor OpenTelemetry, que coleciona registros de várias fontes, incluindo os registros de eventos do Microsoft Windows, e os envia para as Operações de segurança do Google.
O console de gerenciamento do BindPlane do observIQ oferece uma plataforma abrangente e unificada para gerenciar implantações de coletores do OpenTelemetry (OTel) no Google SecOps e no Google Cloud. O observIQ oferece um BindPlane para a edição do Google do console de gerenciamento. Para mais informações, consulte as soluções observIQ. O 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 locais.
Antes de começar
Para instalar o agente, você precisa do seguinte:
Arquivo de autenticação de transferência do Google SecOps
Para fazer o download do arquivo de autenticação, siga estas etapas:
- Abra o console do Google SecOps.
- Acesse Configurações do SIEM > Agente de coleta.
- Faça o download do arquivo de autenticação de transferência do Google SecOps.
ID de cliente do Google SecOps
Para encontrar o ID do cliente, siga estas etapas:
- Abra o console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie o ID do cliente na seção Detalhes da organização.
Windows 2012 SP2 ou mais recente ou host Linux com systemd
Conectividade à Internet
Acesso ao GitHub
Verificar a configuração do firewall
Qualquer firewall ou proxy autenticado entre o agente e a Internet precisa de 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 de OP do BindPlane
O console de gerenciamento de OP do BindPlane oferece os seguintes recursos principais:
- Gerenciamento centralizado: o console permite gerenciar todas as implantações do coletor 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 oferece monitoramento em tempo real das implantações do coletor do OTel. É possível acompanhar métricas como uso da CPU, uso da memória e capacidade de processamento, além de conferir registros e rastros para resolver problemas.
- Alertas e notificações: o console permite configurar alertas e notificações para eventos importantes, como quando um coletor é desativado ou quando um limite de métrica é 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 implantações do coletor OTel no Google Cloud e usar o console para acessar seus recursos do Google Cloud.
Há duas maneiras de implantar o console de gerenciamento de OP do BindPlane:
- Fazer o download e a instalação em um host do Linux: disponível como um pacote DEB, RPM ou imagem do Docker.
- Instale e provisione no Google Cloud Marketplace.
Instalar o agente do BindPlane
Esta seção descreve como instalar o agente em diferentes sistemas operacionais do host.
Windows
Para instalar o agente do 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, 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 sobre a instalação, consulte Como instalar no Windows.
Linux
É possível instalar o agente no Linux usando um script que determina automaticamente qual pacote instalar. Também é possível usar esse script para atualizar uma instalação existente.
Para instalar usando o script de instalação, execute o seguinte script:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Instalação do pacote local
Para instalar o agente 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ê fez o 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 o
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ê fez o download.
Para mais informações, consulte Instalação do agente do 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, atualize os parâmetros do exportador para garantir que ele seja autenticado pelo 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 erros 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 mudar
a configuração, reinicie o serviço do agente para que as mudanças
entrem em vigor.
É possível fazer o download de um arquivo de configuração de exemplo e do token de autenticação usado pelo agente 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 compatíveis:
- Exportador do Google SecOps: envia registros diretamente para a API de ingestão do Google SecOps
- Exportador do forwarder do Google SecOps: envia logs para o forwarder do Google SecOps.
- Exportador do Cloud Logging: envia registros para o Cloud Logging.
No exportador, personalize o seguinte:
customer_id
: ID do cliente do Google SecOpsendpoint
: endpoint regional do Google SecOpscreds
: token de autenticaçãoComo 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 registroingestion_labels
: rótulos de transferência opcionaisnamespace
: namespace opcionalCada tipo de registro exige 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 forwarder do Google SecOps recebe vários streams de syslog. Cada fonte de dados do syslog é distinguida pela porta de escuta configurada no forwarder do Google SecOps. O encaminhador faz uma conexão GRPC criptografada com sua instância do Google SecOps para enviar os 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 registros diretamente para a API de transferência do Google SecOps
Opção 3: o agente de coleta envia registros diretamente para o Cloud Logging
Opção 4: o agente de coleta envia registros para vários destinos
Escalonabilidade
Os coletores de agentes geralmente usam recursos mínimos, mas, ao processar grandes volumes de telemetria (registros ou rastros) em um sistema, preste atenção no consumo de recursos para evitar impactos em outros serviços. Para mais informações, consulte Dimensionamento e dimensionamento de agentes.
Suporte
Para problemas relacionados ao agente 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.
Outros exemplos de configuração da coleta de registros
As seções a seguir listam os exemplos de configuração de coleta de registros adicionais.
Enviar eventos do Windows e sysmon diretamente para o Google SecOps
Configure estes parâmetros no exemplo:
-
namespace
ingestion_labels
log_type
customer_id
creds
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 do Windows e syslog diretamente para o Google SecOps
Configure estes parâmetros no exemplo:
windowseventlogreceiver
tcplogreceiver
listen_address
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
creds
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 do Windows e syslog para o encaminhador do Google SecOps
Configure estes parâmetros no exemplo:
windowseventlogreceiver
tcplogreceiver
listen_address
chronicleforwarder
endpoint
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 syslog diretamente para o Google SecOps
Configure estes parâmetros no exemplo:
tcplogreceiver
listen_address
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
Creds
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 estes parâmetros no exemplo:
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
no exemplo.
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 estes parâmetros no exemplo:
sqlqueryreceiver
chronicleexporter
namespace
ingestion_labels
log_type
customer_id
creds
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
Excluir registros que correspondem 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 excluir registros que correspondem 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.
O exemplo de configuração a seguir descarta registros que contêm as strings <EventID>10</EventID>
ou <EventID>4799</EventID>
no corpo do registro.
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:
- Soluções observIQ
- Guia de início rápido do BindPlane OP
- Enviar registros para o Cloud Logging.
- Filtrar por processador de condição
- Origens disponíveis para o BindPlane OP