Coletar registros de VPN da F5
Este documento explica como ingerir registros de VPN do F5 no Google Security Operations usando o Bindplane. O analisador extrai informações relevantes para a segurança dos registros. Ele usa expressões regulares para identificar e analisar campos principais, como carimbos de data/hora, endereços IP e nomes de host, e estrutura esses dados no formato do modelo de dados unificado (UDM) do Google SecOps para análise.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- Uma instância do Google SecOps
- Windows 2016 ou mais recente ou um host Linux com
systemd
- Se estiver executando por trás de um proxy, as portas do firewall estarão abertas.
- Acesso privilegiado ao F5 BIG-IP APM (Gerenciador de políticas de acesso)
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
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" /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 este 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_file_path: '/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 log_type: 'F5_VPN' raw_log_field: body ingestion_labels: 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 em Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
Para reiniciar o agente do Bindplane em Windows, use o console Serviços ou insira o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Syslog para F5 BIG-IP APM v11.x e mais recente
- Faça login no F5 BIG-IP APM usando a CLI ou o SSH.
Digite o seguinte comando para adicionar o servidor syslog:
tmsh syslog remote server {<Name> {host <bindplane-ip> remote-port <bindplane-port>}}
Substitua os seguintes parâmetros:
<Name>
: insira o nome da origem do APM do F5 BIG-IP (por exemplo,BIGIP_APM
).<bindplane-ip>
: insira o endereço IP do agente do Bindplane.<bindplane-port>
: insira o número da porta do agente do Bindplane.
Insira o comando a seguir para salvar as mudanças:
tmsh save sys config partitions all
Tabela de mapeamento da UDM
Campo de registro | Mapeamento da UDM | Lógica |
---|---|---|
cmd_data | principal.process.command_line | O valor é extraído do campo "msg". |
errdefs_msgno | additional.fields.errdefs_msgno.string_value | O valor é extraído do campo "msg". |
event_time | metadata.event_timestamp | O valor é analisado e convertido em um carimbo de data/hora |
nome do host | principal.hostname, observer.hostname, principal.asset.hostname, observer.asset.hostname, hostip | O valor é extraído do campo de mensagem e usado para preencher os campos de nome do host na UDM. Também usado para preencher o campo "hostip". |
msg | security_result.description | O valor é extraído do campo "message" e usado para preencher o campo "description" no objeto "security_result". |
prin_ip | principal.ip, principal.asset.ip | O valor é extraído do campo de mensagem e usado para preencher os campos de endereço IP na UDM. |
additional.fields.Canonical_Info.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.IDP.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.Plugin_Support.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.SMB Stage.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.SP.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.Timezone.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.Tunnel Type.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.UI_Mode.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.Version.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.from_rule_item.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.policy_result.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.ppp_id.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.resource.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.rule.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.server_vip_ip.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.server_vip_name.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.to_rule_item.string_value | O valor é derivado da mensagem de registro. | |
additional.fields.tunnel_resource.string_value | O valor é derivado da mensagem de registro. | |
metadata.description | O valor é derivado da mensagem de registro. | |
metadata.event_type | O valor é codificado no código do analisador para alguns eventos e derivado da mensagem de registro para outros. | |
metadata.log_type | O valor é definido como o tipo de lote. | |
metadata.product_event_type | O valor é derivado da mensagem de registro. | |
metadata.product_name | O valor está fixado no código do analisador. | |
metadata.vendor_name | O valor está fixado no código do analisador. | |
network.application_protocol | O valor é derivado da mensagem de registro. | |
network.direction | O valor é derivado da mensagem de registro. | |
network.http.method | O valor é derivado da mensagem de registro. | |
network.http.parsed_user_agent | O valor é derivado do campo "network.http.user_agent". | |
network.http.referral_url | O valor é derivado da mensagem de registro. | |
network.http.response_code | O valor é derivado da mensagem de registro. | |
network.http.user_agent | O valor é derivado da mensagem de registro. | |
network.ip_protocol | O valor é derivado da mensagem de registro. | |
network.received_bytes | O valor é derivado da mensagem de registro. | |
network.sent_bytes | O valor é derivado da mensagem de registro. | |
network.session_id | O valor é derivado da mensagem de registro. | |
network.tls.cipher | O valor é derivado da mensagem de registro. | |
network.tls.version | O valor é derivado da mensagem de registro. | |
observer.asset.hostname | O valor é definido como o campo de nome do host. | |
observer.asset.ip | O valor é definido como o campo "hostip". | |
observer.hostname | O valor é definido como o campo de nome do host. | |
observer.ip | O valor é definido como o campo "hostip". | |
principal.application | O valor é derivado da mensagem de registro. | |
principal.asset.hostname | O valor é definido como o campo de nome do host. | |
principal.asset.ip | O valor é definido como o campo "hostip" ou "prin_ip", se existir. | |
principal.asset.product_object_id | O valor é derivado da mensagem de registro. | |
principal.hostname | O valor é definido como o campo de nome do host. | |
principal.ip | O valor é definido como o campo "hostip" ou "prin_ip", se existir. | |
principal.location.country_or_region | O valor é derivado da mensagem de registro. | |
principal.platform | O valor é derivado da mensagem de registro. | |
principal.port | O valor é derivado da mensagem de registro. | |
principal.process.command_line | O valor é derivado da mensagem de registro. | |
principal.process.pid | O valor é derivado da mensagem de registro. | |
principal.resource.name | O valor é derivado da mensagem de registro. | |
principal.resource.type | O valor é codificado no código do analisador para alguns eventos e derivado da mensagem de registro para outros. | |
principal.user.email_addresses | O valor é derivado da mensagem de registro. | |
principal.user.userid | O valor é derivado da mensagem de registro. | |
security_result.action | O valor é derivado da mensagem de registro. | |
security_result.description | O valor é derivado da mensagem de registro. | |
security_result.rule_name | O valor é derivado da mensagem de registro. | |
security_result.severity | O valor é derivado da mensagem de registro. | |
security_result.severity_details | O valor é derivado da mensagem de registro. | |
security_result.summary | O valor é derivado da mensagem de registro. | |
src.ip | O valor é derivado da mensagem de registro. | |
src.location.country_or_region | O valor é derivado da mensagem de registro. | |
src.port | O valor é derivado da mensagem de registro. | |
target.asset.hostname | O valor é derivado da mensagem de registro. | |
target.asset.ip | O valor é derivado da mensagem de registro. | |
target.hostname | O valor é derivado da mensagem de registro. | |
target.ip | O valor é derivado da mensagem de registro. | |
target.port | O valor é derivado da mensagem de registro. | |
target.process.command_line | O valor é derivado da mensagem de registro. | |
target.process.pid | O valor é derivado da mensagem de registro. | |
target.resource.id | O valor é derivado da mensagem de registro. | |
target.url | O valor é derivado da mensagem de registro. | |
target.user.userid | O valor é derivado da mensagem de registro. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.