Raccogliere i log di F5 Shape

Supportato in:

Questo documento spiega come importare i log F5 Shape in Google Security Operations utilizzando Google Cloud Storage V2.

F5 Distributed Cloud Bot Defense (in precedenza Shape Security) protegge le applicazioni da attacchi automatizzati identificando e mitigando i bot dannosi. Bot Defense utilizza JavaScript e gli SDK per dispositivi mobili nativi per raccogliere dati di telemetria dai browser client e dai dispositivi mobili, esaminandoli prima che le richieste raggiungano l'applicazione. Il servizio fornisce dashboard e report integrati per visualizzare informazioni dettagliate sul traffico analizzato, inclusi eventi di sicurezza, log di accesso e log di controllo.

Prima di iniziare

Assicurati di soddisfare i seguenti prerequisiti:

  • Un'istanza Google SecOps
  • Un progetto GCP con l'API Cloud Storage abilitata
  • Autorizzazioni per creare e gestire bucket GCS
  • Autorizzazioni per gestire le policy IAM nei bucket GCS
  • Accesso privilegiato alla console F5 Distributed Cloud
  • Un account F5 Distributed Cloud con accesso al servizio Multi-Cloud Network Connect o Shared Configuration

Creazione di 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 univoco globale (ad esempio f5-xc-logs).
    Tipo di località Scegli in base alle tue esigenze (regione singola, due regioni, più regioni).
    Località Seleziona la posizione (ad esempio, us-central1).
    Classe di archiviazione Standard (consigliato per i log ad accesso frequente).
    Controllo dell'accesso Uniforme (consigliato).
    Strumenti di protezione (Facoltativo) Abilita il controllo delle versioni degli oggetti o la policy di conservazione.
  6. Fai clic su Crea.

Genera credenziali API F5 Shape

F5 Distributed Cloud utilizza certificati API (mTLS) o token API per l'autenticazione. I certificati API sono consigliati per una maggiore sicurezza.

Crea certificato API

  1. Accedi alla console F5 Distributed Cloud.
  2. Nella home page della console, seleziona Amministrazione.
  3. Nel menu di navigazione a sinistra, vai a Gestione personale > Credenziali.
  4. Fai clic su Aggiungi credenziali.
  5. Nella sezione Metadati, inserisci un Nome per il certificato (ad esempio, secops-integration).
  6. Dall'elenco Tipo di credenziale, seleziona Certificato API.
  7. Inserisci una password e confermala nel campo Conferma password.
  8. Seleziona una data di scadenza dall'elenco del calendario.

  9. Fai clic su Scarica per generare e scaricare il certificato nel formato di file .p12.

  10. Salva in modo sicuro il file del certificato scaricato e la password per utilizzarli in un secondo momento.

Crea credenziali Google Cloud in F5 Distributed Cloud

F5 Distributed Cloud richiede le credenziali del service account per scrivere i log nel bucket GCS. Google Cloud

Crea un service account Google Cloud

  1. Nella console Google Cloud, vai a IAM e amministrazione > Service Accounts.
  2. Fai clic su Crea account di servizio.
  3. Fornisci i seguenti dettagli di configurazione:
    • Nome service account: inserisci f5-xc-log-writer (o il nome che preferisci).
    • Descrizione service account: 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 Amministratore oggetti di archiviazione.
  6. Fai clic su Continua.
  7. Fai clic su Fine.

Concedi autorizzazioni IAM sul bucket GCS

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

Crea la chiave dell'account di servizio

  1. Nella console Google Cloud, vai a IAM e amministrazione > Service Accounts.
  2. Trova il account di servizio (ad esempio f5-xc-log-writer) e fai clic.
  3. Vai alla scheda Chiavi.
  4. Fai clic su Aggiungi chiave > Crea nuova chiave.
  5. Seleziona JSON come tipo di chiave.
  6. Fai clic su Crea.
  7. Il file della chiave JSON verrà scaricato automaticamente. Salva questo file in modo sicuro.

Aggiungi Google Cloud credenziali cloud a F5 Distributed Cloud

  1. Nella console F5 Distributed Cloud, dalla home page, seleziona Multi-Cloud Network Connect o Shared Configuration.
  2. Nel menu di navigazione a sinistra, vai a Gestisci > Gestione sito > Credenziali cloud.
  3. Fai clic su Aggiungi credenziali cloud.
  4. Nella sezione Metadati, inserisci un Nome (ad esempio, gcp-secops-logs).
  5. Dall'elenco Cloud Credentials Type (Tipo di credenziali cloud), seleziona GCP Credentials (Credenziali GCP).
  6. Nella sezione Credenziali GCP, fai clic su Configura.
  7. Nella sezione Chiave account di servizio:
    1. Nell'elenco Tipo di segreto, seleziona Segreto bendato.
    2. Dall'elenco Azione, seleziona Blindfold New Secret.
    3. Dall'elenco Tipo di policy, seleziona Integrata.
    4. Nel campo Secret to Blindfold (Segreto da oscurare), incolla l'intero contenuto del file della chiave JSON che hai scaricato.
  8. Fai clic su Applica.
  9. Fai clic su Salva ed esci.

Configurare il ricevitore di log globale per GCS

F5 Distributed Cloud Global Log Receiver trasmette i log a GCS ogni 5 minuti in formato NDJSON (JSON delimitato da nuova riga).

Crea un ricevitore di log globale

  1. Nella console F5 Distributed Cloud, dalla home page, seleziona Multi-Cloud Network Connect o Shared Configuration.
    • Per Multi-Cloud Network Connect: vai a Gestisci > Gestione log > Ricevitore log globale.
    • Per la configurazione condivisa: vai a Gestisci > Ricevitore log globale.
  2. Fai clic su Aggiungi destinatario log globale.
  3. Nella sezione Metadati, inserisci un Nome (ad esempio, secops-gcs-receiver).
  4. Se vuoi, aggiungi Etichette e una Descrizione.
  5. Dall'elenco Tipo di log, seleziona i tipi di log che vuoi raccogliere:

    • Log delle richieste: log di accesso HTTP dai bilanciatori del carico
    • Eventi di sicurezza: eventi di sicurezza di Bot Defense e WAF
    • Audit log: audit log amministrativi e di configurazione
    • Log delle richieste DNS: log delle query DNS
  6. Dall'elenco Log Message Selection (Selezione messaggio di log):

    • Se utilizzi il servizio Multi-Cloud Network Connect, seleziona Seleziona i log dallo spazio dei nomi corrente (spazio dei nomi di sistema).
    • Se utilizzi il servizio Configurazione condivisa, scegli una delle seguenti opzioni:
      • Seleziona log dallo spazio dei nomi corrente: invia i log solo dallo spazio dei nomi condiviso.
      • Seleziona i log di tutti gli spazi dei nomi: invia i log di tutti gli spazi dei nomi.
      • Seleziona i log in spazi dei nomi specifici: inserisci nomi di spazi dei nomi specifici e fai clic su Aggiungi elemento per aggiungerne altri.
  7. Dall'elenco Configurazione ricevitore, seleziona Bucket GCP.

  8. Nella sezione Bucket GCP, fornisci la seguente configurazione:

    • Nome bucket GCP: inserisci il nome del bucket GCS (ad esempio f5-xc-logs).
    • Credenziali cloud Google Cloud: seleziona dall'elenco le credenziali cloud che hai creato (ad esempio, gcp-secops-logs).

Configurare le impostazioni avanzate (facoltativo)

  1. Fai clic sul pulsante di attivazione/disattivazione Mostra campi avanzati.
  2. Nella sezione Opzioni batch, configura le seguenti opzioni (facoltative):

    • Opzioni di timeout batch: seleziona Timeout in secondi e inserisci un valore (valore predefinito: 300 secondi).
    • Batch Max Events: seleziona Max Events e inserisci un valore compreso tra 32 e 2000 (facoltativo).
    • Byte batch: seleziona Byte max e inserisci un valore compreso tra 4096 e 1048576 (valore predefinito: 10485760 byte / 10 MB).

Completare e testare la configurazione

  1. Fai clic su Salva ed esci per creare il ricevitore di log globale.
  2. Nell'elenco Global Log Receiver, individua il ricevitore (ad esempio secops-gcs-receiver).
  3. Nella colonna Azioni, fai clic sui tre puntini e seleziona Testa connessione.
  4. Attendi il completamento del test. Un messaggio di operazione riuscita indica che la connessione funziona.

  5. Verifica che i log vengano scritti in GCS:

    1. Vai a Cloud Storage > Bucket nella console di GCP.
    2. Fai clic sul nome del bucket (ad esempio f5-xc-logs).
    3. Entro 5-10 minuti, dovresti visualizzare le cartelle create con la seguente struttura:
      • Cartella giornaliera: YYYY-MM-DD/
      • Sottocartella oraria: YYYY-MM-DD/HH/
      • File di log: YYYY-MM-DD/HH/logs_YYYYMMDDHHMMSS.ndjson.gz

Configurare la lista consentita del firewall

F5 Distributed Cloud richiede che intervalli IP specifici siano consentiti nel firewall per la distribuzione dei log.

Aggiungi i seguenti intervalli di indirizzi IP alla lista consentita del firewall:

  • 193.16.236.64/29
  • 185.160.8.152/29

Recuperare 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.

Recuperare l'email del account di servizio

  1. Vai a Impostazioni SIEM > 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 esempio, F5 Distributed Cloud Bot Defense).
  5. Seleziona Google Cloud Storage V2 come Tipo di origine.
  6. Seleziona F5_SHAPE come Tipo di log.
  7. Fai clic su Ottieni service account. Verrà visualizzata un'email univoca del account di servizio, ad esempio:

    secops-12345678@secops-gcp-prod.iam.gserviceaccount.com
    
  8. Copia l'indirizzo email da utilizzare nel passaggio successivo.

  9. Fai clic su Avanti.

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

    • URL del bucket di archiviazione: inserisci l'URI del bucket GCS con il percorso del prefisso:

      gs://f5-xc-logs/
      
      • Sostituisci f5-xc-logs con il nome effettivo del bucket GCS.
      • Se hai configurato un prefisso specifico nel ricevitore di log globale, includilo nel percorso (ad esempio, gs://f5-xc-logs/bot-defense/).
    • 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 file trasferiti: elimina i file dopo il trasferimento riuscito.
      • Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.

    • Età massima file: includi i file modificati nell'ultimo numero di 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 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 Visualizzatore oggetti Storage nel bucket GCS.

  1. Vai a Cloud Storage > Bucket.
  2. Fai clic sul nome del bucket (ad esempio f5-xc-logs).
  3. Vai alla scheda Autorizzazioni.
  4. Fai clic su Concedi l'accesso.
  5. Fornisci i seguenti dettagli di configurazione:
    • Aggiungi entità: incolla l'email del account di servizio Google SecOps
    • Assegna i ruoli: seleziona Visualizzatore oggetti Storage
  6. Fai clic su Salva.

Tabella di mappatura UDM

Campo log Mappatura UDM Logic
msg.requestHeaders.Proxy-Client-IP, msg.requestHeaders.WF-Forwarded-For, msg.requestHeaders.X-Forwarded-For, msg.requestHeaders.wl-proxy-client-ip, msg.hashedUserAgent, msg.transactionId, msg.hashedUsername, msg.dcgShapeFailedOn, ShapeShifterId, eventType, eventId, latRequest, latResponse, latTotal, latRspWait, count, latEccWait additional.fields Unite dalle etichette create da vari campi
intermediario intermediario Valore copiato direttamente se non è vuoto
descrizione metadata.description Valore copiato direttamente
target, has_principal_machine metadata.event_type Impostato su NETWORK_HTTP se target != "", altrimenti STATUS_UPDATE se has_principal_machine == true, altrimenti GENERIC_EVENT
app network.application_protocol Valore in maiuscolo
requestMethod, msg.method network.http.method Valore di requestMethod se non è vuoto, altrimenti msg.method
requestClientApplication, msg.requestHeaders.User-Agent network.http.parsed_user_agent Valore di requestClientApplication se non è vuoto, altrimenti msg.requestHeaders.User-Agent, convertito in user agent analizzato
requestContext, msg.requestHeaders.Referer network.http.referral_url Valore di requestContext se non è vuoto, altrimenti msg.requestHeaders.Referer
msg.sseResponseCode, prCode network.http.response_code Valore di msg.sseResponseCode se non è vuoto, altrimenti prCode, convertito in numero intero
requestClientApplication, msg.requestHeaders.User-Agent network.http.user_agent Valore di requestClientApplication se non è vuoto, altrimenti msg.requestHeaders.User-Agent
requestHeader.x-shape-src-virtual observer.ip Valore copiato direttamente
entità entità Valore copiato direttamente
msg.host principal.asset.hostname Valore copiato direttamente
src, msg.src, msg.trueClientIP, requestHeader.X-Forwarded-For principal.asset.ip Valore di src se non è vuoto, altrimenti msg.src, altrimenti msg.trueClientIP, altrimenti il primo IP di X-Forwarded-For se != src
msg.host principal.hostname Valore copiato direttamente
src, msg.src, msg.trueClientIP, requestHeader.X-Forwarded-For principal.ip Valore di src se non è vuoto, altrimenti msg.src, altrimenti msg.trueClientIP, altrimenti il primo IP di X-Forwarded-For se != src
msg.requestHeaders principal.resource.attribute.labels Unite dalle coppie chiave-valore in msg.requestHeaders
msg.uri principal.url Valore copiato direttamente
security_result security_result Valore copiato direttamente
deviceExternalId security_result.about.asset_id Valore copiato direttamente
flowLabel, agentLabel, requestHeader.Content-Length, requestHeader.Content-Type, requestHeader.Accept, requestHeader.Accept-Encoding, browserType, accountInfo, requestHeader.Via, asn, tid, ctag, requestHeader.Cache-Control, transactionResult security_result.about.labels Unite dalle etichette create da vari campi
act, msg.transactionResult security_result.action Impostato su ALLOW se act corrisponde a PASS e isAttack, altrimenti UNKNOWN_ACTION; oppure ALLOW se msg.transactionResult == Success, BLOCK se Failure
act, msg.transactionResult security_result.action_details Valore di act se non è vuoto, altrimenti msg.transactionResult
gravità security_result.severity Imposta su HIGH se in Error, error, warning; CRITICAL se corrisponde a critical; MEDIUM se notice; LOW se in information, info, INFO
gravità security_result.severity_details Valore copiato direttamente
attackCause security_result.threat_name Valore copiato direttamente
target target Valore copiato direttamente
appName target.application Valore copiato direttamente
dst, msg.dst target.asset.ip Valore di dst se non è vuoto, altrimenti msg.dst
dhost target.hostname Valore copiato direttamente
dst, msg.dst target.ip Valore di dst se non è vuoto, altrimenti msg.dst
countryName target.location.country_or_region Valore copiato direttamente
dpt target.port Convertito in numero intero
msg.responseHeaders target.resource.attribute.labels Unite dalle coppie chiave-valore in msg.responseHeaders
richiesta target.url Valore copiato direttamente
requestHeader.X-Forwarded-For intermediary.ip Impostato sugli IP successivi dell'array X-Forwarded-For
metadata.product_name Imposta su "Forma"
metadata.vendor_name Impostato su "F5"

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