Coletar registros do HP ProCurve
Este documento explica como transferir os registros de chaveamento do HP ProCurve para as operações de segurança do Google usando o Bindplane. O código do analisador primeiro tenta analisar a mensagem de registro bruta como JSON. Se isso falhar, ele vai usar expressões regulares (padrões grok
) para extrair campos da mensagem com base nos formatos de registro comuns do HP ProCurve.
Antes de começar
Verifique se você tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou mais recente ou host Linux com systemd
- Se estiver em execução por trás de um proxy, as portas do firewall estarão abertas.
- Acesso privilegiado a um switch HP ProCurve
Receber o arquivo de autenticação de ingestão do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Agentes de coleta.
- Faça o download do arquivo de autenticação de transferência. Salve o arquivo com segurança no sistema em que o BindPlane será instalado.
Receber o ID de cliente do Google SecOps
- Faça login no console do Google SecOps.
- Acesse Configurações do SIEM > Perfil.
- Copie e salve o ID do cliente na seção Detalhes da organização.
Instalar o agente do Bindplane
Instalação do Windows
- Abra o Prompt de Comando ou o PowerShell como administrador.
Execute este 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 este comando:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
Outros recursos de instalação
Para mais opções de instalação, consulte o guia de instalação.
Configurar o agente do Bindplane para processar o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele está no diretório/etc/bindplane-agent/
no Linux ou no diretório de instalação no Windows. - Abra o arquivo usando um editor de texto (por exemplo,
nano
,vi
ou Notepad).
- Localize o arquivo
Edite o arquivo
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: '/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 ingestion_labels: log_type: HP_PROCURVE raw_log_field: body 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 real do cliente.Atualize
/path/to/ingestion-authentication-file.json
para o caminho em que o arquivo de autenticação foi salvo na seção Receber o arquivo de autenticação de transferência do Google SecOps.
Reinicie o agente do Bindplane para aplicar as mudanças
Para reiniciar o agente do Bindplane no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
Para reiniciar o agente do Bindplane no Windows, use o console Services ou digite o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Syslog no switch HP ProCurve
- Faça login no switch HP Procurve com SSH.
Verifique a interface do switch usando o seguinte comando:
show ip int br
Ative o modo de configuração no switch usando o seguinte comando:
console# conf t
Configure o switch para enviar registros usando os seguintes comandos:
logging host <bindplae-server-ip> transport <udp/tcp> port <port-number> logging facility syslog logging trap informational logging buffer 65536 logging origin-id hostname logging source-interface <interface>
Substitua
<bindplae-server-ip>
e<port-number>
pelo endereço IP do Bindplane e pelo número da porta.Substitua
<udp/tcp>
selecionando apenas UDP ou TCP como protocolo de comunicação (dependendo da configuração do agente do Bindplane).Substitua
<interface>
pelo ID da interface que você recebeu anteriormente do switch (por exemplo,Ethernet1/1
).Saia do modo de configuração e salve usando os seguintes comandos:
console# exit console# wr
Tabela de mapeamento da UDM
Campo de registro | Mapeamento de UDM | Lógica |
---|---|---|
AAAScheme | read_only_udm.security_result.detection_fields.value | Valor extraído do campo descrip se a chave for AAAScheme |
AAAType | read_only_udm.security_result.detection_fields.value | Valor extraído do campo descrip se a chave for AAAType |
ID do chassi | read_only_udm.security_result.detection_fields.value | Valor extraído do campo description se a chave for Chassis ID |
O comando é | read_only_udm.security_result.detection_fields.value | Texto depois de Command is no campo commandInfo |
CommandSource | read_only_udm.security_result.detection_fields.value | Valor extraído do campo descrip se a chave for CommandSource |
Config-Method | read_only_udm.additional.fields.value.string_value | Se o campo existir no registro, ele será colocado nos campos adicionais como config_method |
ConfigDestination | read_only_udm.security_result.detection_fields.value | Valor extraído do campo descrip se a chave for ConfigDestination |
ConfigSource | read_only_udm.security_result.detection_fields.value | Valor extraído do campo descrip se a chave for ConfigSource |
Device-Name | read_only_udm.principal.hostname | Se o campo existir no registro, ele será mapeado para o nome de host principal e o nome de host do recurso. |
ID do evento | read_only_udm.additional.fields.value.string_value | Se o campo existir no registro, ele será colocado nos campos adicionais como event_id |
EventIndex | read_only_udm.security_result.detection_fields.value | Valor extraído do campo descrip se a chave for EventIndex |
IfIndex | read_only_udm.security_result.detection_fields.value | Valor extraído do campo description se a chave for IfIndex |
IP: %{IP:IPAddr} | read_only_udm.target.ip, read_only_udm.target.asset.ip | Endereço IP extraído do campo desc e associado ao IP de destino e ao IP do recurso de destino |
IPAddr | read_only_udm.target.ip, read_only_udm.target.asset.ip | Se o campo existir no registro, ele será mapeado para o IP de destino e o IP do recurso de destino. |
Notice-Type | read_only_udm.additional.fields.value.string_value | Se o campo existir no registro, ele será colocado nos campos adicionais como notice_type |
ID da porta | read_only_udm.security_result.detection_fields.value | Valor extraído do campo description se a chave for Port ID |
Endereço-IP-remoto | read_only_udm.additional.fields.value.string_value | Se o campo existir no registro, ele será colocado nos campos adicionais como remote_ip_address |
Serviço | read_only_udm.security_result.detection_fields.value | Valor extraído do campo descrip se a chave for Service |
Tarefa | read_only_udm.security_result.detection_fields.value | Valor extraído do campo descrip se a chave for Task |
Usuário | read_only_udm.principal.user.userid | Se o campo existir no registro, ele será mapeado para o ID do usuário principal |
User-Name | read_only_udm.principal.user.userid | Se o campo existir no registro, ele será mapeado para o ID do usuário principal |
Nome de usuário | read_only_udm.principal.user.userid | Se o campo existir no registro, ele será mapeado para o ID do usuário principal |
UserService | read_only_udm.security_result.detection_fields.value | Valor extraído do campo desc se a chave for UserService |
collection_time.seconds | read_only_udm.metadata.event_timestamp.seconds | Segunda parte do carimbo de data/hora do evento |
dados | Esse campo contém a mensagem de registro bruta e é analisado para extrair outros campos. Ele não está mapeado para a UDM. | |
desc | read_only_udm.security_result.description | Descrição extraída da mensagem de registro |
descrip | Descrição extraída do campo desc , analisada para pares de chave-valor. Ele não está mapeado para a UDM. |
|
description | read_only_udm.security_result.description | Se o campo existir no registro, ele será associado à descrição do resultado de segurança. |
descript | read_only_udm.metadata.description | Se o campo existir no registro, ele será associado à descrição dos metadados. |
event_id | read_only_udm.additional.fields.value.string_value | Se o campo existir no registro, ele será colocado nos campos adicionais como event_id |
eventId | read_only_udm.metadata.product_event_type | ID do evento extraído da mensagem de registro |
nome do host | read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname | Nome do host extraído da mensagem de registro e mapeado para o nome do host principal e do recurso |
inter_ip | read_only_udm.additional.fields.value.string_value, read_only_udm.intermediary.ip | Se o campo existir no registro e for um IP válido, ele será mapeado para o IP intermediário. Caso contrário, ele será colocado nos campos adicionais como inter_ip . |
notice_type | read_only_udm.additional.fields.value.string_value | Se o campo existir no registro, ele será colocado nos campos adicionais como notice_type |
pid | read_only_udm.principal.process.pid | Se o campo existir no registro, ele será mapeado para o PID do processo principal. |
programa | Informações do programa extraídas da mensagem de registro e analisadas para extrair módulo, gravidade e ação. Ele não está mapeado para a UDM. | |
proto | read_only_udm.network.application_protocol, read_only_udm.additional.fields.value.string_value | Protocolo extraído da mensagem de registro. Se corresponder a protocolos conhecidos, ele será mapeado para o protocolo do aplicativo. Caso contrário, ele será colocado nos campos adicionais como Application Protocol . |
remote_ip_address | read_only_udm.principal.ip, read_only_udm.principal.asset.ip, read_only_udm.additional.fields.value.string_value | Se o campo existir no registro e for um IP válido, ele será mapeado para o IP principal e o IP do recurso principal. Caso contrário, ele será colocado nos campos adicionais como remote_ip_address . |
gravidade, | read_only_udm.security_result.severity, read_only_udm.security_result.severity_details | Gravidade extraída do campo program após a divisão por / . Ele é mapeado para os níveis de gravidade do UDM e também armazenado como detalhes brutos de gravidade. |
src_ip | read_only_udm.principal.ip, read_only_udm.principal.asset.ip | O IP de origem é extraído da mensagem de registro e associado ao IP principal e ao IP do recurso principal. |
status | read_only_udm.additional.fields.value.string_value | Se o campo existir no registro, ele será colocado nos campos adicionais como status |
targetHostname | read_only_udm.target.hostname, read_only_udm.target.asset.ip | Se o campo existir no registro, ele será mapeado para o nome de host e o IP do recurso de destino. |
target_ip | read_only_udm.target.ip, read_only_udm.target.asset.ip | IP de destino extraído da mensagem de registro e associado ao IP de destino e ao IP do recurso de destino |
timestamp | read_only_udm.metadata.event_timestamp.seconds | Carimbo de data/hora extraído da mensagem de registro e convertido em carimbo de data/hora do evento |
timestamp.seconds | read_only_udm.metadata.event_timestamp.seconds | Segunda parte do carimbo de data/hora do evento |
nome de usuário | read_only_udm.principal.user.userid | Se o campo existir no registro, ele será mapeado para o ID do usuário principal |
read_only_udm.metadata.event_type | Determinado com base em uma combinação de campos e lógica: - NETWORK_CONNECTION : se has_principal e has_target forem verdadeiros. - USER_LOGOUT : se action for WEBOPT_LOGOUT , LOGOUT ou SHELL_LOGOUT . - USER_LOGIN : se action for LOGIN ou WEBOPT_LOGIN_SUC . - STATUS_UPDATE : se action não estiver vazio ou src_ip /hostname não estiverem vazios. - USER_UNCATEGORIZED : se has_user for verdadeiro. - GENERIC_EVENT : se nenhuma dessas condições for atendida. |
|
read_only_udm.metadata.product_name | Fixado em Procurve |
|
read_only_udm.metadata.vendor_name | Fixado em HP |
|
read_only_udm.extensions.auth.type | Defina como MACHINE se event_type for USER_LOGOUT ou USER_LOGIN |
Alterações
2024-03-04
Melhoria:
- Adicionamos um padrão Grok para analisar logs de descodificação.
- Se
severity
for igual aDHCP
,DHCP
será mapeado paranetwork.application_protocol
. severity
foi mapeado parasecurity_result.severity_details
.prin_port
foi mapeado paraprincipal.port
.pid
foi mapeado paraprincipal.process.pid
.descript
foi mapeado parametadata.description
.inter_ip
foi mapeado paraintermediary.ip
.remote_ip_address
foi mapeado paraprincipal.ip
.username
foi mapeado paraprincipal.user.userid
.status
,config_method
,event_id
enotice_type
foram mapeados paraadditional.fields
.
2023-09-24
Melhoria:
- Adicionamos um padrão Grok para analisar registros não analisados.
target_mac
foi mapeado paratarget.mac
.msg
foi mapeado parametadata.description
.src_mac
foi mapeado paraprincipal.mac
.severity
foi mapeado parasecurity_result.severity
.
2023-07-24
Melhoria:
- Adição do padrão Grok para analisar e mapear registros não analisados.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.