Risolvere i problemi comuni del forwarder Linux
Questo documento ti aiuta a riconoscere e risolvere i problemi comuni che potresti riscontrare durante l'utilizzo del forwarder Linux di Google Security Operations.
L'inoltro non si avvia
L'inoltro non viene avviato e si trova in un ciclo di riavvio continuo con il seguente errore nei log:
F0510 06:17:39.013603 202 main_linux.go:153] open /opt/chronicle/external/*.conf: no such file or directory
Possibile causa 1: mappatura errata nel file di configurazione
Per risolvere il problema, assicurati di passare il percorso corretto al file di configurazione e di mapparlo a una cartella esterna.
Possibile causa 2: SELinux è abilitato
Controlla il file di configurazione accedendo al container senza avviare il forwarder ed esegui il comando seguente:
docker run --name cfps --log-opt max-size=100m --log-opt max-file=10 --net=host -v ~/configuration:/opt/chronicle/external --entrypoint=/bin/bash \ -it gcr.io/chronicle-container/cf_production_
Questo comando ti inserirà in una shell dall'interno del container.
Esegui questo comando:
ls -lrt /opt.chronicle/external/
Se ricevi un errore di autorizzazione negata, significa che il forwarder non è in grado di aprire il file di configurazione e quindi non può essere avviato.
Per risolvere il problema:
Controlla lo stato di SELinux eseguendo questo comando:
sestatus
Se lo stato di SELinux è abilitato nell'output, esegui il seguente comando per disattivarlo:
setenforce 0
I log non raggiungono il tenant Google SecOps
Possibile causa 1: risoluzione DNS
Controlla se l'host non è in grado di risolvere gli indirizzi o di raggiungere Google SecOps eseguendo il seguente comando:
nslookup malachiteingestion-pa.googleapis.com
Se il comando non va a buon fine, contatta il team di networking per la risoluzione.
Possibile causa 2: firewall
Controlla se il firewall locale blocca la comunicazione tra Google SecOps e il forwarder eseguendo il seguente comando:
firewall-cmd --state
Se il firewall è abilitato, disabilitalo eseguendo questo comando:
systemctl stop firewalld
Possibile causa 3: dimensione del buffer
Controlla se si tratta di un problema di dimensione del buffer cercando il seguente errore nei log:
Memory ceiling (1073741824) reached, freeing a batch from the backlog
Per risolvere il problema:
Attiva la compressione nel file di configurazione dell'agente di inoltro.
Aumenta le dimensioni del buffer aggiornando i parametri
max_memory_buffer_bytes
emax_file_buffer_bytes
nel file di configurazione. Questi parametri indicano il buffer dei batch arretrati archiviati nella memoria o sul disco.
L'inoltratore e l'host non ricevono i log
Se l'host e l'inoltratore non ricevono i log, controlla lo stato della porta eseguendo il seguente comando per ogni porta:
netstat -a | grep PORT
Sostituisci PORT
con l'ID porta che vuoi controllare.
Se il comando non produce alcun output, significa che l'host non è in ascolto su quella porta e devi consultare l'amministratore di rete.
Se l'output del comando indica che l'host è in ascolto su una porta e il forwarder non riceve ancora i log, procedi nel seguente modo:
Arresta Docker eseguendo questo comando:
docker stop cfps
Esegui uno dei seguenti comandi in base alla configurazione di rete.
Per TCP:
nc -l PORT
Per UDP:
nc -l -u PORT
Sostituisci
PORT
con l'ID porta per cui vuoi risolvere il problema.Riavvia il servizio esterno e controlla se il problema è stato risolto. Se il problema persiste, [contatta l'assistenza Google SecOps.
L'inoltratore non riceve i log, ma l'host sì
Se l'host riceve i log, ma il forwarder no, significa che il forwarder non è in ascolto sulla porta specificata nel file di configurazione.
Per risolvere il problema:
Apri due finestre del terminale sul sistema, una per configurare l'inoltro e l'altra per inviare un messaggio di prova all'host.
Nel primo terminale (forwarder), avvia Docker senza avviare il forwarder eseguendo questo comando:
docker run \ --name cfps \ --log-opt max-size=100m \ --log-opt max-file=10 \ --net=host \ -v ~/config:/opt/chronicle/external \ --entrypoint=/bin/bash \ -it gcr.io/chronicle-container/cf_production_stable
Specifica la porta su cui deve rimanere in ascolto il forwarder:
nc -l PORT
Sostituisci
PORT
con l'ID porta per cui vuoi risolvere il problema.
Nel secondo terminale (host), invia il messaggio di test sulla porta eseguendo il seguente comando:
echo "test message" | nc localhost PORT
Sostituisci
PORT
con l'ID porta per cui vuoi risolvere il problema.Esegui di nuovo il comando
docker
. Specifica il flag-p
con le porte su cui il forwarder deve rimanere in ascolto eseguendo il seguente comando:docker run \ --detach \ –name cfps \ --restart=always \ --log-opt max-size=100m \ --log-opt max-file=10 --net=host \ —v /root/config:/opt/chronicle/external \ -p 11500:11800 \ gcr.io/chronicle-container/cf_production_stable
Errori comuni nel file di log del forwarder
Puoi visualizzare i log del forwarder eseguendo questo comando:
sudo docker logs cfps
La richiesta contiene un argomento non valido
Il file di log del forwarder mostra il seguente messaggio di errore:
I0912 18:04:15.187321 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
E0912 18:04:15.410572 333 batcher.go:345] [2_syslog_CISCO_FIREWALL-tid-0] Error exporting batch: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
I0912 18:04:15.964923 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
Risoluzione:
Questo errore può verificarsi quando viene aggiunto un tipo di log non valido. Assicurati che vengano aggiunti solo
tipi di log validi. Nel messaggio di errore di esempio, CISCO\_FIREWALL
non è
un tipo di log valido. Per un elenco dei tipi di log validi, visita la pagina Tipi di log e parser predefiniti supportati.
Impossibile trovare il server
Il file di log del forwarder mostra il seguente messaggio di errore:
{"log":"Failure: Unable to find the server at accounts.google.com.\n","stream":"stderr","time":"2019-06-12T18:26:53.858804303Z"}`
{"log":"+ [[ 1 -ne 0 ]]\n","stream":"stderr","time":"2019-06-12T18:26:53.919837669Z"}
{"log":"+ err 'ERROR: Problem accessing the Chronicle bundle.'\n","stream":"stderr","time":"2019-06-12T18:26:53.919877852Z"}
Risoluzione:
Contatta il tuo team di rete per assicurarti che la rete funzioni.
Firma JWT non valida
Il file di log del forwarder mostra il seguente messaggio di errore:
E0330 17:05:28.728021 162 stats_manager.go:85] send(): rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
E0404 17:05:28.729012 474 memory.go:483] [1_syslog_FORTINET_FIREWAL-tid-0] Error exporting batch: rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
Risoluzione:
Questo errore può verificarsi quando un file di configurazione di un forwarder contiene dettagli errati della chiave segreta. Contatta l'assistenza Google SecOps per risolvere il problema.
Il token deve essere un token di breve durata
Il file di log del forwarder mostra il seguente messaggio di errore:
token: 400 Bad Request Response:
{"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim."} I0412 05:14:16.539060 480
malachite.go:212] Sent batch error: rpc error: code = Unauthenticated desc =
transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response:
{"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
short-lived token (60 minutes)
Risoluzione:
Questo errore può verificarsi quando gli orologi del sistema host e del server non sono sincronizzati. Regola l'ora sull'host o prova a utilizzare NTP per sincronizzare gli orologi.
Nessun file o directory corrispondente
Il file di log del forwarder mostra il seguente messaggio di errore:
++ cat '/opt/chronicle/external/*.conf'
cat: '/opt/chronicle/external/*.conf': No such file or directory
Risoluzione:
Questo errore può verificarsi quando il forwarder viene avviato con il mapping dell'unità errato. Utilizza
il percorso completo della directory nel file di configurazione (puoi ottenere il percorso eseguendo
il comando pwd
).
Impossibile recuperare l'ID cliente dal file di configurazione
Il file di log del forwarder mostra il seguente messaggio di errore:
+ err 'ERROR: Failed to retrieve customer ID from configuration file.'
++ date +%Y-%m-%dT%H:%M:%S%z
+ echo '[2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.'
[2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.
+ err '==> Please contact the Chronicle support team.'
Risoluzione:
Questo errore è causato da un mapping errato o se il file di configurazione non è
presente nella directory. Utilizza il percorso completo della directory nel file di configurazione
(puoi ottenere il percorso eseguendo il comando pwd
). Assicurati che venga eseguito il comando
docker run
corretto e che il file di configurazione esista nella
seguente posizione:
gcr.io/chronicle-container/cf_production_stable
Il seguente esempio di codice mostra il comando docker run
:
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
Comandi Docker utili
Puoi raccogliere ulteriori informazioni sull'installazione di Docker utilizzando il seguente comando:
docker info
Il servizio Docker potrebbe essere disattivato per impostazione predefinita. Per verificare se è disattivato, esegui questo comando:
systemctl is-enabled docker
Per attivare il servizio Docker e avviarlo immediatamente, esegui uno dei seguenti comandi:
sudo systemctl enable --now docker
sudo systemctl enable /usr/lib/systemd/system/docker.service
Output:
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
Quando avvii un forwarder, esegui questo comando per impostare il riavvio automatico del forwarder:
sudo docker run --restart=always `IMAGE_NAME`
IMAGE_NAME
è il nome dell'immagine del forwarder.Per controllare lo stato e i dettagli del servizio Docker, esegui questo comando:
sudo systemctl status docker
Output:
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-07-18 11:14:05 UTC; 15s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 263 (dockerd) Tasks: 20 Memory: 100.4M CGroup: /system.slice/docker.service └─263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Jul 18 11:14:05 swarm-kraken dockerd[263]: time="2020-07-18T11:14:05.713787002Z" level=info msg="API listen on /run/docker.sock" Jul 18 11:14:05 swarm-kraken systemd[1]: Started Docker Application Container Engine
In caso di problemi con Docker, il team di assistenza di Google SecOps può richiedere l'output di questo comando per aiutarti a eseguire il debug del problema.
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.