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,viou Bloco de Notas).
- Localize o arquivo
Edite o arquivo
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 do cliente real.Atualize
/path/to/ingestion-authentication-file.jsonpara 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-agentPara 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 brAtive o modo de configuração na chave usando o seguinte comando:
console# conf tConfigure 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.