Recolha registos do F5 ASM
Este documento explica como carregar registos do F5 Application Security Manager (ASM) para o Google Security Operations através do Bindplane. O analisador processa vários formatos de registo do F5 ASM (como syslog, CSV, CEF e Splunk) e normaliza-os no modelo de dados unificado (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 os campos extraídos no esquema UDM.
Antes de começar
Certifique-se de que tem os seguintes pré-requisitos:
- 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 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 o 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 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 Syslog no F5 ASM
Inicie sessão na instância tmsh escrevendo o seguinte comando:
tmsh
Edite a configuração do syslog com o seguinte comando:
edit /sys syslog all-properties
A configuração do Syslog é aberta no editor de texto
vi
e tem um aspeto semelhante ao seguinte exemplo:modify syslog { auth-priv-from notice auth-priv-to emerg cron-from warning cron-to emerg daemon-from notice daemon-to emerg description none include none iso-date disabled kern-from notice kern-to emerg mail-from notice mail-to emerg messages-from notice messages-to warning remote-servers none user-log-from notice user-log-to emerg }
Substitua a linha
include none
pelo seguinte filtro de syslog:include ` filter f_audit{ match(AUDIT); }; destination d_syslog_server { udp(\`<bindplane-ip>\` port (<bindplane-port>)); }; log { source(s_syslog_pipe); filter(f_audit); destination(d_syslog_server); }; `
Substitua
<bindplane-ip>
e<bindplane-port>
pelo endereço IP e número da porta reais configurados para o seu agente do Bindplane.Saia do
vi
escrevendo a seguinte sequência de teclas::wq!
No comando seguinte, escreva
y
para guardar as alterações no ficheiro:Save changes? (y/n/e)
Guarde a configuração escrevendo o seguinte comando:
save /sys config
Tabela de mapeamento do 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.