Installa e configura il forwarder

Supportata in:

Questo documento descrive come installare e configurare il forwarder di Google Security Operations su sistemi Linux e Windows utilizzando Docker.

Il forwarder è un componente software che puoi installare su una macchina o un dispositivo, ad esempio un server, all'interno della tua rete. Raccoglie i dati dei log e li inoltra alla tua istanza di Google SecOps.

Puoi utilizzare il forwarder per inviare i log direttamente dal tuo ambiente a Google SecOps, senza bisogno di bucket cloud o API di terze parti per i tipi di log non supportati. Il forwarder funge da soluzione pronta per il deployment, eliminando la necessità di un'integrazione manuale con l'API di importazione.

Google SecOps fornisce un container Docker per il deployment sicuro del forwarder. Puoi eseguire e gestire il container Docker su macchine fisiche o virtuali.

Requisiti di sistema

Di seguito sono riportati alcuni consigli generali. Per consigli specifici per il tuo sistema, contatta l'assistenza di Google SecOps.

Sistema Linux

Il forwarder è supportato su varie distribuzioni Linux, come Debian, Ubuntu, Red Hat e Suse. Per prestazioni ottimali, è necessario utilizzare Docker versione 20.10.21 o successive.

  • RAM: è richiesto 1 GB di RAM per ogni tipo di dati raccolti che Google SecOps accetta per l'importazione. Ad esempio, se specifichi quattro raccoglitori diversi, hai bisogno di 4 GB di RAM per raccogliere i dati per tutti e quattro.

  • CPU: due CPU sono sufficienti per gestire fino a 10.000 eventi al secondo (EPS) in tutti i tipi di dati. Se prevedi che il forwarder gestisca più di 10.000 EPS, alloca da quattro a sei CPU.

  • Disco: si consigliano 20 GB di spazio su disco, indipendentemente dalla quantità di dati gestiti dal forwarder.

Sistema Windows

L'agente di inoltro è supportato su Microsoft Windows Server 2022. Per prestazioni ottimali, è necessario utilizzare Docker versione 20.10.21 o successive.

  • RAM: sono necessari 1,5 GB di RAM per ogni tipo di dati raccolti che Google SecOps accetta per l'importazione. Ad esempio, se specifichi quattro raccoglitori diversi, hai bisogno di 6 GB di RAM per raccogliere i dati per tutti e quattro.

  • CPU: due CPU sono sufficienti per gestire fino a 10.000 eventi al secondo (EPS) per tutti i tipi di dati. Se prevedi che il forwarder gestisca più di 10.000 EPS, alloca da quattro a sei CPU.

  • Disco: si consigliano 20 GB di spazio su disco, indipendentemente dalla quantità di dati gestiti dal forwarder.

Prima di iniziare

Prima di iniziare l'implementazione del forwarder, tieni presente quanto segue.

Intervalli di indirizzi IP di Google

Quando configuri l'agente di inoltro, potresti dover modificare le impostazioni del firewall che prevedono la specifica di intervalli di indirizzi IP. Gli intervalli IP dei domini predefiniti utilizzati dalle API e dai servizi Google vengono allocati in modo dinamico e cambiano spesso. Per saperne di più, consulta Individua gli intervalli degli indirizzi IP di Google.

Verifica la configurazione del firewall

Se il container del forwarder viene eseguito dietro un firewall o un proxy autenticato, concedi l'accesso in uscita ai seguenti host:

Tipo di connessione Destinazione Porta
TCP malachiteingestion-pa.googleapis.com 443
TCP asia-northeast1-malachiteingestion-pa.googleapis.com 443
TCP asia-south1-malachiteingestion-pa.googleapis.com 443
TCP asia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP australia-southeast1-malachiteingestion-pa.googleapis.com 443
TCP eu-chronicle.googleapis.com 443
TCP europe-malachiteingestion-pa.googleapis.com 443
TCP europe-west2-malachiteingestion-pa.googleapis.com 443
TCP europe-west3-malachiteingestion-pa.googleapis.com 443
TCP europe-west6-malachiteingestion-pa.googleapis.com 443
TCP europe-west9-malachiteingestion-pa.googleapis.com 443
TCP europe-west12-malachiteingestion-pa.googleapis.com 443
TCP me-central1-malachiteingestion-pa.googleapis.com 443
TCP me-central2-malachiteingestion-pa.googleapis.com 443
TCP me-west1-malachiteingestion-pa.googleapis.com 443
TCP northamerica-northeast2-malachiteingestion-pa.googleapis.com 443
TCP southamerica-east1-malachiteingestion-pa.googleapis.com 443
TCP accounts.google.com 443
TCP gcr.io 443
TCP cloud.google.com/artifact-registry 443
TCP oauth2.googleapis.com 443
TCP www.googleapis.com 443
TCP storage.googleapis.com 443

Pianifica l'implementazione

Prima di iniziare a configurare l'agente di inoltro, pianifica l'implementazione. In questo modo, potrai allineare le origini dati e gli attributi di configurazione con i tuoi obiettivi di sicurezza, le funzionalità dell'infrastruttura e i requisiti di scalabilità.

Determina i dati da importare

Identifica le origini dati più pertinenti per il tuo server di inoltro tra le seguenti opzioni:

  • Splunk: ideale se utilizzi già Splunk per la gestione dei log.

  • Syslog: versatile per i log di sistema e delle applicazioni di vari dispositivi.

  • File: flessibile per l'importazione di qualsiasi file di log.

  • Pacchetto: offre una visibilità approfondita della rete acquisendo il traffico non elaborato.

  • Kafka: ideale per l'aggregazione di log ad alto volume e in tempo reale da sistemi distribuiti.

  • WebProxy: ideale per ottenere informazioni sul traffico web e sul comportamento degli utenti.

Limitazione

I feed di dati hanno una dimensione massima della riga di log di 4 MB.

Determina la configurazione

Prima di installare il forwarder, determina i seguenti attributi chiave per garantire un'implementazione corretta.

Compressione dei dati

La compressione dei dati o dei log riduce il consumo di larghezza di banda della rete durante il trasferimento dei log a Google SecOps. Tuttavia, potrebbe causare un aumento dell'utilizzo della CPU. L'equilibrio ottimale tra risparmio di larghezza di banda e utilizzo della CPU dipende da diversi fattori, come il tipo di log, la comprimibilità dei dati, le risorse della CPU disponibili e i vincoli di larghezza di banda della rete.

Ad esempio, i log basati su testo in genere si comprimono bene e possono fornire un risparmio sostanziale della larghezza di banda con un utilizzo ridotto della CPU, mentre i dati crittografati o binari potrebbero non comprimersi in modo efficiente e potrebbero comportare un utilizzo della CPU più elevato.

Per impostazione predefinita, la compressione dei log è disattivata. Valuta il compromesso in base al tuo ambiente specifico e alla natura dei dati di log.

Buffering su disco

Ti consigliamo di attivare il buffering su disco. Il buffering su disco consente di eseguire il buffering dei messaggi arretrati sul disco anziché sulla memoria, proteggendo dalla perdita di dati in caso di arresto anomalo del forwarder o dell'host. Tuttavia, l'abilitazione del buffering su disco può influire sulle prestazioni.

Se il buffering su disco è disattivato, il forwarder alloca 1 GB di memoria (RAM) per ogni tipo di log (ad esempio, per connettore). La memoria massima consentita per il buffering su disco è di 4 GB.

Filtri basati su espressioni regolari

I filtri delle espressioni regolari consentono di valutare i pattern rispetto ai dati di log non elaborati utilizzando la sintassi RE2. Ogni filtro deve includere un'espressione regolare e può facoltativamente definire il comportamento quando si verifica una corrispondenza.

Etichette arbitrarie

Le etichette vengono utilizzate per allegare metadati personalizzati ai log utilizzando coppie chiave-valore. Puoi configurare le etichette per un intero forwarder o all'interno di un raccoglitore specifico del forwarder. Se sono presenti entrambe, le etichette a livello di raccoglitore sostituiscono quelle a livello di forwarder se le chiavi si sovrappongono.

Spazi dei nomi

Puoi utilizzare le etichette dello spazio dei nomi per identificare i log da segmenti di rete distinti e risolvere i conflitti degli indirizzi IP sovrapposti. Puoi configurare un'etichetta dello spazio dei nomi per un intero forwarder o all'interno di un raccoglitore specifico del forwarder. Se sono presenti entrambi, lo spazio dei nomi a livello di raccoglitore sostituisce lo spazio dei nomi a livello di forwarder.

Tipo di log

Google SecOps supporta diversi tipi di log. Per un elenco completo, consulta Set di dati supportati.

Opzioni di bilanciamento del carico e alta affidabilità

Il bilanciamento del carico è supportato solo per il tipo di raccolta syslog.

Il forwarder può essere implementato in ambienti in cui è installato un bilanciatore del carico di livello 4 tra l'origine dati e le istanze del forwarder. In questo modo puoi distribuire la raccolta dei log su più forwarder, migliorando l'affidabilità tramite il reindirizzamento dei log a un forwarder diverso in caso di errore.

Il forwarder ha un server HTTP integrato che risponde ai controlli di integrità dei bilanciatori del carico e impedisce la perdita di log durante l'avvio e l'arresto. Puoi configurare le opzioni del server HTTP, del bilanciamento del carico e dell'alta affidabilità per specificare le durate del timeout e i codici di stato per i controlli di integrità. Questa configurazione è compatibile sia con i deployment basati su container sia con i bilanciatori del carico.

Impostazione Descrizione
Timeout di chiusura controllata Il periodo di tempo durante il quale vengono accettate nuove connessioni dopo che il forwarder restituisce uno stato unready in risposta a un controllo di integrità. Questo è anche il tempo di attesa tra la ricezione di un segnale di arresto e l'inizio effettivo dell'arresto del server stesso. In questo modo, il bilanciatore del carico ha il tempo di rimuovere il forwarder dal pool.

I valori validi sono espressi in secondi. Ad esempio, per specificare 10 secondi, digita 10. Non sono consentiti valori decimali.

Valore predefinito: 15 secondi
Timeout svuotamento Il tempo di attesa del forwarder prima che le connessioni attive vengano chiuse automaticamente, prima che vengano chiuse dal server. Ad esempio, per specificare 5 secondi, digita 5. Non sono consentiti valori decimali.

Valore predefinito: 10 secondi
Port (Porta) Il numero di porta su cui il server HTTP ascolta i controlli di integrità dal bilanciatore del carico. Il valore deve essere compreso tra 1024 e 65.535.

Valore predefinito: 8080
Indirizzo IP o nome host L'indirizzo IP o un nome host che può essere risolto in un indirizzo IP, che il server deve ascoltare.

Valore predefinito: 0.0.0.0 (il sistema locale)
Timeout di lettura Utilizzato per ottimizzare il server HTTP. In genere, non è necessario modificare l'impostazione predefinita. Il tempo massimo consentito per leggere l'intera richiesta, sia l'intestazione che il corpo. Puoi impostare sia il campo Timeout di lettura sia il campo Timeout di lettura dell'intestazione.

Valore predefinito: 3 secondi
Timeout intestazione di lettura Utilizzato per ottimizzare il server HTTP. In genere, non è necessario modificare l'impostazione predefinita. Il tempo massimo consentito per leggere le intestazioni della richiesta. La scadenza di lettura della connessione viene reimpostata dopo la lettura dell'intestazione.

Valore predefinito: 3 secondi
Timeout di scrittura Utilizzato per ottimizzare il server HTTP. In genere, non è necessario modificare l'impostazione predefinita. Il tempo massimo consentito per l'invio di una risposta. Viene reimpostato quando viene letta una nuova intestazione della richiesta.

Valore predefinito: 3 secondi
Timeout di inattività Utilizzato per ottimizzare il server HTTP. In genere, non è necessario modificare l'impostazione predefinita. Il tempo massimo di attesa per la richiesta successiva quando sono abilitate le connessioni inattive. Se il campo Timeout di inattività è impostato su zero, viene utilizzato il valore del campo Timeout di lettura. Se entrambi sono pari a zero, viene utilizzato il campo Timeout intestazione di lettura .

Valore predefinito: 3 secondi
Codice di stato disponibile Il codice di stato restituito dal forwarder quando viene ricevuto un controllo di attività e il forwarder è disponibile. Gli scheduler e gli orchestratori di container spesso inviano controlli di attività.

Valore predefinito: 204
Codice di stato Pronto Il codice di stato restituito dall'agente di inoltro quando è pronto ad accettare il traffico in una delle seguenti situazioni:
  • Un controllo di idoneità viene ricevuto da un orchestratore o scheduler di container.
  • Un controllo di integrità viene ricevuto da un bilanciatore del carico.
Valore predefinito: 204
Codice di stato Non pronto Il codice di stato restituito dall'agente di inoltro quando non è pronto ad accettare il traffico.

Valore predefinito: 503

Passaggio 1: definisci la configurazione del forwarder

Ogni agente di inoltro di cui è stato eseguito il deployment richiede un file di configurazione dell'agente di inoltro. Un file di configurazione del forwarder specifica le impostazioni per trasferire i dati alla tua istanza Google SecOps. Ti consigliamo di generare un nuovo file di configurazione per ogni host per mantenere chiare le distinzioni tra i raccoglitori associati a ciascuno.

Google Cloud personalizza questi file di configurazione con metadati specifici per ogni istanza di Forwarder. Puoi modificare questi file in base ai tuoi requisiti specifici e incorporare i dettagli sui tipi di log che vuoi importare.

Puoi generare un file di configurazione del forwarder tramite l'interfaccia utente, l'API o manualmente.

  • La UI fornisce un'interfaccia grafica per la configurazione dei forwarder ed è il metodo consigliato per creare una configurazione dei forwarder. Questo è il modo più semplice per iniziare e non richiede alcuna programmazione. Per scaricare il file di configurazione utilizzando l'interfaccia utente di Google SecOps, consulta Gestisci le configurazioni del forwarder tramite l'interfaccia utente di Google SecOps.

  • L'API fornisce un modo programmatico per configurare gli agenti di inoltro. Per scaricare la configurazione del forwarder in modo programmatico, consulta l'API di gestione del forwarder.

  • Puoi creare il file di configurazione manualmente e aggiungere le opzioni di configurazione. Ti consigliamo di utilizzare il metodo della UI per generare il file di configurazione per garantire l'accuratezza e ridurre al minimo i potenziali errori. Per generare il file manualmente, consulta Gestisci manualmente il file di configurazione del forwarder.

Passaggio 2: installa Docker

Questa sezione descrive come installare Docker sul tuo sistema.

Autenticazione Docker con Artifact Registry

Nell'ambito dell'installazione di Docker, devi autenticare Docker. Puoi autenticare Docker utilizzando l'interfaccia a riga di comando (CLI) di Google Cloud CLI o, se non riesci a installare Google Cloud CLI (interfaccia a riga di comando), creando un nuovo JSON del account di servizio nella VM.

Metodo uno: utilizzare l'interfaccia a riga di comando (CLI) di Google Cloud (CLI)

Esegui questo comando per autenticare Docker:

gcloud auth configure-docker gcr.io

Metodo 2: crea e scarica un nuovo JSON del account di servizio nella macchina virtuale (VM).

Utilizza questo metodo se non riesci a installare Google Cloud CLI (interfaccia a riga di comando).

Esegui questo comando per autenticare Docker:

cat key.json | docker login -u _json_key --password-stdin https://gcr.io

Per scoprire di più su altri metodi di autenticazione Docker, consulta: Configura l'autenticazione in Artifact Registry per Docker

Sistema Linux

Docker è open source e tutta la documentazione necessaria è disponibile nella community Docker open source. Per istruzioni sull'installazione di Docker, consulta Installa Docker Engine.

Per verificare se Docker è installato correttamente sul tuo sistema, esegui questo comando (richiede privilegi elevati):

   docker ps
  

La seguente risposta indica che Docker è stato installato correttamente:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Sistema Windows

Avvia Windows PowerShell con privilegi amministrativi e controlla la connettività di rete a Google Cloud seguendo questi passaggi:

  1. Fai clic su Avvia.

  2. Digita PowerShell e fai clic con il tasto destro del mouse su Windows PowerShell.

  3. Fai clic su Esegui come amministratore.

  4. Esegui questo comando:

    C:\> test-netconnection <host> -port <port>

    L'output comando indica che lo stato di TcpTestSucceeded è true.

    Esempio:

    C:\> test-netconnection malachiteingestion-pa.googleapis.com -port 443
    ComputerName     :  malachiteingestion-pa.googleapis.com
    RemoteAddress    : 198.51.100.1
    RemotePort       : 443
    InterfaceAlias   : Ethernet
    SourceAddress    : 203.0.113.1
    TcpTestSucceeded : True
    

Per installare Docker, segui questi passaggi sul tuo server Windows.

  1. Attiva la funzionalità dei container Microsoft Windows:

    Install-WindowsFeature containers -Restart

  2. Esegui questo comando in modalità amministratore di PowerShell per installare Docker CE:

    Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/Windows-Containers/Main/helpful_tools/Install-DockerCE/install-docker-ce.ps1" -o install-docker-ce.ps1
    
    .\install-docker-ce.ps1
    
  3. Testa l'interfaccia a riga di comando di Docker eseguendo il comando docker ps, che restituisce un elenco di container in esecuzione. Se Docker non è installato correttamente, viene visualizzato un errore.

    Per ulteriori informazioni, consulta Inizia: prepara Windows per i container.

    Per i deployment aziendali, installa Mirantis Container Runtime, noto anche come Docker EE.

Passaggio 3: installa l'agente di inoltro

Questa sezione descrive come installare il forwarder utilizzando un container Docker.

Passaggio 3a: sposta i file di configurazione nella directory del forwarder

Il primo passaggio del processo di installazione del forwarder consiste nell'inserire i file di configurazione necessari nella directory del forwarder designata.

Sistema Linux

Posiziona i file di configurazione nella directory del forwarder seguendo questi passaggi:

  1. Connettiti all'host del server di inoltro Linux utilizzando il terminale.

  2. Passa alla home directory che esegue il container Docker.

  3. Crea una directory in cui archiviare i file di configurazione del forwarder.

      mkdir /opt/chronicle/'CONFIG'
    

    Puoi sostituire il nome della directory CONFIG con un nome a tua scelta. Assicurati di utilizzare lo stesso nome della directory quando esegui il comando docker run.

  4. Cambia la directory.

      cd /opt/chronicle/config
    

  5. Dopo il trasferimento, assicurati che i file di configurazione si trovino nella directory /opt/chronicle/config.

      ls -l
    

Sistema Windows

Crea una cartella C:\config e inserisci i file di configurazione al suo interno. Puoi sostituire il nome della cartella, config, con un nome a tua scelta. Assicurati di utilizzare lo stesso nome della cartella quando esegui il comando docker run.

Passaggio 3b: esegui l'agente di inoltro

Dopo aver inserito i file di configurazione nella directory del forwarder designata, puoi avviare il forwarder o eseguire l'upgrade all'ultima versione del container Google SecOps.

Se stai eseguendo l'upgrade del container, pulisci le esecuzioni Docker precedenti eseguendo i seguenti comandi.

      docker stop 'cfps'
    

      docker rm 'cfps'
    

Nell'esempio, il nome del container Docker è cfps.

Per avviare il forwarder per la prima volta o per eseguire l'upgrade all'ultima versione del container Google SecOps, segui questi passaggi:

  1. Scarica l'immagine Docker più recente da Google Cloud:

    Sistema Linux:

    docker pull gcr.io/chronicle-container/cf_production_stable

    Sistema Windows:

    docker pull gcr.io/chronicle-container/cf_production_stable_windows

  2. Avvia il forwarder dal container Docker:

    Sistema Linux:

      docker run \
      --detach \
      --name cfps \
      --restart=always \
      --log-opt max-size=100m \
      --log-opt max-file=10 \
      --net=host \
      -v /opt/chronicle/config:/opt/chronicle/external \
      gcr.io/chronicle-container/cf_production_stable
    

    (Facoltativo per il sistema Linux) Quando avvii il forwarder dal container Docker, hai la possibilità di montare una sottodirectory specifica da /var/log/.
    Per montare una sottodirectory specifica, aggiungi la riga seguente al comando e sostituisci il segnaposto <parser-name> con il nome della directory sul sistema host da cui devono essere raccolti i log:

      -v /var/log/<parser-name>:/opt/chronicle/edr \
    

    Sistema Linux (inclusa l'opzione per montare una sottodirectory specifica):

    `docker run \
    --detach \
    --name cfps \
    --restart=always \
    --log-opt max-size=100m \
    --log-opt max-file=10 \
    --net=host \
    -v /opt/chronicle/config:/opt/chronicle/external \
    -v /var/log/<parser-name>:/opt/chronicle/edr \
    gcr.io/chronicle-container/cf_production_stable`
    

    Sistema Windows:

      docker run `
        --detach `
        --name cfps `
        --restart=always `
        --log-opt max-size=100m `
        --log-opt max-file=10 `
        -p 0.0.0.0:10515-10520:10515-10520/udp `
        -v C:\config\:C:/opt/chronicle/external `
        gcr.io/chronicle-container/cf_production_stable_windows
    

Le opzioni --log-opt sono disponibili a partire da Docker 1.13. Queste opzioni limitano le dimensioni dei file di log del container e devono essere utilizzate se la versione di Docker che utilizzi le supporta.

Gestisci l'agente di inoltro

Le sezioni seguenti forniscono indicazioni sulla gestione del forwarder.

Visualizza i log dell'agente di inoltro

  • Per visualizzare i log del forwarder, esegui questo comando:

    docker logs cfps
    
  • Per visualizzare il percorso del file in cui sono archiviati i log, esegui il seguente comando:

    docker inspect --format='{{.LogPath}}' CONTAINER_NAME
    
  • Per visualizzare i log di esecuzione in tempo reale, esegui questo comando:

    docker logs cfps -f
    
  • Per archiviare i log in un file, esegui questo comando:

    docker logs cfps &> logs.txt
    

Disinstalla il forwarder

I seguenti comandi Docker ti aiutano ad arrestare, disinstallare o rimuovere il forwarder.

  • Per arrestare o disinstallare il container del forwarder, esegui questo comando:

    docker stop cfps
    
  • Per rimuovere il container del forwarder, esegui questo comando:

    docker rm cfps
    

Aggiorna l'agente di inoltro

Il forwarder è composto da due componenti, ciascuno con un processo di aggiornamento come segue:

  • Forwarder Bundle: questo componente viene aggiornato automaticamente, eliminando la necessità di un riavvio.

  • Immagine Docker del forwarding: gli aggiornamenti di questo componente vengono eseguiti manualmente. Dovrai arrestare l'istanza del forwarder corrente e avviarne una nuova, come descritto nel passaggio 3b.

Guide all'importazione dei forwarder per set di dati specifici

Per scoprire come viene importato un determinato set di dati utilizzando i forwarder, consulta quanto segue:

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