Coletar registros do HP ProCurve
Neste documento, explicamos como ingerir os registros do switch HP ProCurve no Google Security Operations usando o Bindplane. O código do analisador tenta primeiro analisar a mensagem de registro bruta como JSON. Se isso falhar, ele usará expressões regulares (padrões grok
) para extrair campos da mensagem com base em formatos de registro comuns do HP ProCurve.
Antes de começar
Verifique se você atende aos seguintes pré-requisitos:
- Instância do Google SecOps
- Host Windows 2016 ou mais recente ou Linux com systemd
- Se estiver executando 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.
- Baixe o arquivo de autenticação de ingestão. Salve o arquivo de forma segura no sistema em que o Bindplane será instalado.
Receber o ID do 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 root 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 ingerir o Syslog e enviar ao Google SecOps
Acesse o arquivo de configuração:
- Localize o arquivo
config.yaml
. Normalmente, ele fica 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 Bloco de Notas).
- 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 do cliente real.Atualize
/path/to/ingestion-authentication-file.json
para o caminho em que o arquivo de autenticação foi salvo na seção Receber arquivo de autenticação de ingestão 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 Serviços ou insira 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 na chave 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 o 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 da 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 do host principal e o nome do host do recurso. |
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 . |
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 mapeado para o IP de destino e o 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 |
Remote-IP-Address | 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 | Segundos 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 e 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á mapeado para a descrição do resultado de segurança. |
descript | read_only_udm.metadata.description | Se o campo existir no registro, ele será mapeado para a 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, analisadas posteriormente 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 ele corresponder a protocolos conhecidos, 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 níveis de gravidade da UDM e também armazenado como detalhes de gravidade bruta. |
src_ip | read_only_udm.principal.ip, read_only_udm.principal.asset.ip | IP de origem extraído da mensagem de registro e mapeado para o IP principal e o 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 do 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 mapeado para o IP de destino e o 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 para o carimbo de data/hora do evento. |
timestamp.seconds | read_only_udm.metadata.event_timestamp.seconds | Segundos 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 no código para Procurve |
|
read_only_udm.metadata.vendor_name | Fixado no código para HP |
|
read_only_udm.extensions.auth.type | Defina como MACHINE se event_type for USER_LOGOUT ou USER_LOGIN |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.