Resolver problemas comuns do encaminhador do Linux
Este documento ajuda você a reconhecer e resolver problemas comuns que podem surgir ao usar o encaminhador do Linux do Google Security Operations.
O encaminhador não inicia
O encaminhador não inicia e fica em um loop de reinicialização contínua com o seguinte erro nos registros:
F0510 06:17:39.013603 202 main_linux.go:153] open /opt/chronicle/external/*.conf: no such file or directory
Causa possível 1: mapeamento incorreto no arquivo de configuração
Para resolver esse problema, verifique se você está transmitindo o caminho correto para o arquivo de configuração e mapeando-o para uma pasta externa.
Possível causa 2: o SELinux está ativado
Verifique o arquivo de configuração entrando no contêiner sem iniciar o encaminhador e execute o comando a seguir:
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_
Esse comando vai colocar você em um shell de dentro do contêiner.
Execute este comando:
ls -lrt /opt.chronicle/external/
Se você receber um erro de permissão negada, isso indica que o encaminhador não consegue abrir o arquivo de configuração e, portanto, não pode ser iniciado.
Para resolver esse problema, faça o seguinte:
Verifique o status do SELinux executando o seguinte comando:
sestatus
Se o status do SELinux estiver ativado na saída, execute o seguinte comando para desativá-lo:
setenforce 0
Registros que não chegam ao locatário do Google SecOps
Causa possível 1: resolução de DNS
Verifique se o host não consegue resolver endereços ou acessar o Google SecOps executando o seguinte comando:
nslookup malachiteingestion-pa.googleapis.com
Se o comando falhar, entre em contato com sua equipe de rede para resolver o problema.
Possível causa 2: firewall
Verifique se o firewall local está bloqueando a comunicação entre o Google SecOps e o encaminhador executando o seguinte comando:
firewall-cmd --state
Se o firewall estiver ativado, desative-o executando o seguinte comando:
systemctl stop firewalld
Possível causa 3: tamanho do buffer
Verifique se é um problema de tamanho do buffer procurando o seguinte erro nos registros:
Memory ceiling (1073741824) reached, freeing a batch from the backlog
Para resolver esse problema, faça o seguinte:
Ative a compactação no arquivo de configuração do encaminhador.
Aumente o tamanho do buffer atualizando os parâmetros
max_memory_buffer_bytes
emax_file_buffer_bytes
no arquivo de configuração. Esses parâmetros indicam o buffer de lotes de pendências armazenados na memória ou no disco.
O encaminhador e o host não estão recebendo registros
Se o host e o encaminhador não receberem registros, verifique o status da porta executando o seguinte comando para cada porta:
netstat -a | grep PORT
Substitua PORT
pelo ID da porta que você quer verificar.
Se o comando não gerar nenhuma saída, isso indica que o host não está escutando nessa porta. Consulte o administrador da rede.
Se a saída do comando indicar que o host está escutando em uma porta e o encaminhador ainda não estiver recebendo registros, faça o seguinte:
Pare o Docker executando o seguinte comando:
docker stop cfps
Execute um dos seguintes comandos com base na configuração de rede.
Para TCP:
nc -l PORT
Para UDP:
nc -l -u PORT
Substitua
PORT
pelo ID da porta que você quer resolver.Reinicie o serviço externo e verifique se o problema foi resolvido. Se o problema persistir, entre em contato com o suporte do Google SecOps.
O encaminhador não está recebendo registros, mas o host está
Se o host estiver recebendo registros, mas o encaminhador não, isso indica que o encaminhador não está escutando na porta especificada no arquivo de configuração.
Para resolver esse problema, faça o seguinte:
Abra duas janelas de terminal no sistema, uma para configurar o encaminhador e outra para enviar uma mensagem de teste ao host.
No primeiro terminal (encaminhador), inicie o Docker sem iniciar o encaminhador executando o seguinte 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
Especifique a porta que o encaminhador deve detectar:
nc -l PORT
Substitua
PORT
pelo ID da porta que você quer resolver.
No segundo terminal (host), envie a mensagem de teste na porta executando o seguinte comando:
echo "test message" | nc localhost PORT
Substitua
PORT
pelo ID da porta que você quer resolver.Execute novamente o comando
docker
. Especifique a flag-p
com as portas em que o encaminhador vai ficar à escuta executando o seguinte 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
Erros comuns no arquivo de registros do encaminhador
Para conferir os registros do encaminhador, execute o seguinte comando:
sudo docker logs cfps
A solicitação contém um argumento inválido
O arquivo de registro do encaminhador mostra a seguinte mensagem de erro:
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.
Resolução:
Esse erro pode ocorrer quando um tipo de registro inválido é adicionado. Verifique se apenas tipos de registros válidos foram adicionados. Na mensagem de erro de exemplo, CISCO\_FIREWALL
não é um tipo de registro válido. Para uma lista de tipos de registros válidos, acesse Tipos de registros compatíveis e analisadores padrão.
Não foi possível encontrar o servidor
O arquivo de registro do encaminhador mostra a seguinte mensagem de erro:
{"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"}
Resolução:
Entre em contato com sua equipe de rede para garantir que ela esteja funcionando.
Assinatura JWT inválida
O arquivo de registro do encaminhador mostra a seguinte mensagem de erro:
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."}
Resolução:
Esse erro pode ocorrer quando um arquivo de configuração de encaminhador tem detalhes incorretos da chave secreta. Entre em contato com o suporte da SecOps do Google para resolver o problema.
O token precisa ser de curta duração
O arquivo de registro do encaminhador mostra a seguinte mensagem de erro:
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)
Resolução:
Esse erro pode ocorrer quando os relógios do host e do sistema do servidor não estão sincronizados. Ajuste a hora no host ou tente usar o NTP para sincronizar os relógios.
Arquivo ou diretório não encontrado
O arquivo de registro do encaminhador mostra a seguinte mensagem de erro:
++ cat '/opt/chronicle/external/*.conf'
cat: '/opt/chronicle/external/*.conf': No such file or directory
Resolução:
Esse erro pode ocorrer quando o encaminhador é iniciado com o mapeamento de unidade errado. Use
o caminho completo do diretório no arquivo de configuração. Para conseguir o caminho, execute
o comando pwd
.
Não foi possível recuperar o ID do cliente do arquivo de configuração
O arquivo de registro do encaminhador mostra a seguinte mensagem de erro:
+ 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.'
Resolução:
Esse erro é causado por um mapeamento incorreto ou se o arquivo de configuração não estiver
presente no diretório. Use o caminho completo do diretório no arquivo de configuração. Para saber o caminho, execute o comando pwd
. Verifique se o comando docker run
correto foi executado e se o arquivo de configuração existe no seguinte local:
gcr.io/chronicle-container/cf_production_stable
O exemplo de código a seguir mostra o 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
Comandos úteis do Docker
Você pode coletar mais informações sobre a instalação do Docker usando o seguinte comando:
docker info
O serviço do Docker pode estar desativado por padrão. Para verificar se ele está desativado, execute o seguinte comando:
systemctl is-enabled docker
Para ativar e iniciar o serviço do Docker imediatamente, execute um dos seguintes comandos:
sudo systemctl enable --now docker
sudo systemctl enable /usr/lib/systemd/system/docker.service
Saída:
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
Ao iniciar um encaminhador, execute o seguinte comando para definir o reinício automático:
sudo docker run --restart=always `IMAGE_NAME`
IMAGE_NAME
é o nome da imagem do encaminhador.Para verificar o status e os detalhes do serviço do Docker, execute o seguinte comando:
sudo systemctl status docker
Saída:
● 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
Se você tiver problemas com o Docker, a equipe de suporte do Google SecOps poderá solicitar a saída desse comando para ajudar e depurar o problema.
Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.