Resolva problemas comuns do encaminhador Linux

Compatível com:

Este documento ajuda a reconhecer e resolver problemas comuns que pode enfrentar ao usar o encaminhador Linux do Google Security Operations.

O encaminhador não é iniciado

O encaminhador não é iniciado e está num ciclo de reinício contínuo com o seguinte erro nos registos:

F0510 06:17:39.013603 202 main_linux.go:153] open /opt/chronicle/external/*.conf: no such file or directory

Possível causa 1: mapeamento incorreto no ficheiro de configuração

Para resolver este problema, certifique-se de que está a transmitir o caminho correto para o ficheiro de configuração e a mapeá-lo para uma pasta externa.

Causa possível 2: o SELinux está ativado

  1. Verifique o ficheiro de configuração acedendo ao contentor 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_
    

    Este comando coloca-o numa shell a partir do contentor.

  2. Execute o seguinte comando:

    ls -lrt /opt.chronicle/external/
    

    Se receber um erro de autorização recusada, indica que o encaminhador não consegue abrir o ficheiro de configuração e, por isso, não consegue iniciar.

Para resolver este problema, faça o seguinte:

  1. Verifique o estado do SELinux executando o seguinte comando:

      sestatus
    
  2. Se o estado do SELinux estiver ativado no resultado, execute o seguinte comando para o desativar:

      setenforce 0
    

Os registos não chegam ao inquilino do Google SecOps

Causa possível 1: resolução de DNS

Verifique se o anfitrião não consegue resolver endereços ou alcançar o Google SecOps executando o seguinte comando:

  nslookup malachiteingestion-pa.googleapis.com

Se o comando falhar, contacte a sua equipa de rede para obter uma resolução.

Causa possível 2: firewall

Verifique se a firewall local está a bloquear a comunicação entre o Google SecOps e o encaminhador executando o seguinte comando:

  firewall-cmd --state

Se a firewall estiver ativada, desative-a executando o seguinte comando:

  systemctl stop firewalld

Causa possível 3: tamanho da memória intermédia

Verifique se é um problema de tamanho do buffer procurando o seguinte erro nos registos:

Memory ceiling (1073741824) reached, freeing a batch from the backlog

Para resolver este problema, faça o seguinte:

  1. Ative a compressão no ficheiro de configuração do encaminhador.

  2. Aumente o tamanho do buffer atualizando os parâmetros max_memory_buffer_bytes e max_file_buffer_bytes no ficheiro de configuração. Estes parâmetros indicam a capacidade de armazenamento de lotes de tarefas pendentes que são armazenados na memória ou no disco.

O encaminhador e o anfitrião não estão a receber registos

Se o anfitrião e o encaminhador não receberem registos, verifique o estado da porta executando o seguinte comando para cada porta:

  netstat -a | grep PORT

Substitua PORT pelo ID da porta que quer verificar.

Se o comando não fornecer qualquer saída, indica que o anfitrião não está a ouvir nessa porta e deve consultar o administrador de rede.

Se o resultado do comando indicar que o anfitrião está a ouvir numa porta e o encaminhador ainda não estiver a receber registos, faça o seguinte:

  1. Pare o Docker executando o seguinte comando:

    ​​docker stop cfps
    
    
  2. Execute um dos seguintes comandos com base na configuração da sua rede.

    Para TCP:

    nc -l PORT
    

    Para UDP:

    nc -l -u PORT
    

    Substitua PORT pelo ID da porta para o qual quer resolver problemas.

  3. Reinicie o serviço externo e verifique se o problema está resolvido. Se o problema persistir, [contacte o apoio técnico do Google SecOps.

O encaminhador não está a receber registos, mas o anfitrião está a receber registos

Se o anfitrião estiver a receber registos, mas o encaminhador não, indica que o encaminhador não está a ouvir na porta especificada no ficheiro de configuração.

Para resolver este problema, faça o seguinte:

  1. Abra duas janelas de terminal no seu sistema, uma para configurar o encaminhador e outra para enviar uma mensagem de teste para o anfitrião.

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

      nc -l PORT
      

      Substitua PORT pelo ID da porta para o qual quer resolver problemas.

  2. No segundo terminal (anfitrião), envie a mensagem de teste na porta executando o seguinte comando:

    echo "test message" | nc localhost PORT
    

    Substitua PORT pelo ID da porta para o qual quer resolver problemas.

  3. Execute novamente o comando docker. Especifique a flag -p com as portas nas quais o encaminhador deve 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 ficheiro de registo do encaminhador

Pode ver os registos do encaminhador executando o seguinte comando:

  sudo docker logs cfps

O pedido contém um argumento inválido

O ficheiro de registo 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:

Este erro pode ocorrer quando é adicionado um tipo de registo inválido. Certifique-se de que são adicionados apenas tipos de registos válidos. Na mensagem de erro de exemplo, CISCO\_FIREWALL não é um tipo de registo válido. Para ver uma lista dos tipos de registos válidos, visite o artigo Tipos de registos compatíveis e analisadores predefinidos.

Não é possível encontrar o servidor

O ficheiro de registo 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:

Contacte a sua equipa de rede para garantir que a rede está a funcionar.

Assinatura JWT inválida

O ficheiro de registo 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:

Este erro pode ocorrer quando um ficheiro de configuração do encaminhador tem detalhes da chave secreta incorretos. Contacte o apoio técnico da Google SecOps para ajudar a resolver este problema.

O token tem de ser um token de curta duração

O ficheiro de registo 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:

Este erro pode ocorrer quando os relógios do sistema do anfitrião e do servidor não estão sincronizados. Ajuste a hora no anfitrião ou experimente usar o NTP para sincronizar os relógios.

Esse ficheiro ou diretório não existe

O ficheiro de registo 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:

Este erro pode ocorrer quando o encaminhador é iniciado com o mapeamento de unidade errado. Use o caminho completo do diretório no ficheiro de configuração (pode obter o caminho executando o comando pwd).

Não foi possível obter o ID de cliente do ficheiro de configuração

O ficheiro de registo 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:

Este erro é causado por um mapeamento incorreto ou se o ficheiro de configuração não estiver presente no diretório. Use o caminho completo do diretório no ficheiro de configuração (pode obter o caminho executando o comando pwd). Certifique-se de que o comando docker run correto é executado e que o ficheiro de configuração existe na seguinte localização:

    gcr.io/chronicle-container/cf_production_stable

O seguinte exemplo de código 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 Docker úteis

  • Pode recolher informações adicionais sobre a instalação do Docker através do seguinte comando:

    docker info
    
  • O serviço Docker pode estar desativado por predefinição. Para verificar se está desativado, execute o seguinte comando:

    systemctl is-enabled docker
    
  • Para ativar o serviço 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
    
  • Quando iniciar um encaminhador, execute o seguinte comando para definir o encaminhador para reiniciar automaticamente:

    sudo docker run --restart=always `IMAGE_NAME`
    

    IMAGE_NAME é o nome da imagem do encaminhador.

  • Para verificar o estado e os detalhes do serviço 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 tiver problemas com o Docker, a equipa de apoio técnico do Google SecOps pode pedir o resultado deste comando para ajudar e depurar o problema.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais da Google SecOps.