Raccogliere i log di F5 Silverline

Versione parser: 6.0

Supportata in:

Questo documento spiega come importare i log di F5 Silverline in Google Security Operations utilizzando Bindplane.

F5 Silverline è una piattaforma di servizi di sicurezza basata su cloud che fornisce servizi di protezione DDoS, Web Application Firewall (WAF) e IP Intelligence. La piattaforma protegge applicazioni e infrastrutture da attacchi distributed denial of service, exploit di applicazioni web e traffico dannoso tramite i centri di pulizia globali e il Security Operations Center di F5.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Windows Server 2016 o versioni successive oppure host Linux con systemd
  • Connettività di rete tra l'agente Bindplane e internet
  • Se l'esecuzione avviene dietro un proxy, assicurati che le porte del firewall siano aperte in base ai requisiti dell'agente Bindplane
  • Accesso al portale F5 Silverline con privilegi amministrativi
  • Regole firewall che consentono il traffico TLS+TCP in entrata sulla porta 6514 all'host dell'agente Bindplane

Ottieni le credenziali di Google SecOps per l'agente Bindplane

Per autenticare l'agente Bindplane in Google SecOps, scegli uno dei seguenti metodi:

  • Nuovi deployment: utilizza l'API Chronicle (opzione 1).
  • Deployment legacy: continua a utilizzare il file di autenticazione dell'acquisizione (Opzione 2) fino alla dismissione dell'API Ingestion il 20 luglio 2027.
  1. Accedi alla consoleGoogle Cloud e seleziona il progetto Google Cloud collegato alla tua istanza Google SecOps.
  2. Vai a IAM e amministrazione > Service account.
  3. Fai clic su Crea service account.
  4. Fornisci i seguenti dettagli di configurazione:
    • Nome service account: inserisci un nome per l'account (ad esempio, bindplane-ingest).
    • Descrizione service account: inserisci una descrizione (ad esempio Bindplane agent log ingestion).
  5. Fai clic su Crea e continua.
  6. Nella sezione Concedi a questo account di servizio l'accesso al progetto, fai clic su Seleziona un ruolo e seleziona Chronicle Editor.
  7. Fai clic su Continua e poi su Fine.
  8. Fai clic sul account di servizio che hai creato, quindi vai alla scheda Chiavi.
  9. Fai clic su Aggiungi chiave > Crea nuova chiave.
  10. Seleziona JSON e fai clic su Crea. Il file della chiave viene scaricato sul tuo computer.
  11. Salva il file della chiave come ingestion-auth.json nella directory del raccoglitore Bindplane (/opt/observiq-otel-collector/ingestion-auth.json su Linux o C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json su Windows) o aggiorna creds_file_path in config.yaml in modo che corrisponda al percorso in cui lo salvi.
  12. Vai a IAM e amministrazione > Impostazioni e copia il Numero progetto. Ti servirà per la configurazione dell'esportatore.

Opzione 2: scarica il file di autenticazione dell'acquisizione (legacy)

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Agenti di raccolta.
  3. Scarica il file di autenticazione dell'acquisizione.
  4. Salva il file in modo sicuro sul sistema in cui verrà installato l'agente Bindplane.

Recuperare l'ID cliente Google SecOps

  1. Accedi alla console Google SecOps.
  2. Vai a Impostazioni SIEM > Profilo.
  3. Copia e salva l'ID cliente dalla sezione Dettagli dell'organizzazione.

Installa l'agente Bindplane

Installa l'agente Bindplane sul tuo sistema operativo Windows o Linux seguendo le istruzioni riportate di seguito.

Installazione di Windows

  1. Apri Prompt dei comandi o PowerShell come amministratore.
  2. Esegui questo comando:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sc query observiq-otel-collector
    

Il servizio dovrebbe essere visualizzato come RUNNING.

Installazione di Linux

  1. Apri un terminale con privilegi root o sudo.
  2. Esegui questo comando:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. Attendi il completamento dell'installazione.

  4. Verifica l'installazione eseguendo:

    sudo systemctl status observiq-otel-collector
    

Il servizio dovrebbe essere visualizzato come attivo (in esecuzione).

Risorse aggiuntive per l'installazione

Per ulteriori opzioni di installazione e risoluzione dei problemi, consulta la guida all'installazione dell'agente Bindplane.

Configura l'agente Bindplane per importare syslog e inviarli a Google SecOps

  • Individua il file di configurazione

    • Linux:

      sudo nano /opt/observiq-otel-collector/config.yaml
      
    • Windows:

      notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
      

Modifica il file di configurazione

  • Sostituisci l'intero contenuto di config.yaml con la seguente configurazione:

    receivers:
      tcplog:
        listen_address: "0.0.0.0:6514"
    
    exporters:
      chronicle/f5_silverline:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '<CREDS_FILE_PATH>'
        customer_id: '<CUSTOMER_ID>'
        endpoint: chronicle.googleapis.com
        log_type: F5_SILVERLINE
        raw_log_field: body
        ingestion_labels:
          env: production
    
    service:
      pipelines:
        logs/silverline_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/f5_silverline
    

Parametri di configurazione

Sostituisci i seguenti segnaposto:

  • <CREDS_FILE_PATH>: percorso completo del file della chiave JSON del account di servizio (opzione 1):
    • Linux: /opt/observiq-otel-collector/ingestion-auth.json
    • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
  • <CUSTOMER_ID>: il tuo ID cliente Google SecOps del passaggio precedente
  • location: sostituisci <LOCATION> con la regione della tua istanza Google SecOps (ad esempio us, europe o asia-southeast1). L'esportatore antepone chronicle.googleapis.com a questo valore. Per l'elenco completo, consulta Endpoint regionali.
  • project: sostituisci <PROJECT_NUMBER> con il numero di progetto in IAM e amministrazione > Impostazioni.
  • endpoint: mantieni l'impostazione su chronicle.googleapis.com.
  • Configurazione di esempio

    receivers:
      tcplog:
        listen_address: "0.0.0.0:6514"
    
    exporters:
      chronicle/f5_silverline:
        protocol: https
        # Region of your instance, for example us, europe, asia-southeast1
        location: <LOCATION>
        # Project number of the Google Cloud project linked to the instance
        project: '<PROJECT_NUMBER>'
        compression: gzip
        creds_file_path: '/opt/observiq-otel-collector/ingestion-auth.json'
        customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6'
        endpoint: chronicle.googleapis.com
        log_type: F5_SILVERLINE
        raw_log_field: body
        ingestion_labels:
          env: production
          source: silverline
    
    service:
      pipelines:
        logs/silverline_to_chronicle:
          receivers:
            - tcplog
          exporters:
            - chronicle/f5_silverline
    

Esportatore API di importazione legacy

  • Se utilizzi il file di autenticazione dell'importazione dell'opzione 2, sostituisci il blocco exporters con il seguente. Imposta creds_file_path sul percorso del file di autenticazione dell'acquisizione e, se l'istanza si trova al di fuori degli Stati Uniti, sostituisci malachiteingestion-pa.googleapis.com con il tuo endpoint regionale (ad esempio, europe-malachiteingestion-pa.googleapis.com).

    exporters:
      chronicle/f5_silverline:
        compression: gzip
        creds_file_path: '<CREDS_FILE_PATH>'
        customer_id: '<CUSTOMER_ID>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: F5_SILVERLINE
        raw_log_field: body
        ingestion_labels:
          env: production
    

Salva il file di configurazione

  • Dopo la modifica, salva il file:
    • Linux: premi Ctrl+O, poi Enter e infine Ctrl+X.
    • Windows: fai clic su File > Salva

Riavvia l'agente Bindplane per applicare le modifiche

Per riavviare l'agente Bindplane in Linux:

  1. Esegui questo comando:

    sudo systemctl restart observiq-otel-collector
    
  2. Verifica che il servizio sia in esecuzione:

    sudo systemctl status observiq-otel-collector
    
  3. Controlla i log per individuare eventuali errori:

    sudo journalctl -u observiq-otel-collector -f
    

Per riavviare l'agente Bindplane in Windows:

  1. Scegli una delle seguenti opzioni:

    • Prompt dei comandi o PowerShell come amministratore:
    net stop observiq-otel-collector && net start observiq-otel-collector
    
    • Console dei servizi:
      1. Premi Win+R, digita services.msc e premi Invio.
      2. Individua observIQ OpenTelemetry Collector.
      3. Fai clic con il tasto destro del mouse e seleziona Riavvia.
  2. Verifica che il servizio sia in esecuzione:

    sc query observiq-otel-collector
    
  3. Controlla i log per individuare eventuali errori:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    

Configura l'inoltro di Syslog F5 Silverline

  1. Accedi al portale F5 Silverline all'indirizzo https://portal.f5silverline.com.
  2. Vai a Configurazione > Esportazione dei log.
  3. Nel campo Indirizzo IP, inserisci l'indirizzo IP dell'host dell'agente Bindplane.
  4. Nel campo Porta, inserisci 6514.
  5. Nel menu a discesa Protocollo, seleziona TCP.
  6. Nel menu a discesa Formato, seleziona Automatico.
  7. Fai clic su Salva per applicare la configurazione.

Tipi di log inoltrati

F5 Silverline inoltra i seguenti tipi di log tramite syslog:

  • Log di mitigazione DDoS: informazioni sugli attacchi DDoS, sulle azioni di mitigazione e sul traffico filtrato
  • Log WAF: eventi di violazione del Web Application Firewall, tipi di attacco e richieste bloccate
  • Log IP Intelligence: dati di Threat Intelligence sugli indirizzi IP dannosi
  • Log del traffico di rete: analisi del traffico e rilevamento di anomalie a livello di rete
  • Log proxy: eventi proxy HTTP/HTTPS e dettagli della connessione

Verifica l'esportazione dei log

  1. Nel portale F5 Silverline, vai a Config > Esportazione log.
  2. Verifica che lo stato della connessione sia Attiva o Connessa.
  3. Controlla i log dell'agente Bindplane per verificare che i messaggi syslog vengano ricevuti:

    Linux:

    sudo journalctl -u observiq-otel-collector -f
    

    Windows:

    type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
    
  4. Nella console Google SecOps, vai a SIEM > Cerca e cerca metadata.log_type = "F5_SILVERLINE" per verificare che i log vengano inseriti.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
content_length, geo_location, policy_apply_date, policy_name, flow_id, errdefs_msgno, ip_intelligence_threat_name, log_type, loglevel, msg_type, proxy_id, request_side, tmm_unit, disable_asm, disable_bot, policy_name, http_class_name, reason, protocol, mitigation, countermeasure, blacklisted, msg_type, proxy_id, request_side, route_domain, sa_translation_type, sa_translation_pool, translated_vlan, translated_source_port, translated_source_ip, translated_route_domain, translated_ip_protocol, translated_dest_port additional.fields Uniti come etichette in additional.fields se non vuoti
app_protocol_output event.idm.read_only_udm.network.application_protocol Valore copiato direttamente se non è vuoto
metodo event.idm.read_only_udm.network.http.method Valore copiato direttamente
response_code event.idm.read_only_udm.network.http.response_code Valore copiato direttamente
source_ip, vs_ip event.idm.read_only_udm.src.asset.ip Valore di vs_ip se non è vuoto, altrimenti source_ip
vs_port, src_port event.idm.read_only_udm.src.port Valore di vs_port se non è vuoto, altrimenti src_port
x_forwarded_for_header_value, header_ip intermediary.asset.ip Valore di header_ip se non è vuoto, altrimenti x_forwarded_for_header_value
x_forwarded_for_header_value, header_ip intermediary.ip Valore di header_ip se non è vuoto, altrimenti x_forwarded_for_header_value
errdefs_msg_name metadata.description Valore copiato direttamente se non è vuoto
ts metadata.event_timestamp Analizzato da ts utilizzando la corrispondenza della data con il formato MMM gg HH:mm:ss o MMM g HH:mm:ss
event_type metadata.event_type Valore copiato direttamente
support_id metadata.product_log_id Valore copiato direttamente se non vuoto
protocollo network.application_protocol Imposta su protocollo se è uguale a HTTPS
method, uri_data network.http.method Valore di uri_data se non è vuoto, altrimenti metodo
response_code network.http.response_code Valore copiato direttamente, poi convertito in numero intero
user_agent network.http.user_agent Valore copiato direttamente
ip_protocol network.ip_protocol Impostato su "TCP" se corrisponde a tcp
virtualserver network.tls.client.server_name Valore copiato direttamente se non è vuoto
web_application_name principal.application Valore copiato direttamente
nome host principal.asset.hostname Valore copiato direttamente
ip_client, source_ip, client_ip, addr, source_ip, vs_ip principal.asset.ip Valore di ip_client se type=waf; source_ip se type=ipi; client_ip se type=irule; vs_ip se non vuoto in kvdata, altrimenti source_ip se non vuoto, altrimenti client_ip se non vuoto, altrimenti addr se non vuoto, altrimenti ip_client
host, hostname principal.hostname Valore ottenuto dal nome host se non è vuoto, altrimenti dall'host
ip_client, source_ip, client_ip, addr, source_ip, vs_ip principal.ip Valore di ip_client se type=waf; source_ip se type=ipi; client_ip se type=irule; vs_ip se non è vuoto in kvdata, altrimenti source_ip se non è vuoto, altrimenti client_ip se non è vuoto, altrimenti addr se non è vuoto, altrimenti ip_client
geo_location, client_ip_geo_location principal.location.name Valore di client_ip_geo_location se non è vuoto, altrimenti geo_location
snat_ip principal.nat_ip Valore copiato direttamente
snat_port principal.nat_port Valore copiato direttamente, poi convertito in numero intero
client_port, source_port, client_port principal.port Valore di client_port se type=irule; source_port se non è vuoto in kvdata, altrimenti client_port
host, data.uri, client_request_uri principal.url Valore di data.uri se type=irule; client_request_uri se non è vuoto in kvdata, altrimenti host
service_id principal.user.product_object_id Valore copiato direttamente
sec_action security_result.action Imposta su BLOCK se request_status è [Blocking, blocked, drop, challenged] o action è [Blocking, blocked, drop]; ALLOW se request_status è [allow, Allow] o action è [allow, Allow, accept]; UNKNOWN_ACTION in caso contrario
action, request_status, data.action security_result.action_details Valore di data.action se type=irule; request_status se kvdata; action se type=ipi
attack_type security_result.category_details Valore copiato direttamente se non vuoto
sub_violations, context_name, sub_violations security_result.description Valore di sub_violations se type=waf o kvdata; context_name se type=ipi
request_status security_result.detection_fields Aggiunto come etichetta a security_result.detection_fields
ip_intelligence_policy_name, irule, irule, ip_intelligence_policy_name security_result.rule_name Valore da irule se type=irule o kvdata; ip_intelligence_policy_name se type=ipi o kvdata
irule-version security_result.rule_version Valore copiato direttamente
gravità security_result.severity Imposta su CRITICAL se è critico; ERROR se è un errore; INFORMATIONAL se è informativo; HIGH se è 5
violations, data.action security_result.summary Valore delle violazioni se type=waf; data.action se type=irule
ip_intelligence_threat_name security_result.threat_name Valore copiato direttamente
source_ip src.asset.ip Valore copiato direttamente
src_port, source_port src.port Valore copiato direttamente, poi convertito in numero intero
dest_ip, bigip_mgmt_ip, dest_ip, server_ip, bigip_mgmt_ip, dest_ip, t_ip target.asset.ip Valore di dest_ip se type=waf; dest_ip se type=ipi; server_ip se type=irule; bigip_mgmt_ip se non vuoto in kvdata, altrimenti dest_ip se non vuoto, altrimenti t_ip
dest_ip, bigip_mgmt_ip, dest_ip, server_ip, bigip_mgmt_ip, dest_ip, t_ip target.ip Valore di dest_ip se type=waf; dest_ip se type=ipi; server_ip se type=irule; bigip_mgmt_ip se non è vuoto in kvdata, altrimenti dest_ip se non è vuoto, altrimenti t_ip
dest_port, dest_port, server_port, dest_port, dst_port target.port Valore copiato direttamente, poi convertito in numero intero
uri target.url Valore copiato direttamente
metadata.vendor_name Imposta su "SILVERLINE"
metadata.product_name Impostato su "SILVERLINE"
inter_application event.idm.read_only_udm.intermediary.application Mappato dal log delle modifiche
msg1 event.idm.read_only_udm.metadata.description Mappato dal log delle modifiche
prin_host event.idm.read_only_udm.principal.hostname, event.idm.read_only_udm.principal.asset.hostname Mappato dal log delle modifiche
prin_ip event.idm.read_only_udm.principal.ip ,event.idm.read_only_udm.principal.asset.ip` Mappato dal log delle modifiche
tar_host event.idm.read_only_udm.target.hostname, event.idm.read_only_udm.target.asset.hostname Mappato dal log delle modifiche
Cipher event.idm.read_only_udm.network.tls.cipher Mappato dal log delle modifiche
process_pid event.idm.read_only_udm.principal.process.pid Mappato dal log delle modifiche
sec_rule_details event.idm.read_only_udm.security_result.rule_name Mappato dal log delle modifiche
EventType event.idm.read_only_udm.metadata.product_event_type Mappato dal log delle modifiche
app event.idm.read_only_udm.target.application Mappato dal log delle modifiche
session event.idm.read_only_udm.network.session_id Mappato dal log delle modifiche
sn event.idm.read_only_udm.network.tls.client.certificate.serial Mappato dal log delle modifiche
type_value event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
idx event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
C_data event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
O_data event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
OU_data event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
CN_data event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
verify event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
cn_data event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
syslog_priority event.idm.read_only_udm.security_result.detection_fields Mappato dal log delle modifiche
src_ip event.idm.read_only_udm.intermediary.ip Mappato dal log delle modifiche
src_ip event.idm.read_only_udm.intermediary.asset.ip Mappato dal log delle modifiche
x_forwarded_for_header_value event.idm.read_only_udm.intermediary.ip Mappato dal log delle modifiche
x_forwarded_for_header_value event.idm.read_only_udm.intermediary.asset.ip Mappato dal log delle modifiche
host event.idm.read_only_udm.principal.url Mappato dal log delle modifiche
sub_violations event.idm.read_only_udm.security_result.description Mappato dal log delle modifiche
web_application_name event.idm.read_only_udm.principal.application Mappato dal log delle modifiche
uri event.idm.read_only_udm.target.url Mappato dal log delle modifiche
policy_name event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
http_class_name event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
ip_client event.idm.read_only_udm.principal.ip Mappato dal log delle modifiche
ip_client event.idm.read_only_udm.principal.asset.ip Mappato dal log delle modifiche
geo_location event.idm.read_only_udm.principal.location.name Mappato dal log delle modifiche
request_status event.idm.read_only_udm.security_result.action_details Mappato dal log delle modifiche
support_id event.idm.read_only_udm.metadata.product_log_id Mappato dal log delle modifiche
client_ip_geo_location event.idm.read_only_udm.principal.location.name Mappato dal log delle modifiche
client_request_uri event.idm.read_only_udm.principal.url Mappato dal log delle modifiche
rule event.idm.read_only_udm.security_result.rule_id Mappato dal log delle modifiche
reason event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
protocol event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
t_ip event.idm.read_only_udm.target.ip Mappato dal log delle modifiche
t_ip event.idm.read_only_udm.target.asset.ip Mappato dal log delle modifiche
mitigation event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
dst_port event.idm.read_only_udm.target.port Mappato dal log delle modifiche
countermeasure event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
blacklisted event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
src_ip event.idm.read_only_udm.src.ip Mappato dal log delle modifiche
src_ip event.idm.read_only_udm.src.asset.ip Mappato dal log delle modifiche
addr event.idm.read_only_udm.principal.ip Mappato dal log delle modifiche
addr event.idm.read_only_udm.principal.asset.ip Mappato dal log delle modifiche
ts event.idm.read_only_udm.metadata.timestamp Mappato dal log delle modifiche

Log delle modifiche

Visualizza il log delle modifiche per questo parser

Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.