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,viou Bloco de notas).
- Localize o ficheiro
Edite o ficheiro
config.yamlda 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_labelsSubstitua 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.jsonpara 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-agentPara 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 brAtive o modo de configuração no comutador através do seguinte comando:
console# conf tConfigure 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.