Raccogli i log dei servizi F5 Distributed Cloud

Versione parser: 6.0

Supportata in:

Questo documento spiega come acquisire i log dei servizi F5 Distributed Cloud in Google Security Operations utilizzando Google Cloud Storage V2.

F5 Distributed Cloud Services è una piattaforma di sicurezza, networking e gestione delle applicazioni basata su SaaS che fornisce infrastruttura cloud distribuita, distribuzione delle applicazioni, sicurezza delle API e funzionalità di web application firewall in più cloud e località perimetrali.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto cloud Google Cloud con l'API Storage Cloud Storage abilitata
  • Autorizzazioni per creare e gestire i bucket GCS
  • Autorizzazioni per gestire le policy IAM sui bucket GCS
  • Accesso con privilegi alla console F5 Distributed Cloud
  • Autorizzazioni per creare oggetti Global Log Receiver in F5 Distributed Cloud

Crea un bucket Google Cloud Storage

  1. Vai alla console Google Cloud.
  2. Seleziona il tuo progetto o creane uno nuovo.
  3. Nel menu di navigazione, vai a Cloud Storage > Bucket.
  4. Fai clic su Crea bucket.
  5. Fornisci i seguenti dettagli di configurazione:

    Impostazione Valore
    Assegna un nome al bucket Inserisci un nome globalmente univoco (ad esempio f5-dcs-logs)
    Tipo di località Scegli in base alle tue esigenze (Regione, a due regioni, multiregionale)
    Località Seleziona la località (ad esempio us-central1)
    Classe di archiviazione Standard (consigliato per i log ad accesso frequente)
    Controllo degli accessi Uniforme (consigliato)
    Strumenti di protezione (Facoltativo) Abilita il controllo delle versioni degli oggetti o la policy di conservazione
  6. Fai clic su Crea.

Configura F5 Distributed Cloud per l'esportazione in GCS

Aggiungi il bucket GCS alla lista consentita del firewall

  1. F5 Distributed Cloud Global Log Receiver richiede l'aggiunta dei seguenti intervalli di indirizzi IP alla lista consentita del firewall:

    • 193.16.236.64/29
    • 185.160.8.152/29
  2. Se il tuo bucket GCS utilizza i Controlli di servizio VPC o le regole firewall, aggiungi questi intervalli IP alla lista consentita.

Crea un account di servizio Google Cloud per F5 Distributed Cloud

  1. Nella console Google Cloud, vai a IAM e amministrazione > Service account.
  2. Fai clic su Crea account di servizio.
  3. Fornisci i seguenti dettagli di configurazione:

    • Nome account di servizio: inserisci f5-dcs-log-writer (o un nome descrittivo)
    • Descrizione account di servizio: inserisci Service account for F5 Distributed Cloud to write logs to GCS
  4. Fai clic su Crea e continua.

  5. Nella sezione Concedi a questo account di servizio l'accesso al progetto:

    1. Fai clic su Seleziona un ruolo.
    2. Cerca e seleziona Storage Object Admin.
  6. Fai clic su Continua.

  7. Fai clic su Fine.

Crea una chiave dell'account di servizio

  1. Nell'elenco Service account, fai clic sul account di servizio che hai creato (ad esempio f5-dcs-log-writer).
  2. Vai alla scheda Chiavi.
  3. Fai clic su Aggiungi chiave > Crea nuova chiave.
  4. Seleziona JSON come tipo di chiave.
  5. Fai clic su Crea.
  6. Il file della chiave JSON viene scaricato sul computer.
  7. Salva questo file in modo sicuro. Ti servirà nei passaggi successivi.

Concedi le autorizzazioni IAM sul bucket GCS

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (ad esempio f5-dcs-logs).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: inserisci l'indirizzo email del account di servizio (ad esempio f5-dcs-log-writer@PROJECT_ID.iam.gserviceaccount.com)
    • Assegna i ruoli: seleziona Storage Object Admin
  6. Fai clic su Salva.

Crea le credenziali Google Cloud nella console F5 Distributed Cloud

  1. Accedi alla console F5 Distributed Cloud all'indirizzo https://<tenant>.console.ves.volterra.io.
  2. Seleziona il servizio Multi-Cloud Network Connect dalla home page.
  3. Vai a Gestisci > Gestione sito > Credenziali cloud.
  4. Fai clic su Aggiungi credenziali cloud.
  5. Nella sezione Metadati:
    • Nome: inserisci un nome descrittivo (ad esempio gcp-chronicle-logs)
    • (Facoltativo) Descrizione: inserisci Cloud Storage credentials for Google SecOps log export
  6. Nella sezione Cloud Credentials Type (Tipo di credenziali cloud), seleziona GCP Credentials (Credenziali GCP).
  7. Fai clic su Configura nel campo Credenziali GCP.
  8. Nel menu a discesa Credential Type (Tipo di credenziali), seleziona Service Account Credentials File (File delle credenziali del service account).
  9. Fai clic su Carica file e seleziona il file della chiave JSON scaricato nei passaggi precedenti.
  10. Fai clic su Applica.
  11. Fai clic su Salva ed esci.

Crea un ricevitore di log globale

  1. Nella console F5 Distributed Cloud, assicurati di essere nel servizio Multi-Cloud Network Connect.
  2. Vai a Manage (Gestisci) > Log Management (Gestione dei log) > Global Log Receiver (Ricevitore di log globale).
  3. Fai clic su Aggiungi ricevitore di log globale.
  4. Nella sezione Metadati:

    • Nome: inserisci un nome descrittivo (ad esempio chronicle-gcs-receiver)
    • (Facoltativo) Descrizione: inserisci Global log receiver for Google SecOps SIEM
  5. Nel menu a discesa Tipo di log, seleziona i tipi di log che vuoi esportare:

    • Log delle richieste: log delle richieste/risposte HTTP con utente, percorso, metodo e codici di risposta
    • Eventi di sicurezza: eventi WAF, DDoS, protezione API, eventi di difesa dai bot
    • Audit log: modifiche alla configurazione tramite API pubbliche
    • Log delle richieste DNS: log delle query DNS
  6. Nel menu a discesa Selezione dei messaggi di log, seleziona una delle seguenti opzioni:

    • Seleziona i log dallo spazio dei nomi corrente: invia i log solo dallo spazio dei nomi corrente
    • Seleziona i log da tutti gli spazi dei nomi: invia i log da tutti gli spazi dei nomi (opzione consigliata per una visibilità completa)
    • Seleziona i log in spazi dei nomi specifici: invia i log dagli spazi dei nomi specificati (fai clic su Aggiungi elemento per aggiungere i nomi degli spazi dei nomi)
  7. Nel menu a discesa Receiver Configuration (Configurazione ricevitore), seleziona GCP Bucket Receiver (Ricevitore bucket GCP).

  8. Nel campo Nome bucket GCP, inserisci il nome del bucket GCS (ad esempio f5-dcs-logs).

  9. Nel menu a discesa Credenziali cloud GCP, seleziona le credenziali cloud create in precedenza (ad esempio gcp-chronicle-logs).

  10. (Facoltativo) Espandi Mostra campi avanzati per configurare le opzioni di batch:

    • Opzioni di timeout batch: seleziona Secondi di timeout e inserisci un valore (valore predefinito: 300 secondi)
    • Numero massimo di eventi in batch: seleziona Numero massimo di eventi e inserisci un valore compreso tra 32 e 2000 (lascia vuoto per non impostare alcun limite).
    • Byte batch: seleziona Byte massimi e inserisci un valore compreso tra 4096 e 1048576 (valore predefinito: 10485760 byte/10 MB)
  11. Fai clic su Salva ed esci.

Testa la connessione

  1. Nell'elenco Ricevitore di log globale, individua il ricevitore che hai creato (ad esempio, chronicle-gcs-receiver).
  2. Fai clic sui tre puntini (…) nella colonna Azioni.
  3. Seleziona Testa connessione.
  4. Attendi il completamento del test.
  5. Dovrebbe essere visualizzato un messaggio che indica che la connessione è riuscita.

Verifica i log nel bucket GCS

  1. Vai a Cloud Storage > Bucket nella console Google Cloud.
  2. Fai clic sul nome del bucket (ad esempio f5-dcs-logs).
  3. Verifica che i file di log vengano creati nel bucket.
  4. F5 Distributed Cloud organizza i log nella seguente struttura di cartelle:

    YYYY/MM/DD/HH/
    
    • Viene creata una cartella per ogni giorno (AAAA/MM/GG)
    • All'interno di ogni cartella giornaliera, viene creata una sottocartella per ogni ora (HH)
    • Ogni 5 minuti, vengono scritti nuovi file gzip compressi nella sottocartella oraria
    • I file sono in formato NDJSON (JSON delimitato da nuova riga)
  5. Fai clic su un file gzip per scaricare e ispezionare il formato del log.

Recupera il account di servizio Google SecOps

Google SecOps utilizza un account di servizio univoco per leggere i dati dal tuo bucket GCS. Devi concedere a questo account di servizio l'accesso al tuo bucket.

Recupera l'indirizzo email del account di servizio

  1. Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > Feed.
  2. Fai clic su Aggiungi nuovo feed.
  3. Fai clic su Configura un singolo feed.
  4. Nel campo Nome feed, inserisci un nome per il feed (ad es. F5 DCS Logs).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona F5 Distributed Cloud Services come Tipo di log.
  7. Fai clic su Ottieni service account. Verrà visualizzato un indirizzo email univoco del account di servizio, ad esempio:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  8. Copia questo indirizzo email per utilizzarlo nel passaggio successivo.

  9. Fai clic su Avanti.

  10. Specifica i valori per i seguenti parametri di input:

    • URL bucket di archiviazione: inserisci l'URI del bucket GCS:

      gs://f5-dcs-logs/
      

      Sostituisci f5-dcs-logs con il nome del tuo bucket GCS.

    • Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:

      • Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
      • Elimina i file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina i file trasferiti e le directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.

    • Età massima dei file: includi i file modificati negli ultimi giorni (il valore predefinito è 180 giorni)

    • Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset

    • Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.

  11. Fai clic su Avanti.

  12. Controlla la nuova configurazione del feed di notizie nella schermata Finalizza e poi fai clic su Invia.

Concedi le autorizzazioni IAM al account di servizio Google SecOps

Il account di servizio Google SecOps deve avere il ruolo Storage Object Viewer nel bucket GCS.

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (ad esempio f5-dcs-logs).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:

    • Aggiungi entità: incolla l'indirizzo email del account di servizio Google SecOps
    • Assegna i ruoli: seleziona Storage Object Viewer
  6. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logica
_id metadata.product_log_id Valore copiato direttamente
src principal.namespace Valore copiato direttamente
kubernetes_labels_app target.resource.attribute.labels Unito da app_label (derivato da kubernetes_labels_app)
kubernetes_host target.hostname Valore copiato direttamente
kubernetes_container_name target.resource.product_object_id Valore copiato direttamente
bot_info.classification security_result.detection_fields Unito da bot_info_classification_label (derivato da bot_info.classification)
bot_info.name security_result.detection_fields Unito da bot_info_name_label (derivato da bot_info.name)
bot_info.type security_result.detection_fields Unito da bot_info_type_label (derivato da bot_info.type)
timestamp @timestamp Analizzato utilizzando il filtro della data con RFC 3339, UNIX, ISO8601
visitor_id security_result.detection_fields Unito da visitor_id_label (derivato da visitor_id)
tag security_result.detection_fields Unito da tag_label (derivato da tag)
azione security_result.action Imposta su ALLOW se corrisponde a un'etichetta consentita, su BLOCK se corrisponde a un'etichetta negata
gravità security_result.severity Imposta su HIGH se è presente un errore/avviso; CRITICAL se è critico; MEDIUM se è una notifica; LOW se si tratta di informazioni/info
gravità security_result.severity_details Valore copiato direttamente
api_endpoint target.labels Unito da api_endpoint_label (derivato da api_endpoint)
app_firewall_name principal.process.command_line Valore copiato direttamente
app_type security_result.detection_fields Unito da about_app_type (derivato da app_type)
as_org security_result.detection_fields Unito da about_as_org (derivato da as_org)
asn security_result.detection_fields Unito da about_asn (derivato da asn)
kubernetes.pod_id security_result.detection_fields Unito da about_pod_id (derivato da kubernetes.pod_id)
kubernetes.pod_name security_result.detection_fields Unito da about_pod_name (derivato da kubernetes.pod_name)
latitude principal.location.region_latitude Convertito in float
longitude principal.location.region_longitude Convertito in float
req_params additional.fields Unito da about_req_params (derivato da req_params)
as_number additional.fields Unito da about_as_number (convertito in stringa da as_number)
x_forwarded_for intermediary.ip Unito se l'IP è valido
x_forwarded_for security_result.about.resource.attribute.labels Unito da x_forwarded_for_label se non è un IP
policy_hit.malicious_user_mitigate_action security_result.detection_fields Unito da malicious_user_label (derivato da policy_hit.malicious_user_mitigate_action)
policy_hit.policy security_result.about.resource.attribute.labels Unito da policy_label (derivato da policy_hit.policy)
policy_hit.policy_namespace additional.fields Unito da policy_namespace_label (derivato da policy_hit.policy_namespace)
policy_hit.policy_rule security_result.rule_name Valore copiato direttamente
policy_hit.policy_rule_description security_result.description Valore copiato direttamente
policy_hit.policy_set target.resource.name Valore copiato direttamente
policy_hit.result additional.fields Unito da result_label (derivato da policy_hit.result)
vhost_id security_result.detection_fields Unito da vhostlabel (derivato da vhost_id)
messageid security_result.detection_fields Unito da messageid_label (derivato da messageid)
sec_event_name security_result.detection_fields Unito da sec_event_name_label (derivato da sec_event_name)
sec_event_type security_result.detection_fields Unito da sec_event_type_label (derivato da sec_event_type)
vh_name security_result.detection_fields Unito da vhost_name_label (derivato da vh_name)
tls_fingerprint security_result.detection_fields Unito da tls_fingerprint_label (derivato da tls_fingerprint)
tempo additional.fields Unito da time_label (derivato da time)
kubernetes.namespace_name additional.fields Unito da namespace_name_label (derivato da kubernetes.namespace_name)
src_instance additional.fields Unito da src_instance_label (derivato da src_instance)
violation_rating additional.fields Unito da violation_rating_label (derivato da violation_rating)
req_size additional.fields Unito da req_size_label (convertito in stringa da req_size)
rsp_code additional.fields Unito da rsp_code_label (convertito in stringa da rsp_code)
rsp_code_class additional.fields Unito da rsp_code_class_label (convertito in stringa da rsp_code_class)
rsp_size additional.fields Unito da rsp_size_label (convertito in stringa da rsp_size)
original_path additional.fields Unito da original_path_label (derivato da original_path)
req_path target.url Valore copiato direttamente
req_headers_size additional.fields Unito da req_headers_size_label (derivato da req_headers_size)
recommended_action additional.fields Unito da recommended_action_label (derivato da recommended_action)
enforcement_mode additional.fields Unito da enforcement_mode_label (derivato da enforcement_mode)
src_ip principal.ip, principal.asset.ip Unito se corrisponde all'espressione regolare IPv4
host principal.ip, principal.asset.ip Unito se corrisponde all'espressione regolare IPv4
nome host principal.hostname, principal.asset.hostname Valore copiato direttamente se non vuoto o -
http_version network.application_protocol_version Valore copiato direttamente
http_version network.application_protocol Impostato su HTTP se contiene HTTP, su HTTPS se contiene HTTPS
rete principal.nat_ip Unito se corrisponde all'espressione regolare IPv4
dst_ip target.ip, target.asset.ip Unito se corrisponde all'espressione regolare IPv4
dst_port target.port Convertito in numero intero
src_port principal.port Convertito in numero intero
src_site additional.fields Unito da src_site_field (derivato da src_site)
sito additional.fields Unito da site_field (derivato da site)
cluster_name additional.fields Unito da cluster_name_field (derivato da cluster_name)
dominio principal.administrative_domain Valore copiato direttamente
metodo network.http.method Valore copiato direttamente se non vuoto o N/A
spazio dei nomi target.namespace Valore copiato direttamente
city principal.location.city Valore copiato direttamente
flusso security_result.detection_fields Unito da stream_label (derivato dallo stream)
regione principal.location.country_or_region Valore copiato direttamente
utente principal.user.userid Estratto dall'utente utilizzando il pattern grok per user_id
user_ip target.ip, target.asset.ip Unito da user_ip estratto
Cookie additional.fields Unito dal cookie (derivato dal cookie in req_headers)
X-F5-Request-Id security_result.detection_fields Unito da x_f5_request_id (derivato da X-F5-Request-Id in req_headers)
X-Request-Id security_result.detection_fields Unito da request_id (derivato da X-Request-Id in req_headers)
security_result security_result Unito direttamente
has_network, has_principal, has_target metadata.event_type Imposta su NETWORK_CONNECTION se tutti i valori sono true; STATUS_UPDATE se has_principal è true; altrimenti GENERIC_EVENT
metadata.vendor_name Imposta su "F5_DCS"
metadata.product_name Impostato su "F5 DCS"
intermediario intermediario Unito direttamente
rsp_size event.idm.read_only_udm.network.received_bytes Mappato dal log delle modifiche
dst event.idm.read_only_udm.target.ip e event.idm.read_only_udm.target.asset.ip Mappato dal log delle modifiche
has_sec_event event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
app event.idm.read_only_udm.target.application Mappato dal log delle modifiche
node_id event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
sample_rate event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
time_to_first_downstream_tx_byte event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
time_to_first_upstream_rx_byte event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
time_to_first_upstream_tx_byte event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
time_to_last_downstream_tx_byte event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
time_to_last_rx_byte event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
time_to_last_upstream_rx_byte event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
time_to_last_upstream_tx_byte event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
timeseries_enabled event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
sni event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
terminated_time event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
rtt_downstream_seconds event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
rtt_upstream_seconds event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
rsp_code_details event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
authority event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
connected_time event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
req_id event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
proxy_type event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
vh_type event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
dst_instance event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
lb_port event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
mtls event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
ja4_tls_fingerprint event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
duration_with_data_tx_delay event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
dst_site event.idm.read_only_udm.additional.fields Mappato dal log delle modifiche
protocol and scheme event.idm.read_only_udm.network.application_protocol Mappato dal log delle modifiche
referer event.idm.read_only_udm.network.http.referral_url Mappato dal log delle modifiche
tls_cipher_suite event.idm.read_only_udm.network.tls.cipher Mappato dal log delle modifiche
tls_version event.idm.read_only_udm.network.tls.version Mappato dal log delle modifiche
user_agent event.idm.read_only_udm.network.http.user_agent Mappato dal log delle modifiche
user_agent event.idm.read_only_udm.network.http.parsed_user_agent Mappato dal log delle modifiche
browser_type event.idm.read_only_udm.principal.browser.browser_type Mappato dal log delle modifiche
content-type event.idm.read_only_udm.principal.process.file.mime_type Mappato dal log delle modifiche
response_flags security_result.detection_fields Mappato dal log delle modifiche
original_authority event.idm.read_only_udm.target.administrative_domain Mappato dal log delle modifiche
country event.idm.read_only_udm.principal.location.country_or_region 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.