Coletar registros do F5 BIG-IP ASM

Compatível com:

Este documento explica como ingerir registros do F5 BIG-IP Application Security Manager (ASM) no Google Security Operations usando o Bindplane. O analisador processa vários formatos de registro (syslog, CSV, CEF etc.) e os normaliza no 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 uma instância do Google Security Operations.
  • Use o Windows 2016 ou uma versão mais recente ou um host Linux com systemd.
  • Se você estiver executando por trás de um proxy, verifique se as portas do firewall estão abertas.
  • Verifique se você tem acesso privilegiado ao F5 BIG-IP ASM.

Receber o arquivo de autenticação de ingestão do Google SecOps

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Agentes de coleta.
  3. 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

  1. Faça login no console do Google SecOps.
  2. Acesse Configurações do SIEM > Perfil.
  3. Copie e salve o ID do cliente na seção Detalhes da organização.

Instalar o agente do Bindplane

Instalação do Windows

  1. Abra o Prompt de Comando ou o PowerShell como administrador.
  2. Execute este comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Instalação do Linux

  1. Abra um terminal com privilégios de root ou sudo.
  2. 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

Configurar o agente do Bindplane para ingerir o Syslog e enviar ao Google SecOps

  1. Acesse o arquivo de configuração:

    1. 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.
    2. Abra o arquivo usando um editor de texto (por exemplo, nano, vi ou Bloco de Notas).
  2. 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: '/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
    
  3. Substitua a porta e o endereço IP conforme necessário na sua infraestrutura.

  4. Substitua <customer_id> pelo ID do cliente real.

  5. 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 registro remoto no F5 BIG-IP ASM

  1. Faça login na interface da Web do console do ASM.
  2. Acesse Segurança > Registros de eventos > Perfis de geração de registros.
  3. Clique em Criar.
  4. Informe os seguintes detalhes de configuração:

    • Nome do perfil: insira um nome exclusivo para o perfil.
    • Selecione Segurança de aplicativos.
    • Na guia "Segurança para aplicativos", selecione Avançado se forem necessárias outras configurações.
    • Destino do armazenamento: selecione Armazenamento remoto.
    • Formato de registro: selecione Formato de evento comum (CEF).
    • Limpe o Armazenamento local.
    • Protocolo: selecione UDP ou TCP (dependendo da configuração do agente do Bindplane).
    • Endereços do servidor: insira o endereço IP do agente do Bindplane.
    • Porta: selecionada por padrão 514. Atualize a configuração da porta de acordo com a configuração do agente do Bindplane.
    • Clique em Adicionar.
    • Selecione Garantir geração de registros.
    • Selecione Denunciar anomalias detectadas.
    • Unidade: selecione LOG_LOCAL6. Você também pode selecionar a categoria da unidade do tráfego registrado. Os valores possíveis são de LOG_LOCAL0 a LOG_LOCAL7.
  5. Clique em Concluído.

Associar um perfil de geração de registros a uma política de segurança

  1. Clique em Tráfego local > Servidores virtuais.
  2. Clique no nome do servidor virtual usado pela política de segurança.
  3. No menu Segurança, selecione Políticas.
  4. Verifique se a configuração Política de segurança de aplicativos está Ativada e se a Política está definida como a política de segurança desejada.
  5. Verifique se a configuração Perfil de registro está definida como Ativada.
  6. Na lista Disponível, selecione o perfil a ser usado na política de segurança e mova-o para a lista Selecionado.
  7. Clique em Atualizar.

Tabela de mapeamento do 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.