Resolver problemas comuns do encaminhador do Linux
Este documento ajuda a reconhecer e resolver problemas comuns que podem ocorrer ao usar o forwarder do Linux das operações de segurança do Google.
O encaminhador não é iniciado
O encaminhador não é iniciado e está 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
Para verificar o arquivo de configuração, entre no contêiner sem iniciar o encaminhador e execute o seguinte comando:
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 coloca você em um shell 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:
Para verificar o status do SELinux, execute o seguinte comando:
sestatus
Se o status do SELinux estiver ativado na saída, execute o seguinte comando para desativá-lo:
setenforce 0
Os registros não estão chegando ao locatário do Google Security Operations
Possível causa 1: resolução de DNS
Para verificar se o host não consegue resolver endereços ou acessar as operações de segurança do Google, execute o seguinte comando:
nslookup malachiteingestion-pa.googleapis.com
Se o comando falhar, entre em contato com a equipe de rede para resolver o problema.
Possível causa 2: firewall
Para verificar se o firewall local está bloqueando a comunicação entre as operações de segurança do Google e o encaminhador, execute 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
Para verificar se o problema é de tamanho de buffer, procure 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 forwarder.
Aumente o tamanho do buffer atualize 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 recebem 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á atendendo a essa porta e que você precisa consultar o administrador de rede.
Se a saída do comando indicar que o host está ouvindo 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 comandos abaixo com base na configuração da 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 Security Operations.
O encaminhador não recebe registros, mas o host recebe
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 do terminal no sistema, uma para configurar o encaminhador e outra para enviar uma mensagem de teste ao host.
No primeiro terminal (forwarder), inicie o Docker sem iniciar o forwarder 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 precisa 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 precisa escutar 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 registro 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 registro válidos são adicionados. Na mensagem de erro de exemplo, CISCO\_FIREWALL
não é
um tipo de registro válido. Para conferir uma lista de tipos de registro válidos, acesse Tipos de registro e analisadores padrão compatíveis.
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 a 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 do forwarder tem detalhes de chave secreta errados. Entre em contato com o suporte do Google Security Operations para resolver esse 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 o horário 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 conferir o caminho, execute
o comando pwd
.
Falha ao 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 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.
Você pode conferir o caminho executando 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 ser desativado por padrão. Para verificar se ele está desativado, execute o seguinte comando:
systemctl is-enabled docker
Para ativar o serviço do Docker e iniciá-lo 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 comando abaixo para configurá-lo para reiniciar automaticamente:
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.