Recolha registos da VPN F5
Este documento explica como carregar registos de VPN F5 para o Google Security Operations através do Bindplane. O analisador extrai informações relevantes para a segurança dos registos. Usa expressões regulares para identificar e analisar campos importantes, como datas/horas, endereços IP e nomes de anfitriões. Em seguida, estrutura estes dados no formato do modelo de dados unificado (UDM) do Google SecOps para análise.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- Uma instância do Google SecOps
- Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
- Se estiver a ser executado através de um proxy, as portas da firewall estão abertas
- Acesso privilegiado ao F5 BIG-IP APM (Access Policy Manager)
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
Instale o agente do Bindplane no seu sistema operativo Windows ou Linux de acordo com as seguintes instruções.
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 este 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_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 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 Serviços ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o Syslog para F5 BIG-IP APM v11.x e mais recente
- Inicie sessão no F5 BIG-IP APM através da CLI ou do SSH.
Introduza o seguinte comando para adicionar o servidor syslog:
tmsh syslog remote server {<Name> {host <bindplane-ip> remote-port <bindplane-port>}}
Certifique-se de que substitui os seguintes parâmetros:
<Name>
: introduza o nome da origem do F5 BIG-IP APM (por exemplo,BIGIP_APM
).<bindplane-ip>
: introduza o endereço IP do agente Bindplane.<bindplane-port>
: introduza o número da porta do agente do Bindplane.
Introduza o seguinte comando para guardar as alterações:
tmsh save sys config partitions all
Tabela de mapeamento do UDM
Campo de registo | Mapeamento do 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 numa indicação de tempo |
hostname | 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 de anfitrião no UDM. Também usado para preencher o campo hostip |
msg | security_result.description | O valor é extraído do campo da mensagem e usado para preencher o campo de descrição 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 no UDM |
additional.fields.Canonical_Info.string_value | O valor é derivado da mensagem de registo | |
additional.fields.IDP.string_value | O valor é derivado da mensagem de registo | |
additional.fields.Plugin_Support.string_value | O valor é derivado da mensagem de registo | |
additional.fields.SMB Stage.string_value | O valor é derivado da mensagem de registo | |
additional.fields.SP.string_value | O valor é derivado da mensagem de registo | |
additional.fields.Timezone.string_value | O valor é derivado da mensagem de registo | |
additional.fields.Tunnel Type.string_value | O valor é derivado da mensagem de registo | |
additional.fields.UI_Mode.string_value | O valor é derivado da mensagem de registo | |
additional.fields.Version.string_value | O valor é derivado da mensagem de registo | |
additional.fields.from_rule_item.string_value | O valor é derivado da mensagem de registo | |
additional.fields.policy_result.string_value | O valor é derivado da mensagem de registo | |
additional.fields.ppp_id.string_value | O valor é derivado da mensagem de registo | |
additional.fields.resource.string_value | O valor é derivado da mensagem de registo | |
additional.fields.rule.string_value | O valor é derivado da mensagem de registo | |
additional.fields.server_vip_ip.string_value | O valor é derivado da mensagem de registo | |
additional.fields.server_vip_name.string_value | O valor é derivado da mensagem de registo | |
additional.fields.to_rule_item.string_value | O valor é derivado da mensagem de registo | |
additional.fields.tunnel_resource.string_value | O valor é derivado da mensagem de registo | |
metadata.description | O valor é derivado da mensagem de registo | |
metadata.event_type | O valor está codificado no código do analisador para alguns eventos e é derivado da mensagem de registo para outros | |
metadata.log_type | O valor é definido como o tipo de lote | |
metadata.product_event_type | O valor é derivado da mensagem de registo | |
metadata.product_name | O valor está codificado no código do analisador | |
metadata.vendor_name | O valor está codificado no código do analisador | |
network.application_protocol | O valor é derivado da mensagem de registo | |
network.direction | O valor é derivado da mensagem de registo | |
network.http.method | O valor é derivado da mensagem de registo | |
network.http.parsed_user_agent | O valor é derivado do campo network.http.user_agent | |
network.http.referral_url | O valor é derivado da mensagem de registo | |
network.http.response_code | O valor é derivado da mensagem de registo | |
network.http.user_agent | O valor é derivado da mensagem de registo | |
network.ip_protocol | O valor é derivado da mensagem de registo | |
network.received_bytes | O valor é derivado da mensagem de registo | |
network.sent_bytes | O valor é derivado da mensagem de registo | |
network.session_id | O valor é derivado da mensagem de registo | |
network.tls.cipher | O valor é derivado da mensagem de registo | |
network.tls.version | O valor é derivado da mensagem de registo | |
observer.asset.hostname | O valor é definido como o campo de nome do anfitrião | |
observer.asset.ip | O valor é definido como o campo hostip | |
observer.hostname | O valor é definido como o campo de nome do anfitrião | |
observer.ip | O valor é definido como o campo hostip | |
principal.application | O valor é derivado da mensagem de registo | |
principal.asset.hostname | O valor é definido como o campo de nome do anfitrião | |
principal.asset.ip | O valor é definido como o campo hostip ou o campo prin_ip, se existir | |
principal.asset.product_object_id | O valor é derivado da mensagem de registo | |
principal.hostname | O valor é definido como o campo de nome do anfitrião | |
principal.ip | O valor é definido como o campo hostip ou o campo prin_ip, se existir | |
principal.location.country_or_region | O valor é derivado da mensagem de registo | |
principal.platform | O valor é derivado da mensagem de registo | |
principal.port | O valor é derivado da mensagem de registo | |
principal.process.command_line | O valor é derivado da mensagem de registo | |
principal.process.pid | O valor é derivado da mensagem de registo | |
principal.resource.name | O valor é derivado da mensagem de registo | |
principal.resource.type | O valor está codificado no código do analisador para alguns eventos e é derivado da mensagem de registo para outros | |
principal.user.email_addresses | O valor é derivado da mensagem de registo | |
principal.user.userid | O valor é derivado da mensagem de registo | |
security_result.action | O valor é derivado da mensagem de registo | |
security_result.description | O valor é derivado da mensagem de registo | |
security_result.rule_name | O valor é derivado da mensagem de registo | |
security_result.severity | O valor é derivado da mensagem de registo | |
security_result.severity_details | O valor é derivado da mensagem de registo | |
security_result.summary | O valor é derivado da mensagem de registo | |
src.ip | O valor é derivado da mensagem de registo | |
src.location.country_or_region | O valor é derivado da mensagem de registo | |
src.port | O valor é derivado da mensagem de registo | |
target.asset.hostname | O valor é derivado da mensagem de registo | |
target.asset.ip | O valor é derivado da mensagem de registo | |
target.hostname | O valor é derivado da mensagem de registo | |
target.ip | O valor é derivado da mensagem de registo | |
target.port | O valor é derivado da mensagem de registo | |
target.process.command_line | O valor é derivado da mensagem de registo | |
target.process.pid | O valor é derivado da mensagem de registo | |
target.resource.id | O valor é derivado da mensagem de registo | |
target.url | O valor é derivado da mensagem de registo | |
target.user.userid | O valor é derivado da mensagem de registo |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.