Coletar registros do APM do F5 BIG-IP
Este documento explica como ingerir registros do F5 BIG-IP APM no Google Security Operations usando o Bindplane.
O F5 BIG-IP Access Policy Manager (APM) oferece acesso unificado e seguro a aplicativos, APIs e dados. Ele oferece controle de acesso baseado em contexto e com reconhecimento de identidade com SSO, autenticação multifator e recursos de VPN SSL para redes corporativas. O analisador extrai campos de registros formatados do syslog do APM F5 BIG-IP. Ele usa grok e/ou kv para analisar a mensagem de registro e mapeia esses valores para o modelo de dados unificado (UDM). Ele também define valores de metadados padrão para a origem e o tipo do evento.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Windows Server 2016 ou mais recente ou host Linux com
systemd - Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas de acordo com os requisitos do agente Bindplane.
- Acesso privilegiado à interface de gerenciamento do F5 BIG-IP
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 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
Instale o agente do Bindplane no sistema operacional Windows ou Linux de acordo com as instruções a seguir.
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" /quietAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sc query observiq-otel-collector
O serviço vai aparecer como EM EXECUÇÃO.
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.shAguarde a conclusão da instalação.
Execute o seguinte comando para confirmar a instalação:
sudo systemctl status observiq-otel-collector
O serviço vai aparecer como ativo (em execução).
Outros recursos de instalação
Para mais opções de instalação e solução de problemas, consulte o guia de instalação do agente do Bindplane.
Configurar o agente do Bindplane para ingerir syslog e enviar ao Google SecOps
Localizar o arquivo de configuração
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
Editar o arquivo de configuração
Substitua todo o conteúdo de
config.yamlpela seguinte configuração:receivers: udplog: listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip creds_file_path: '/path/to/ingestion-authentication-file.json' customer_id: 'YOUR_CUSTOMER_ID' endpoint: malachiteingestion-pa.googleapis.com log_type: 'F5_BIGIP_APM' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
Parâmetros de configuração
Substitua os seguintes marcadores de posição:
Configuração do receptor:
udplog: useudplogpara syslog UDP outcplogpara syslog TCP.0.0.0.0: endereço IP para escutar (0.0.0.0para escutar em todas as interfaces)514: número da porta a ser detectada (porta syslog padrão).
Configuração do exportador:
creds_file_path: caminho completo para o arquivo de autenticação de ingestão:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
YOUR_CUSTOMER_ID: ID do cliente da seção "Receber ID do cliente"endpoint: URL do endpoint regional:- EUA:
malachiteingestion-pa.googleapis.com - Europa:
europe-malachiteingestion-pa.googleapis.com - Ásia:
asia-southeast1-malachiteingestion-pa.googleapis.com - Consulte a lista completa em Endpoints regionais.
- EUA:
log_type: tipo de registro exatamente como aparece no Chronicle (F5_BIGIP_APM)
Salve o arquivo de configuração.
- Depois de editar, salve o arquivo:
- Linux: pressione
Ctrl+O,EntereCtrl+X. - Windows: clique em Arquivo > Salvar.
- Linux: pressione
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 observiq-otel-collectorVerifique se o serviço está em execução:
sudo systemctl status observiq-otel-collectorVerifique se há erros nos registros:
sudo journalctl -u observiq-otel-collector -f
Para reiniciar o agente do Bindplane em Windows, escolha uma das seguintes opções:
Prompt de comando ou PowerShell como administrador:
net stop observiq-otel-collector && net start observiq-otel-collectorConsole de serviços:
- Pressione
Win+R, digiteservices.msce pressione Enter. - Localize o Coletor do OpenTelemetry da observIQ.
Clique com o botão direito do mouse e selecione Reiniciar.
Verifique se o serviço está em execução:
sc query observiq-otel-collectorVerifique se há erros nos registros:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Pressione
Configurar o encaminhamento de syslog do F5 BIG-IP APM
- Faça login na interface web do F5 BIG-IP (TMUI/utilitário de configuração).
- Acesse Sistema > Registros > Configuração > Registro remoto.
- Na seção Registro remoto, forneça os seguintes detalhes de configuração:
- IP remoto: insira o endereço IP do host do agente Bindplane.
- Porta remota: insira
514.
- Clique em Adicionar.
- Clique em Atualizar para salvar a configuração.
Para configurar o registro em alta velocidade (HSL, na sigla em inglês) para registros detalhados do APM pela CLI:
- Use SSH para acessar o sistema F5 BIG-IP.
Execute os comandos a seguir:
tmsh create ltm pool syslog_pool members add { BINDPLANE_IP:514 } tmsh create sys log-config destination remote-high-speed-log secops_hsl pool-name syslog_pool protocol udp tmsh create sys log-config destination remote-syslog secops_syslog remote-high-speed-log secops_hsl tmsh create sys log-config publisher secops_publisher destinations add { secops_syslog } tmsh save sys config- Substitua
BINDPLANE_IPpelo endereço IP do host do agente do Bindplane.
- Substitua
Atribua o editor ao perfil de acesso do APM:
- Acesse Acesso > Perfis / Políticas > Perfis de acesso.
- Selecione o perfil de acesso de destino.
- Na guia Configurações de registro, selecione o editor criado.
- Clique em Atualizar.
Verifique se as mensagens syslog estão sendo enviadas conferindo os registros do agente Bindplane.
Tabela de mapeamento do UDM
| Campo de registro | Mapeamento do UDM | Lógica |
|---|---|---|
| aplicativo | principal.application | O valor é extraído do campo "application" pelo filtro grok. |
| bytes_in | network.received_bytes | O valor é extraído do campo "bytes_in" pelo filtro grok e convertido em um número inteiro sem sinal. |
| bytes_out | network.sent_bytes | O valor é extraído do campo "bytes_out" pelo filtro grok e convertido em um número inteiro sem sinal. |
| cmd_data | principal.process.command_line | O valor é extraído do campo "cmd_data" pelo filtro de chave-valor. |
| destination_ip | target.ip | O valor é extraído do campo "destination_ip" pelo filtro grok. |
| destination_port | target.port | O valor é extraído do campo "destination_port" pelo filtro grok e convertido em número inteiro. |
| pasta | principal.process.file.full_path | O valor é extraído do campo "pasta" pelo filtro kv. |
| geoCountry | principal.location.country_or_region | O valor é extraído do campo "geoCountry" pelo filtro grok. |
| geoState | principal.location.state | O valor é extraído do campo "geoState" pelo filtro grok. |
| inner_msg | security_result.description | O valor é extraído do campo "inner_msg" pelo filtro grok quando nenhuma outra descrição específica está disponível. |
| ip_protocol | network.ip_protocol | O valor é extraído do campo "ip_protocol" pelo filtro grok. |
| principal_hostname | principal.hostname | O valor é extraído do campo "principal_hostname" pelo filtro grok. |
| principal_ip | principal.ip | O valor é extraído do campo "principal_ip" pelo filtro grok. |
| process_id | principal.process.pid | O valor é extraído do campo "process_id" pelo filtro grok. |
| papel | user_role.name | O valor é extraído do campo "função" pelo filtro grok. Se o campo de função contiver "admin" (sem diferenciar maiúsculas de minúsculas), o valor será definido como "ADMINISTRATOR". |
| gravidade, | security_result.severity_details | O valor original da mensagem do syslog é armazenado aqui. O valor é derivado do campo de gravidade usando a lógica condicional: , CRITICAL -> CRITICAL , ERR -> ERROR , ALERT, EMERGENCY -> HIGH , INFO, NOTICE -> INFORMATIONAL , DEBUG -> LOW , WARN -> MEDIUM |
| source_ip | principal.ip | O valor é extraído do campo "source_ip" pelo filtro grok. |
| source_port | principal.port | O valor é extraído do campo "source_port" pelo filtro grok e convertido em número inteiro. |
| status | security_result.summary | O valor é extraído do campo de status pelo filtro kv. |
| timestamp | metadata.event_timestamp, timestamp | O valor é extraído do campo de carimbo de data/hora pelo filtro grok e analisado em um objeto de carimbo de data/hora. O campo de carimbo de data/hora no objeto de evento de nível superior também recebe esse valor. |
| usuário | principal.user.userid | O valor é extraído do campo do usuário pelo filtro grok, depois da remoção dos prefixos "id" ou "ID". O valor é derivado com base na presença de outros campos: , Se o usuário existir: USER_UNCATEGORIZED , Se source_ip e destination_ip existirem: NETWORK_CONNECTION , Se principal_ip ou principal_hostname existirem: STATUS_UPDATE , Caso contrário: GENERIC_EVENT Codificado como "BIGIP_APM". Fixado no código como "F5". Se o campo de resultado for "failed", o valor será definido como "BLOCK". |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.