Installa e configura il forwarder

Supportato 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 Google SecOps.

Puoi utilizzare il forwarder per inviare i log direttamente dal tuo ambiente a Google SecOps, senza dover utilizzare 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 integrazione manuale con l'API di importazione.

Google SecOps fornisce un contenitore Docker per il deployment di un forwarder sicuro. 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 ottenere un rendimento ottimale, consigliamo di utilizzare Docker versione 20.10.21 o successiva.

  • RAM: è necessaria 1 GB di RAM per ogni tipo di dato raccolto accettato da Google SecOps per l'importazione. Ad esempio, se specifichi quattro diversi collector, occorre 4 GB di RAM per raccogliere i dati per tutti e quattro.

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

  • Disco: è consigliato 20 GB di spazio su disco, indipendentemente dalla quantità di dati gestita dal forwarder.

Sistema Windows

Il forwarder è supportato su Microsoft Windows Server 2022. Per ottenere un rendimento ottimale, è consigliabile utilizzare Docker versione 20.10.21 o successiva.

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

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

  • Disco: è consigliato 20 GB di spazio su disco, indipendentemente dalla quantità di dati gestita dal forwarder.

Prima di iniziare

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

Intervalli di indirizzi IP di Google

Quando configuri il forwarder, potrebbe essere necessario modificare le impostazioni del firewall che richiedono 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 ulteriori informazioni, consulta Individuare gli intervalli degli indirizzi IP di Google.

Verifica la configurazione del firewall

Se il container del forwarder si trova dietro firewall o proxy autenticati, devi aprire l'accesso ai seguenti host:

Tipo di connessione Destinazione Port (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 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 storage.googleapis.com 443

Pianifica l'implementazione

Prima di iniziare a configurare il forwarder, pianifica l'implementazione. In questo modo, puoi allineare le origini dati e gli attributi di configurazione ai tuoi scopi di sicurezza, alle funzionalità dell'infrastruttura e ai requisiti di scalabilità.

Determina i dati da importare

Identifica le origini dati più pertinenti per il tuo forwarder tra le seguenti opzioni:

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

  • Syslog: versatile per i log di sistema e di applicazione 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 in tempo reale e ad alto volume 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 riuscita.

Compressione dei dati

La compressione dei dati o dei log riduce il consumo di larghezza di banda della rete durante il trasferimento 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 compressibilità dei dati, le risorse 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 offrire risparmi sostanziali in termini di larghezza di banda con un utilizzo ridotto della CPU, mentre i dati criptati o binari potrebbero non comprimersi in modo efficiente e comportare un utilizzo più elevato della CPU.

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

Buffering del disco

Ti consigliamo di attivare il buffering del disco. Il buffering del disco ti consente di mettere in coda i messaggi in attesa sul disco anziché nella memoria, proteggendoti dalla perdita di dati in caso di arresti anomali di inoltro o dell'host. Tuttavia, l'attivazione del buffering del disco può influire sulle prestazioni.

Se il buffering del 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 sul disco è 4 GB.

Filtri basati su espressioni regolari

I filtri delle espressioni regolari ti consentono di filtrare i log associando i pattern ai dati non elaborati dei log. I filtri utilizzano la sintassi RE2. I filtri devono includere un'espressione regolare e, facoltativamente, definire un comportamento in caso di corrispondenza.

Etichette arbitrarie

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

Spazi dei nomi

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

Tipo di log

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

Opzioni di bilanciamento del carico e alta disponibilità

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 le istanze dell'origine dati e del forwarder. In questo modo puoi distribuire la raccolta dei log su più inoltratori, migliorando l'affidabilità ridirizzando i log a un inoltratore diverso in caso di errore.

Il forwarder dispone di 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 il server HTTP, il bilanciamento del carico e le opzioni di alta disponibilità 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 elegante Il periodo di tempo per cui vengono accettate nuove connessioni dopo che il forwarder restituisce uno stato unready in risposta a un controllo di integrità. È 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. I valori decimali non sono consentiti.

Valore predefinito: 15 secondi
Timeout svuotamento Il tempo che il forwarder attende prima che le connessioni attive si chiudano autonomamente prima che vengano chiuse dal server. Ad esempio, per specificare 5 secondi, digita 5. I valori decimali non sono consentiti.

Valore predefinito: 10 secondi
Port (Porta) Il numero di porta su cui il server HTTP rimane in ascolto per i controlli di integrità da parte del bilanciatore del carico. Il valore deve essere compreso tra 1024 e 65535.

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 modificarla rispetto all'impostazione predefinita. Il tempo massimo consentito per leggere l'intera richiesta, sia l'intestazione sia il corpo. Puoi impostare sia il campo timeout lettura sia il campo timeout lettura intestazione.

Valore predefinito: 3 secondi
Timeout lettura intestazione Utilizzato per ottimizzare il server HTTP. In genere, non è necessario modificarla rispetto all'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 scrittura Utilizzato per ottimizzare il server HTTP. In genere, non è necessario modificarla rispetto all'impostazione predefinita. Il tempo massimo consentito per inviare una risposta. Viene reimpostato quando viene letto un nuovo intestazione di richiesta.

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

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

Valore predefinito: 204
Codice stato di disponibilità Il codice di stato restituito dal forwarder quando è pronto ad accettare il traffico in una delle seguenti situazioni:
  • Un controllo di idoneità viene ricevuto da un pianificatore o un orchestratore dei container.
  • Viene ricevuto un controllo di integrità da un bilanciatore del carico.
Valore predefinito: 204
Codice di stato Non pronto Il codice di stato restituito dal forwarder quando non è pronto ad accettare il traffico.

Valore predefinito: 503

Passaggio 1: definisci la configurazione del forwarder

Ogni forwarder di cui è stato eseguito il deployment richiede un file di configurazione. 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 distinzioni chiare tra i collector associati a ciascuno.

Google Cloud personalizza questi file di configurazione con metadati specifici per ogni istanza del forwarder. Puoi modificare questi file in base ai tuoi requisiti specifici e includere dettagli sui tipi di log da importare.

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

  • L'interfaccia utente fornisce un'interfaccia grafica per la configurazione dei forwarder ed è il metodo consigliato per creare una configurazione del 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 Gestire le configurazioni dei forwarder tramite l'interfaccia utente di Google SecOps.

  • L'API fornisce un modo programmatico per configurare i forwarder. Per scaricare la configurazione del forwarder in modo programmatico, consulta l'API Forwarder Management.

  • Puoi creare il file di configurazione manualmente e aggiungervi le opzioni di configurazione. Ti consigliamo di utilizzare il metodo dell'interfaccia utente per generare il file di configurazione per garantire l'accuratezza e ridurre al minimo i potenziali errori. Per generare il file manualmente, consulta Gestire manualmente il file di configurazione del forwarder.

Passaggio 2: installa Docker

Questa sezione descrive come installare Docker sul sistema.

Sistema Linux

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

Per verificare se Docker è installato correttamente sul sistema, esegui il seguente 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 di amministratore 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 del 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 server Windows.

  1. Attiva la funzionalità del contenitore Microsoft Windows:

    Install-WindowsFeature containers -Restart
    
  2. Esegui il seguente 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 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 la guida introduttiva: Prepara Windows per i contenitori.

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

Passaggio 3: installa il forwarder

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

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

Il primo passaggio della procedura di installazione del forwarder prevede il posizionamento dei file di configurazione necessari nella directory del forwarder designata.

Sistema Linux

Posiziona i file di configurazione nella directory del forwarder seguendo questa procedura:

  1. Connettiti all'host del forwarder Linux utilizzando il terminale.

  2. Cambia la directory impostandola sulla home directory in cui viene eseguito il contenitore Docker.

  3. Crea una directory per 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 di directory durante l'esecuzione del comando docker run.

  4. Cambia la directory.

      cd /opt/chronicle/config
    

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

      ls -l
    

Sistema Windows

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

Passaggio 3b: esegui il forwarder

Dopo aver inserito i file di configurazione nella directory del forwarder designata, puoi avviare il forwarder o eseguire l'upgrade alla versione più recente del contenitore Google SecOps.

Se stai eseguendo l'upgrade del contenitore, ripulisci eventuali esecuzioni Docker precedenti eseguendo i seguenti comandi.

      docker stop 'cfps'
    

      docker rm 'cfps'
    

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

Per avviare il forwarder per la prima volta o per eseguire l'upgrade alla versione più recente del contenitore Google SecOps, segui questi passaggi:

  1. Ottieni 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
    

    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 contenitore e devono essere utilizzate se la versione di Docker che utilizzi le supporta.

Gestire il forwarder

Le sezioni che seguono forniscono indicazioni sulla gestione del forwarder.

Visualizza i log del forwarder

  • Per visualizzare i log del forwarder, esegui il seguente comando:

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

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

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

    docker logs cfps &> logs.txt
    

Disinstalla il forwarder

I seguenti comandi Docker ti aiutano a interrompere, disinstallare o rimuovere il forwarder.

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

    docker stop cfps
    
  • Per rimuovere il contenitore del forwarder, esegui il seguente comando:

    docker rm cfps
    

Aggiorna il forwarder

Il forwarder è costituito 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 forwarder: gli aggiornamenti di questo componente vengono eseguiti manualmente. Devi interrompere l'istanza di inoltro corrente e avviarne una nuova, come descritto nel passaggio 3b.

Guide all'importazione tramite inoltro per set di dati specifici

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