Coletar registros do F5 ASM
Este documento explica como ingerir registros do F5 Application Security Manager (ASM) no Google Security Operations usando o Bindplane. O analisador processa vários formatos de registro do F5 ASM (como syslog, CSV, CEF e Splunk) e os normaliza no modelo de dados unificado (UDM). Ele usa padrões grok e extrações de chave-valor para analisar campos, filtragem XML para detalhes de violação, lógica condicional para categorização de eventos e mapeamento de gravidade, além de mesclar campos extraídos no esquema da UDM.
Antes de começar
Verifique se você tem os pré-requisitos a seguir:
- 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 ASM
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
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 o 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 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 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 no Linux, execute o seguinte comando:
sudo systemctl restart bindplane-agent
Para reiniciar o agente do Bindplane no Windows, use o console Serviços ou insira o seguinte comando:
net stop BindPlaneAgent && net start BindPlaneAgent
Configurar o Syslog no F5 ASM
Faça login na instância tmsh digitando o seguinte comando:
tmsh
Edite a configuração do syslog usando o seguinte comando:
edit /sys syslog all-properties
A configuração do Syslog é aberta no editor de texto
vi
e aparece semelhante ao exemplo a seguir: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 seu agente do Bindplane.Saia do
vi
digitando a seguinte sequência de teclas::wq!
No seguinte comando, digite
y
para salvar as mudanças no arquivo:Save changes? (y/n/e)
Salve a configuração digitando o seguinte comando:
save /sys config
Tabela de mapeamento da UDM
Campo de registro | Mapeamento do UDM | Lógica |
---|---|---|
act |
security_result.action |
Se act for blocked , será mapeado para BLOCK. Se act for passed ou legal , será mapeado para ALLOW. Se act contiver alerted , será mapeado para QUARENTENA. Caso contrário, o padrão é ALLOW para o formato Splunk. |
app |
network.application_protocol |
Mapeia diretamente para HTTPS se estiver presente no registro bruto. |
attack_type |
security_result.category_details , metadata.description |
Usado em conjunto com outros campos para determinar security_result.category . Se nenhuma outra descrição estiver disponível, ela será usada. Para registros no formato Splunk, ele é usado para determinar a categoria e o resumo se violations estiver vazio. |
client_ip |
principal.ip , principal.asset.ip |
Mapeia diretamente para 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 de 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 de determinados registros formatados em CSV. |
column2 |
target.port |
Mapeia para a porta de destino de determinados registros formatados em CSV. |
column3 |
target.ip , target.asset.ip |
Mapeia para o IP de destino de determinados registros formatados em CSV. |
column4 |
security_result.severity |
Mapeia a gravidade do resultado de segurança para determinados registros 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 CRITICAL. |
column7 |
security_result.detection_fields , network.http.response_code |
Contém dados XML. viol_name em request-violations é extraído e adicionado como campos de detecção com a chave Request Violation Name_index . viol_name em response_violations é extraído e adicionado como campos de detecçã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 para o nome da regra de resultado de segurança em determinados registros formatados em CSV. |
cs1 |
security_result.rule_name |
Mapeia diretamente o nome da regra de 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, ele será adicionado como um campo extra com a chave JNDI_LDAP_URL . Caso contrário, se ele contiver IPs separados por vírgulas, qualquer IP diferente de principal_ip será adicionado como um IP principal adicional. |
cs6 |
principal.location.country_or_region |
Mapeia diretamente o país ou a região do local principal. |
data |
network.session_id , network.sent_bytes , network.tls.version |
Se presente, será analisado como JSON para extrair sessionid , bits (mapeado para sent_bytes ) e version . |
date_time |
metadata.event_timestamp |
Mapeia diretamente para o carimbo de data/hora do evento após a análise e conversão para o formato correto. |
dest_ip |
target.ip , target.asset.ip |
Mapeia diretamente para o IP de destino. |
dest_port |
target.port |
Mapeia diretamente para a porta de destino. |
dhost |
target.hostname |
Mapeia diretamente para o nome do host de destino. |
dpt |
target.port |
Mapeia diretamente para a porta de destino. |
dst |
target.ip |
Mapeia diretamente para o IP de destino. |
dvc |
intermediary.ip |
Mapeia diretamente para o IP intermediário. |
dvchost |
target.hostname , intermediary.hostname |
Mapeia diretamente para o nome do host de destino e o nome do host intermediário. |
errdefs_msgno |
additional.fields |
Adicionado como um campo extra com a chave errdefs_msgno . |
externalId |
additional.fields |
Adicionado como um campo extra com a chave Support_Id . |
f5_host |
target.hostname , intermediary.hostname |
Mapeia diretamente para o nome do host de destino e o nome do host intermediário. |
geo_info |
principal.location.country_or_region , security_result.detection_fields |
Mapeia para o país ou região do local principal. Também adicionado como um campo de detecção com a chave geo_info . |
host |
target.hostname |
Mapeia diretamente para o nome do host de destino. |
ids |
additional.fields |
Analisado como uma lista separada por vírgulas de IDs de suporte. Cada ID é adicionado a um campo adicional com valor de lista e chave supportid . |
ip_addr_intelli |
security_result.detection_fields |
Adicionado como um campo de detecção com a chave ip_addr_intelli . |
ip_client |
principal.ip |
Mapeia diretamente para 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 de 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 mapeiam para ALTO. notice é mapeado para MÉDIO. information ou info mapeiam para BAIXO. O valor bruto também é mapeado para severity_details . |
logtime |
metadata.event_timestamp |
Mapeia diretamente para o carimbo de data/hora do evento após a análise. |
management_ip_address , management_ip_address_2 |
intermediary.ip |
Mapeia diretamente para o IP intermediário. |
method |
network.http.method |
Mapeia diretamente para o método HTTP. |
msg |
security_result.summary , metadata.description |
Mapeia diretamente o resumo dos resultados de segurança para alguns formatos de registro. Se nenhuma outra descrição estiver disponível, ela será usada. |
policy_name |
security_result.about.resource.name , security_result.rule_name |
Mapeia diretamente para o nome do recurso ou da regra do resultado de segurança. |
process |
target.application |
Mapeia diretamente para o aplicativo 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 aplicativo ou IP, dependendo do formato do registro. |
proxy_id |
security_result.rule_id |
Mapeia diretamente para o ID da regra de resultado de segurança. |
query_string |
additional.fields |
Adicionado como um campo extra com a chave query_string . |
referrer |
network.http.referral_url |
Mapeia diretamente para o URL de encaminhamento 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 ALLOW. Se contiver alerted , será mapeado para QUARENTENA. O valor bruto também é mapeado para action_details e adicionado como um campo de detecçã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 detecçã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 extra com a chave route_domain . |
rt |
metadata.event_timestamp |
Mapeia diretamente para o carimbo de 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 é mapeado para ERROR. O valor bruto 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 LOW, Error ou warning para HIGH, critical para CRITICAL, notice para MEDIUM e information ou info para LOW. O valor bruto também é mapeado para severity_details . |
sig_ids |
security_result.rule_id |
Mapeia diretamente para o ID da regra de resultado de segurança. |
sig_names |
security_result.rule_name |
Mapeia diretamente o nome da regra de 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 para o IP principal. |
spt |
principal.port |
Mapeia diretamente para a porta principal. |
sub_violates |
security_result.about.resource.attribute.labels |
Adicionado como um rótulo com a chave Sub Violations aos atributos do recurso de resultado de segurança. |
sub_violations |
security_result.about.resource.attribute.labels |
Adicionado como um rótulo 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 |
Prefixo support_id - e mapeamento para o ID do registro 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 usuário principal. |
timestamp |
metadata.event_timestamp |
Mapeia diretamente para o carimbo de data/hora do evento após a análise e conversão para o formato correto. |
unit_host |
principal.hostname , principal.asset.hostname |
Mapeia diretamente para o nome do host principal. |
uri |
principal.url |
Mapeia diretamente para o URL principal. |
user_id |
principal.user.userid |
Mapeia diretamente para o ID do usuário principal. |
user_name |
principal.user.user_display_name |
Mapeia diretamente para o nome de exibição do usuário principal. |
username |
principal.user.userid |
Mapeia diretamente para o ID do usuário principal. |
useragent |
network.http.user_agent , network.http.parsed_user_agent |
Mapeia diretamente para o agente do usuário HTTP. Também analisado e mapeado para o user agent analisado. |
virtualserver |
network.tls.client.server_name |
Mapeia diretamente para o nome do servidor cliente TLS. |
violate_details |
security_result.detection_fields , network.http.response_code |
Contém dados XML. viol_name em request-violations é extraído e adicionado como campos de detecção com a chave Request Violation Name_index . viol_name em response_violations é extraído e adicionado como campos de detecçã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 detecção com a chave violate_rate . |
violation_rating |
security_result.about.resource.attribute.labels |
Adicionado como um rótulo 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 registros no formato Splunk, ele é usado para determinar o resumo, se presente. |
virus_name |
security_result.threat_name |
Mapeia diretamente para o nome da ameaça do resultado de segurança. |
vs_name |
network.tls.client.server_name |
Mapeia diretamente para o nome do servidor cliente TLS. |
websocket_direction |
network.direction |
Se clientToServer , será mapeado para INBOUND. Se ServerToclient , será mapeado para OUTBOUND. |
websocket_message_type |
security_result.detection_fields |
Adicionado como um campo de detecção com a chave WebsocketMessageType . |
x_fwd_hdr_val |
principal.ip , principal.asset.ip |
Mapeia diretamente para o IP principal. |
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.