Recolha registos do HP ProCurve
Este documento explica como carregar os registos do comutador HP ProCurve para o Google Security Operations através do Bindplane. O código do analisador tenta primeiro analisar a mensagem de registo não processada como JSON. Se falhar, usa expressões regulares (padrões grok
) para extrair campos da mensagem com base em formatos de registo comuns do HP ProCurve.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Instância do Google SecOps
- Windows 2016 ou posterior, ou anfitrião Linux com systemd
- Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
- Acesso privilegiado a um comutador HP ProCurve
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
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: '/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 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 do Bindplane no Windows, pode usar a consola Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog no comutador HP ProCurve
- Inicie sessão no comutador HP Procurve com SSH.
Valide a interface do comutador através do seguinte comando:
show ip int br
Ative o modo de configuração no comutador através do seguinte comando:
console# conf t
Configure o comutador para enviar registos através dos 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 (consoante a configuração do agente Bindplane).Substitua
<interface>
pelo ID da interface que recebeu anteriormente do comutador (por exemplo,Ethernet1/1
).Saia do modo de configuração e guarde as alterações com os seguintes comandos:
console# exit console# wr
Tabela de mapeamento do UDM
Campo de registo | Mapeamento do 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 chassis | 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 após 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 registo, é 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 registo, é mapeado para o nome do anfitrião principal e o nome do anfitrião do recurso |
Event-ID | read_only_udm.additional.fields.value.string_value | Se o campo existir no registo, é 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 registo, é 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 registo, é 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 registo, é 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 |
Utilizador | read_only_udm.principal.user.userid | Se o campo existir no registo, é mapeado para o ID do utilizador principal |
User-Name | read_only_udm.principal.user.userid | Se o campo existir no registo, é mapeado para o ID do utilizador principal |
Nome de utilizador | read_only_udm.principal.user.userid | Se o campo existir no registo, é mapeado para o ID do utilizador 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 | Parte dos segundos da data/hora do evento |
dados | Este campo contém a mensagem de registo não processada e é analisado para extrair outros campos. Não está mapeado para o UDM. | |
desc | read_only_udm.security_result.description | Descrição extraída da mensagem de registo |
descrip | Descrição extraída do campo desc , analisada mais detalhadamente para pares de chave-valor. Não está mapeado para o UDM. |
|
descrição | read_only_udm.security_result.description | Se o campo existir no registo, é mapeado para a descrição do resultado de segurança |
descript | read_only_udm.metadata.description | Se o campo existir no registo, é mapeado para a descrição dos metadados |
event_id | read_only_udm.additional.fields.value.string_value | Se o campo existir no registo, é colocado nos campos adicionais como event_id |
eventId | read_only_udm.metadata.product_event_type | ID do evento extraído da mensagem de registo |
hostname | read_only_udm.principal.hostname, read_only_udm.principal.asset.hostname | Nome do anfitrião extraído da mensagem de registo e mapeado para o nome do anfitrião principal e o nome do anfitrião do recurso |
inter_ip | read_only_udm.additional.fields.value.string_value, read_only_udm.intermediary.ip | Se o campo existir no registo e for um IP válido, é mapeado para o IP intermediário. Caso contrário, é colocado nos campos adicionais como inter_ip |
notice_type | read_only_udm.additional.fields.value.string_value | Se o campo existir no registo, é colocado nos campos adicionais como notice_type |
pid | read_only_udm.principal.process.pid | Se o campo existir no registo, é mapeado para o PID do processo principal |
programa | Informações do programa extraídas da mensagem de registo, analisadas posteriormente para extrair o módulo, a gravidade e a ação. Não está mapeado para o UDM. | |
proto | read_only_udm.network.application_protocol, read_only_udm.additional.fields.value.string_value | Protocolo extraído da mensagem de registo. Se corresponder a protocolos conhecidos, é mapeado para o protocolo de aplicação. Caso contrário, é 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 registo e for um IP válido, é mapeado para o IP principal e o IP do recurso principal. Caso contrário, é 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 / . É mapeado para os níveis de gravidade do UDM e também armazenado como detalhes de gravidade não processados |
src_ip | read_only_udm.principal.ip, read_only_udm.principal.asset.ip | O IP de origem é extraído da mensagem de registo e mapeado para o IP principal e o IP do recurso principal |
estado | read_only_udm.additional.fields.value.string_value | Se o campo existir no registo, é colocado nos campos adicionais como status |
targetHostname | read_only_udm.target.hostname, read_only_udm.target.asset.ip | Se o campo existir no registo, é mapeado para o nome do anfitrião de destino e o IP do recurso de destino |
target_ip | read_only_udm.target.ip, read_only_udm.target.asset.ip | O IP de destino foi extraído da mensagem de registo e mapeado para o IP de destino e o IP do recurso de destino |
timestamp | read_only_udm.metadata.event_timestamp.seconds | Data/hora extraída da mensagem de registo e convertida na data/hora do evento |
timestamp.seconds | read_only_udm.metadata.event_timestamp.seconds | Parte dos segundos da data/hora do evento |
nome de utilizador | read_only_udm.principal.user.userid | Se o campo existir no registo, é mapeado para o ID do utilizador principal |
read_only_udm.metadata.event_type | Determinado com base numa 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 destas condições for cumprida. |
|
read_only_udm.metadata.product_name | Codificado nos Procurve |
|
read_only_udm.metadata.vendor_name | Codificado nos 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 da Google SecOps.