Gerenciamento inadequado de chaves SSH pode deixar sistemas vulneráveis a ataques hackers

Chaves Secure Shell (SSH) servem para autenticação segura em acesso remoto a servidores ou dispositivos. Contudo, o gerenciamento inadequado do recurso pode expor organizações a riscos cibernéticos, uma vez que ele pode fornecer nível de acesso privilegiado, como root do servidor.

Uma pesquisa realizada pela Dimensional Research com mais de 400 profissionais de tecnologia da informação (TI) aponta um cenário preocupante. Mais de 90% dos entrevistados afirmaram que não tinham um inventário completo de chaves SSH. Além disso, quase dois em cada três profissionais de segurança cibernética disseram que não alternam ativamente as chaves SSH.

Mesmo inativas e esquecidas, as chaves SSH podem fornecer backdoor para hackers se infiltrarem em servidores críticos e encontrarem mais chaves ocultas. Por isso, como em qualquer outro protocolo de segurança, é fundamental implementar as melhores práticas e aderir a padrões rígidos para as chaves SSH.

Veja como gerenciar de forma adequada as chaves SSH para reforçar a segurança do sistema.

Navegue pelo índice

    O que é chave SSH?

    cadeado em cima do teclado de um notebook
    (Fonte: Fly-D/Unsplash/Reprodução)

    Uma chave SSH permite a conexão remota a um dispositivo ou servidor que requer acesso privilegiado. O método é composto de uma chave pública e uma chave privada, que funcionam juntas para fornecer acesso seguro sem a necessidade de senhas.

    A chave pública é compartilhada com o servidor remoto, enquanto a chave privada é mantida pelo usuário. Quando alguém tenta se conectar ao servidor remoto, a chave pública criptografa a informação e a chave privada a descriptografa. Caso seja autenticado, o usuário pode acessar o servidor com os privilégios que lhe foram concedidos.

    A ferramenta é mais segura do que senhas, que são vulneráveis a interceptação ou a descoberta por tentativa e erro, porque só pode ser usada pelo detentor da chave privada.

    Quais são os principais elementos do protocolo Secure Shell?

    O protocolo Secure Shell envolve um servidor SSH, um host remoto responsável por receber as conexões de clientes e autenticar os usuários, e um cliente SSH, que é um aplicativo usado para a conexão, podendo ser um terminal integrado ao sistema operacional ou uma aplicação independente.

    Como já explicado, a técnica envolve chaves públicas e privadas que são usadas para autenticar o usuário e criptografar as informações trocadas entre o cliente e o servidor. O SSH usa algoritmos de criptografia para proteger essas informações.

    O acesso ao servidor só é permitido após a autenticação do usuário, por métodos como senhas, chaves públicas e liberação baseada em biometria. Toda a ferramenta é regida pelo protocolo SSH, um conjunto de regras e padrões para garantir a segurança da comunicação entre servidor e cliente.

    Como configurar as chaves SSH?

    imagem de três chaves coloridas
    (Fonte: Florian Berger/Unsplash/Reprodução)

    A configuração do SSH começa com a geração de um par de chaves a partir do comando “ssh-keygen”, que armazena uma chave pública e outra privada em arquivos específicos. A chave pública deve ser copiada para o servidor remoto, que será conectado, por meio do comando “ssh-copy-id”.

    Depois, é necessário configurar um servidor remoto para aceitar chaves SSH. Isso envolve modificar o arquivo de configuração do SSH (geralmente “/etc/ssh/sshd_config”) para permitir a autenticação por chave.

    Por fim, a conexão ao servidor remoto deve ser realizada com o comando “ssh”. Se tudo estiver correto, o usuário será conectado sem a solicitação de uma senha.

    Principais comandos de SSH

    Conheça alguns comandos importantes para configurar o SSH.

    • ssh-add: adiciona uma chave privada à lista de chaves gerenciadas pelo ssh-agent.
    • ssh-agent: inicia o ssh-agent, que mantém as chaves privadas em memória para que sejam usadas para se conectar a vários servidores sem precisar digitar a senha repetidamente.
    • scp: copia arquivos entre servidores ou do computador local para um servidor remoto.
    • sftp: transfere arquivos de forma segura entre servidores ou do computador local para um servidor remoto.
    • ssh-vault: criptografa e descriptografa arquivos usando o protocolo SSH.
    • sshuttle: conecta-se a uma rede privada remotamente usando o protocolo SSH.
    • sshpass: executa comandos SSH com senhas automatizadas.
    • ssh-keyscan: adiciona uma entrada para o arquivo de host do ssh para um servidor remoto.
    • ssh-keysign: assina arquivos de host do ssh para aumentar a segurança.
    • ssh-keygen -t rsa: gera uma nova chave RSA, usada como assinatura digital de documentos eletrônicos.
    • ssh-keygen -t rda: gera uma nova chave DSA, utilizada para garantir a integridade de dados e a autenticidade das mensagens.
    • ssh-keychain: gerencia chaves SSH.
    • ssh-keydist: distribui chaves SSH para servidores remotos.
    • ssh-keyimport: importa chaves SSH para o servidor.
    • ssh-keysub: substitui uma chave SSH existente por uma nova.
    • ls: sai da sessão SSH.

    Quais são as melhores práticas no uso de SSH?

    As melhores práticas de SSH são fundamentais para garantir a segurança e a integridade das conexões remotas. Os cuidados vão desde a escolha de senhas seguras e únicas para cada conta até o uso de comandos SSH confiáveis e atualizados, como “ssh-keygen”, “ssh-copy-id” e “ssh-add”, para garantir a segurança e a eficiência da conexão.

    O servidor SSH deve ser configurado com opções padrão de segurança, como desativar o acesso root remoto, limitar o acesso por IP e desativar o protocolo SSH 1.0. Todo o registro de acesso SSH precisa ser monitorado para detectar tentativas de invasão, e as tentativas de login devem ser limitadas.

    A mudança da porta padrão do SSH para uma porta não convencional pode dificultar a descoberta de ataques de força bruta. Antes de se conectar a um servidor, a integridade da chave pública deve ser verificada, principalmente se a origem da chave é desconhecida. Além disso, o servidor precisa estar atualizado com as últimas correções de segurança e novas versões.

    Conheça o servidor VPS com melhor preço e infraestrutura do Brasil

    Saiba mais

    Fonte: Devmedia, Linha de Código, Microsoft, National Institute of Standards and Technology (NITS)

    O autor

    Rodrigo Cardoso (Pokemaobr)

    Conhecido como Poke, é Streamer (Live "Coder") na Twitch, Web Developer e apresentador do talk show "The Velopers". Com bacharelado em Matemática e MBA em SOA, Poke atua como desenvolvedor e organizador de eventos de TI. É evangelista PHPSP e criador do PokePHP, focando em disseminar conteúdos técnicos e humor para a comunidade de desenvolvedores. Nas horas vagas, ele adora se conectar com a comunidade e compartilhar seu conhecimento de maneira divertida e informativa.

    Veja outros conteúdos desse autor