Recolha registos do VMware vCenter
Este documento explica como carregar registos do VMware vCenter para o Google Security Operations através do Bindplane. O analisador transforma os registos não processados num modelo de dados unificado (UDM). Primeiro, tenta analisar os dados de registo como JSON e, se não tiver êxito, trata os dados como uma mensagem syslog, extraindo campos através de padrões grok e mapeando-os para o esquema UDM.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
- Se estiver a ser executado através de um proxy, certifique-se de que as portas da firewall estão abertas
- Acesso privilegiado ao VMware vCenter
Obtenha o ficheiro de autenticação de carregamento do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Agentes de recolha.
- Transfira o ficheiro de autenticação de carregamento. Guarde o ficheiro de forma segura no sistema onde o Bindplane vai ser instalado.
Obtenha o ID de cliente do Google SecOps
- Inicie sessão na consola Google SecOps.
- Aceda a Definições do SIEM > Perfil.
- Copie e guarde o ID do cliente da secção Detalhes da organização.
Instale o agente do Bindplane
Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.
Instalação do Windows
- Abra a Linha de comandos ou o PowerShell como administrador.
Execute o seguinte comando:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Instalação do Linux
- Abra um terminal com privilégios de raiz ou sudo.
Execute o seguinte comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Recursos de instalação adicionais
Para ver opções de instalação adicionais, consulte o guia de instalação.
Configure o agente Bindplane para carregar o Syslog e enviá-lo para o Google SecOps
- Aceda ao ficheiro de configuração:
- Localize o ficheiro
config.yaml
. Normalmente, encontra-se no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o ficheiro com um editor de texto (por exemplo,
nano
,vi
ou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yaml
da seguinte forma: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: 'VMWARE_VCENTER' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.
- Substitua
<customer_id>
pelo ID de cliente real. - Atualize
/path/to/ingestion-authentication-file.json
para o caminho onde o ficheiro de autenticação foi guardado na secção Obtenha o ficheiro de autenticação de carregamento do Google SecOps.
Reinicie o agente do Bindplane para aplicar as alterações
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
Para reiniciar o agente Bindplane no Windows, pode usar a consola Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog para o VMware vCenter
- Inicie sessão na IU Web de gestão do vCenter Server.
- Aceda a Syslog > Configuração de encaminhamento > Configurar.
- Selecione Criar configuração de encaminhamento e introduza o endereço IP do agente do Bindplane.
- No menu pendente Protocolo, selecione UDP ou TCP, consoante a configuração real do agente Bindplane.
- Na secção Porta, introduza o número da porta do agente do Bindplane.
- Clique em Guardar.
- Clique em Enviar mensagem de teste e verifique se foi recebida.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
Access Mask |
principal.process.access_mask | Convertido de hexadecimal para decimal. |
Account Domain |
principal.administrative_domain | |
Account Name |
principal.user.userid | |
ApplicationProtocol |
additional.fields | |
Authentication Package |
security_result.about.resource.name | |
Client Address |
principal.ip, principal.asset.ip | Analisado como IP. |
Client Port |
principal.port | Convertido em número inteiro. |
cmd |
target.process.command_line | |
date |
timestamp | Analisado como aaaa-MM-dd e unido à hora como aaaa-MM-dd HH:mm:ss para quando, analisado como data. |
date_time |
timestamp | Analisado como data com os formatos RFC 3339, TIMESTAMP_ISO8601 e SYSLOGTIMESTAMP. |
desc |
metadata.description | |
eventid |
metadata.product_event_type | Unido à tarefa como eventid - task. |
host_name |
principal.hostname, principal.asset.hostname | |
http_method |
network.http.method | |
ip |
target.ip, target.asset.ip | |
kv_data1 |
Analisados como pares de chave-valor. | |
kv_data2 |
Analisados como pares de chave-valor. | |
kv_msg1.cipher |
network.tls.cipher | |
kv_msg1.ctladdr |
intermediary.labels | |
kv_msg1.daemon |
security_result.about.labels | |
kv_msg1.from |
network.email.from | Se mail_from não contiver @, é anexado @local. |
kv_msg1.msgid |
network.email.mail_id | |
kv_msg1.proto |
security_result.about.labels | |
kv_msg1.relay |
intermediary.hostname, intermediary.ip | Analisado como (HOSTNAME)? [IP] ou HOSTNAME. Se relay_domain estiver presente, defina como intermediary.hostname. Se relay_ip estiver presente, é fundido com intermediary.ip. |
kv_msg1.size |
network.sent_bytes | Convertido em número inteiro sem sinal. |
kv_msg1.stat |
security_result.summary | |
kv_msg1.verify |
security_result.description, security_result.action | Se kv_msg1.verify for FAIL, security_result.action é definido como BLOCK. |
kv_msg1.version |
network.tls.version | |
labels.log_type |
metadata.product_event_type | |
labels.net.host.ip |
principal.ip, principal.asset.ip | |
labels.net.host.port |
principal.port | |
labels.net.peer.ip |
target.ip, target.asset.ip | |
labels.net.peer.port |
target.port | |
labels.net.transport |
network.ip_protocol | Se labels.net.transport for TCP, então TCP. |
level |
security_result.severity | Se o nível for INFO/Informational/DEBUG/info/Information, então é INFORMATIONAL. Se o nível for ERROR/error, então é ERROR. Se o nível for WARNING, então é LOW. |
log.file.path |
target.process.file.full_path | |
logName |
security_result.category_details | |
Logon Account |
principal.user.userid | |
Logon Type |
extensions.auth.mechanism | Se logon_type for 2/Interactive, então INTERACTIVE, se logon_type for 3/8, então NETWORK, se logon_type for 4, então BATCH, se logon_type for 5, então SERVICE, se logon_type for 7, então UNLOCK, se logon_type for 9, então NEW_CREDENTIALS, se logon_type for 10, então REMOTE_INTERACTIVE, se logon_type for 11, então CACHED_INTERACTIVE, caso contrário, MECHANISM_UNSPECIFIED. |
mail_from |
network.email.from | Se mail_from não contiver @, é anexado @local. |
mail_to |
network.email.to | Se mail_to não contiver @, é anexado @local. |
message |
Analisado com padrões grok. | |
namespace |
principal.namespace | |
port |
target.port | Convertido em número inteiro. |
process_id |
target.process.pid | |
providername |
principal.application | |
Relative Target Name |
target.file.full_path | |
resource.labels.project_id |
src.cloud.project.id | |
resource.type |
src.labels | |
response_status |
network.http.response_code | Convertido em número inteiro. |
sec_desc |
security_result.description | |
Security ID |
target.user.windows_sid | |
security_result_action_detail |
security_result.action_details | |
server_name |
target.hostname, target.asset.hostname | |
Share Name |
target.resource.name | |
Source Network Address |
principal.ip, principal.asset.ip | Analisado como IP. |
Source Port |
principal.port | Convertido em número inteiro. |
summary |
security_result.summary | |
target_host |
target.hostname, target.asset.hostname | |
target_url |
target.url | |
target_userid |
target.user.userid | |
time |
timestamp | Analisado como HH:mm:ss e unido à data como aaaa-MM-dd HH:mm:ss para quando, analisado como data. |
upn_name |
intermediary.url | |
URL |
target.url | |
User ID |
target.user.windows_sid | |
user_id |
principal.user.userid | |
UserAgent |
network.http.user_agent | |
metadata.event_type | Definido como STATUS_UPDATE se msg contiver API_HEALTH ou JobDispatcher, definido como USER_LOGIN se msg contiver logged in as e target_userid não estiver vazio, definido como SCAN_HOST se msg contiver Leave Validate., definido como NETWORK_UNCATEGORIZED se msg contiver Getting IP Address from host, definido como RESOURCE_WRITTEN se msg contiver Wrote vpxd health, definido como NETWORK_HTTP se has_principal e has_target forem verdadeiros e application_protocol não estiver vazio, definido como PROCESS_LAUNCH se process_id e cmd não estiverem vazios, definido como USER_UNCATEGORIZED se user_id não estiver vazio ou eventid for 4776, definido como USER_LOGIN se eventid for 4624/4768/4769, definido como USER_LOGOUT se eventid for 4634/4647, definido como USER_RESOURCE_ACCESS se eventid for 5145, definido como STATUS_UPDATE se host_name não estiver vazio, definido como GENERIC_EVENT caso contrário. | |
extensions.auth.type | Definido como MACHINE se eventid for 4624/4768/4769. | |
metadata.log_type | Definido como VMWARE_VCENTER. | |
metadata.vendor_name | Definido como VMWARE. | |
metadata.product_name | Definido como VCENTER. | |
security_result.action | Definido como ALLOW se response_status for 200 ou a ação for Allow. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.