Resolver problemas comuns do encaminhador do Linux

Compatível com:

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

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

  2. 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:

  1. Para verificar o status do SELinux, execute o seguinte comando:

      sestatus
    
  2. 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:

  1. Ative a compactação no arquivo de configuração do forwarder.

  2. Aumente o tamanho do buffer atualize os parâmetros max_memory_buffer_bytes e max_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:

  1. Pare o Docker executando o seguinte comando:

    ​​docker stop cfps
    
    
  2. 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.

  3. 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:

  1. Abra duas janelas do terminal no sistema, uma para configurar o encaminhador e outra para enviar uma mensagem de teste ao host.

    1. 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
      
    2. Especifique a porta que o encaminhador precisa detectar:

      nc -l PORT
      

      Substitua PORT pelo ID da porta que você quer resolver.

  2. 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.

  3. 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.