Recolha registos do F5 BIG-IP ASM
Este documento explica como carregar registos do F5 BIG-IP Application Security Manager (ASM) para o Google Security Operations através do Bindplane. O analisador processa vários formatos de registo (syslog, CSV, CEF, etc.) e normaliza-os para o UDM. Usa padrões grok e extrações de chave-valor para analisar campos, filtragem XML para detalhes de violações, lógica condicional para categorização de eventos e mapeamento de gravidade, e une campos extraídos no esquema UDM.
Antes de começar
- Certifique-se de que tem uma instância do Google Security Operations.
- Certifique-se de que está a usar o Windows 2016 ou posterior, ou um anfitrião Linux com
systemd
. - Se estiver a executar o serviço através de um proxy, certifique-se de que as portas da firewall estão abertas.
- Certifique-se de que tem acesso privilegiado ao F5 BIG-IP ASM.
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 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: '/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: F5_ASM raw_log_field: body 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 Services ou introduzir o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configure o registo remoto no F5 BIG-IP ASM
- Inicie sessão na IU Web da consola do ASM.
- Aceda a Segurança > Registos de eventos > Perfis de registo.
- Clique em Criar.
Faculte os seguintes detalhes de configuração:
- Nome do perfil: introduza um nome exclusivo para o perfil.
- Selecione Segurança da aplicação.
- No separador Segurança da aplicação, selecione Avançadas (se forem necessárias configurações adicionais).
- Destino de armazenamento: selecione Armazenamento remoto.
- Formato de registo: selecione Formato de evento comum (CEF).
- Limpe o armazenamento local.
- Protocolo: selecione UDP ou TCP (consoante a configuração do agente Bindplane).
- Endereços do servidor: introduza o endereço IP do agente do Bindplane.
- Porta: selecionada por predefinição
514
. Atualize a definição da porta de acordo com a configuração do agente Bindplane. - Clique em Adicionar.
- Selecione Garantir registo.
- Selecione Denunciar anomalias detetadas.
- Facility: selecione
LOG_LOCAL6
(opcionalmente, pode selecionar a categoria de instalações do tráfego registado. Os valores possíveis sãoLOG_LOCAL0
aLOG_LOCAL7
).
Clique em Concluído.
Associe um perfil de registo a uma política de segurança
- Clique em Tráfego local > Servidores virtuais.
- Clique no nome do servidor virtual usado pela política de segurança.
- No menu Segurança, selecione Políticas.
- Certifique-se de que a definição Política de segurança da aplicação está ativada e que a Política está definida para a política de segurança pretendida.
- Certifique-se de que a definição Registar perfil está definida como Ativado.
- Na lista Disponível, selecione o perfil a usar para a política de segurança e mova-o para a lista Selecionado.
- Clique em Atualizar.
Tabela de mapeamento da UDM
Campo de registo | Mapeamento de UDM | Lógica |
---|---|---|
act |
security_result.action |
Se act for blocked , mapeia para BLOCK. Se act for passed ou legal , mapeia para PERMITIR. Se act contiver alerted , é mapeado para QUARENTENA. Caso contrário, a predefinição é ALLOW para o formato Splunk. |
app |
network.application_protocol |
Mapeia diretamente para HTTPS, se estiver presente no registo não processado. |
attack_type |
security_result.category_details , metadata.description |
Usado em conjunto com outros campos para determinar security_result.category . Se não estiver disponível outra descrição, esta torna-se a descrição do evento. Para registos no formato Splunk, é usado para determinar a categoria e o resumo se violations estiver vazio. |
client_ip |
principal.ip , principal.asset.ip |
Mapeia diretamente o IP principal. |
cn1 |
network.http.response_code |
Mapeia diretamente para o código de resposta HTTP. |
cn2 |
security_result.severity_details |
Mapeia diretamente os detalhes da gravidade do resultado de segurança. Usado com response_code para determinar se um evento é um alerta. |
column1 |
principal.ip , principal.asset.ip |
Mapeia para o IP principal para determinados registos formatados em CSV. |
column2 |
target.port |
Mapeia para a porta de destino determinados registos formatados em CSV. |
column3 |
target.ip , target.asset.ip |
Mapeia o IP de destino para determinados registos formatados em CSV. |
column4 |
security_result.severity |
Mapeia a gravidade do resultado de segurança para determinados registos formatados em CSV. Os valores Information , Informational , 0 e 4 são mapeados para INFORMATIONAL. Warning , 1 e 3 são mapeados para MÉDIO. Error e 2 são mapeados para ERROR. Critical , CRITICAL e critical são mapeados para CRÍTICO. |
column7 |
security_result.detection_fields , network.http.response_code |
Contém dados XML. viol_name dentro de request-violations é extraído e adicionado como campos de deteção com a chave Request Violation Name_index . viol_name dentro de response_violations é extraído e adicionado como campos de deteção com a chave Response Violation Name_index . response_code em response_violations é mapeado para network.http.response_code . |
column8 |
security_result.rule_name |
Mapeia o nome da regra do resultado de segurança para determinados registos formatados em CSV. |
cs1 |
security_result.rule_name |
Mapeia diretamente o nome da regra do resultado de segurança. |
cs2 |
security_result.summary |
Mapeia diretamente o resumo dos resultados de segurança. |
cs5 |
principal.ip , principal.asset.ip , additional.fields |
Se cs5 contiver um URL LDAP JNDI, é adicionado como um campo adicional com a chave JNDI_LDAP_URL . Caso contrário, se contiver IPs separados por vírgulas, qualquer IP diferente de principal_ip é adicionado como um IP principal adicional. |
cs6 |
principal.location.country_or_region |
Mapeia diretamente o país ou a região da localização principal. |
data |
network.session_id , network.sent_bytes , network.tls.version |
Se estiver presente, é analisado como JSON para extrair sessionid , bits (mapeado para sent_bytes ) e version . |
date_time |
metadata.event_timestamp |
Mapeia diretamente a data/hora do evento após a análise e a conversão para o formato correto. |
dest_ip |
target.ip , target.asset.ip |
Mapeia diretamente o IP de destino. |
dest_port |
target.port |
Mapeia diretamente para a porta de destino. |
dhost |
target.hostname |
Mapeia diretamente o nome do anfitrião de destino. |
dpt |
target.port |
Mapeia diretamente para a porta de destino. |
dst |
target.ip |
Mapeia diretamente o IP de destino. |
dvc |
intermediary.ip |
Mapeia diretamente para o IP do intermediário. |
dvchost |
target.hostname , intermediary.hostname |
Mapeia diretamente o nome do anfitrião de destino e o nome do anfitrião intermediário. |
errdefs_msgno |
additional.fields |
Adicionado como um campo adicional com a chave errdefs_msgno . |
externalId |
additional.fields |
Adicionado como um campo adicional com a chave Support_Id . |
f5_host |
target.hostname , intermediary.hostname |
Mapeia diretamente o nome do anfitrião de destino e o nome do anfitrião intermediário. |
geo_info |
principal.location.country_or_region , security_result.detection_fields |
Mapeia o país ou a região da localização principal. Também adicionado como um campo de deteção com a chave geo_info . |
host |
target.hostname |
Mapeia diretamente o nome do anfitrião de destino. |
ids |
additional.fields |
Analisado como uma lista de IDs de apoio técnico separados por vírgulas. Cada ID é adicionado a um campo adicional com vários valores com a chave supportid . |
ip_addr_intelli |
security_result.detection_fields |
Adicionado como um campo de deteção com a chave ip_addr_intelli . |
ip_client |
principal.ip |
Mapeia diretamente o IP principal. |
ip_route_domain |
principal.ip , principal.asset.ip |
A parte do IP é extraída e mapeada para o IP principal. |
irule |
security_result.rule_name |
Mapeia diretamente o nome da regra do resultado de segurança. |
irule-version |
security_result.rule_version |
Mapeia diretamente para a versão da regra de resultado de segurança. |
level |
security_result.severity , security_result.severity_details |
Usado para determinar a gravidade do resultado de segurança. error ou warning mapeado para ALTO. notice é mapeado para MÉDIO. information ou info para BAIXO. O valor não processado também é mapeado para severity_details . |
logtime |
metadata.event_timestamp |
Mapeia diretamente a data/hora do evento após a análise. |
management_ip_address , management_ip_address_2 |
intermediary.ip |
Mapeia diretamente para o IP do intermediário. |
method |
network.http.method |
Mapeia diretamente para o método HTTP. |
msg |
security_result.summary , metadata.description |
Mapeia diretamente para o resumo dos resultados de segurança para alguns formatos de registo. Se não estiver disponível outra descrição, esta torna-se a descrição do evento. |
policy_name |
security_result.about.resource.name , security_result.rule_name |
Mapeia diretamente para o nome do recurso do resultado de segurança ou o nome da regra. |
process |
target.application |
Mapeia diretamente a aplicação de destino. |
process_id |
principal.process.pid |
Mapeia diretamente para o ID do processo principal. |
protocol |
network.application_protocol , network.ip_protocol , app_protocol |
Mapeia diretamente para o protocolo de aplicação ou o protocolo IP, consoante o formato do registo. |
proxy_id |
security_result.rule_id |
Mapeia diretamente para o ID da regra do resultado de segurança. |
query_string |
additional.fields |
Adicionado como um campo adicional com a chave query_string . |
referrer |
network.http.referral_url |
Mapeia diretamente para o URL de referência HTTP. |
req_method |
network.http.method |
Mapeia diretamente para o método HTTP. |
req_status |
security_result.action , security_result.action_details , security_result.detection_fields |
Se blocked , mapeia security_result.action para BLOCK. Se passed ou legal , mapeia para PERMITIR. Se contiver alerted , é mapeado para QUARENTENA. O valor não processado também é mapeado para action_details e adicionado como um campo de deteção com a chave req_status . |
request |
target.url |
Mapeia diretamente para o URL de destino. |
requestMethod |
network.http.method |
Mapeia diretamente para o método HTTP. |
resp |
security_result.detection_fields |
Adicionado como um campo de deteção com a chave resp . |
resp_code |
network.http.response_code |
Mapeia diretamente para o código de resposta HTTP. |
response |
security_result.summary |
Mapeia diretamente o resumo dos resultados de segurança. |
response_code |
network.http.response_code |
Mapeia diretamente para o código de resposta HTTP. |
route_domain |
additional.fields |
Adicionado como um campo adicional com a chave route_domain . |
rt |
metadata.event_timestamp |
Mapeia diretamente a data/hora do evento após a análise. |
sev |
security_result.severity , security_result.severity_details |
Usado para determinar a gravidade do resultado de segurança. ERROR mapeia para ERROR. O valor não processado também é mapeado para severity_details . |
severity |
security_result.severity , security_result.severity_details |
Usado para determinar a gravidade do resultado de segurança. Informational é mapeado para BAIXO, Error ou warning é mapeado para ALTO, critical é mapeado para CRÍTICO, notice é mapeado para MÉDIO, information ou info é mapeado para BAIXO. O valor não processado também é mapeado para severity_details . |
sig_ids |
security_result.rule_id |
Mapeia diretamente para o ID da regra do resultado de segurança. |
sig_names |
security_result.rule_name |
Mapeia diretamente o nome da regra do resultado de segurança. |
snat_ip |
principal.nat_ip |
Mapeia diretamente para o IP NAT principal. |
snat_port |
principal.nat_port |
Mapeia diretamente para a porta NAT principal. |
src |
principal.ip , principal.asset.ip |
Mapeia diretamente o IP principal. |
spt |
principal.port |
Mapeia diretamente para a porta principal. |
sub_violates |
security_result.about.resource.attribute.labels |
Adicionado como uma etiqueta com a chave Sub Violations aos atributos do recurso de resultado de segurança. |
sub_violations |
security_result.about.resource.attribute.labels |
Adicionado como uma etiqueta com a chave Sub Violations aos atributos do recurso de resultado de segurança. |
summary |
security_result.summary |
Mapeia diretamente o resumo dos resultados de segurança. |
support_id |
metadata.product_log_id |
Tem o prefixo support_id - e está mapeado para o ID do registo do produto. |
suid |
network.session_id |
Mapeia diretamente para o ID da sessão de rede. |
suser |
principal.user.userid |
Mapeia diretamente para o ID do utilizador principal. |
timestamp |
metadata.event_timestamp |
Mapeia diretamente a data/hora do evento após a análise e a conversão para o formato correto. |
unit_host |
principal.hostname , principal.asset.hostname |
Mapeia diretamente para o nome do anfitrião principal. |
uri |
principal.url |
Mapeia diretamente para o URL principal. |
user_id |
principal.user.userid |
Mapeia diretamente para o ID do utilizador principal. |
user_name |
principal.user.user_display_name |
Mapeia diretamente o nome a apresentar do utilizador principal. |
username |
principal.user.userid |
Mapeia diretamente para o ID do utilizador principal. |
useragent |
network.http.user_agent , network.http.parsed_user_agent |
Mapeia diretamente para o agente do utilizador HTTP. Também analisado e mapeado para o agente do utilizador analisado. |
virtualserver |
network.tls.client.server_name |
Mapeia diretamente para o nome do servidor do cliente TLS. |
violate_details |
security_result.detection_fields , network.http.response_code |
Contém dados XML. viol_name dentro de request-violations é extraído e adicionado como campos de deteção com a chave Request Violation Name_index . viol_name dentro de response_violations é extraído e adicionado como campos de deteção com a chave Response Violation Name_index . response_code em response_violations é mapeado para network.http.response_code . |
violate_rate |
security_result.detection_fields |
Adicionado como um campo de deteção com a chave violate_rate . |
violation_rating |
security_result.about.resource.attribute.labels |
Adicionado como uma etiqueta com a chave Violations Rating aos atributos do recurso de resultado de segurança. |
violations |
security_result.description |
Mapeia diretamente a descrição do resultado de segurança. Para registos no formato Splunk, é usado para determinar o resumo, se estiver presente. |
virus_name |
security_result.threat_name |
Mapeia diretamente o nome da ameaça do resultado de segurança. |
vs_name |
network.tls.client.server_name |
Mapeia diretamente para o nome do servidor do cliente TLS. |
websocket_direction |
network.direction |
Se clientToServer , mapeia para INBOUND. Se ServerToclient , mapeia para OUTBOUND. |
websocket_message_type |
security_result.detection_fields |
Adicionado como um campo de deteção com a chave WebsocketMessageType . |
x_fwd_hdr_val |
principal.ip , principal.asset.ip |
Mapeia diretamente o IP principal. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.