SSH vs. Telnet: Escolha o Acesso Remoto Mais Seguro em 2023

Na era da conectividade digital, tanto usuários comuns quanto administradores de sistemas precisam de ferramentas que garantam a segurança, a proteção e a rapidez do acesso remoto.

Ao discutir métodos de acesso remoto, dois nomes se destacam: SSH e Telnet.

Mas qual deles é a melhor opção: SSH ou Telnet? Este artigo irá explorar qual protocolo oferece as melhores vantagens para acesso remoto, através de uma comparação detalhada entre SSH e Telnet.

O Que É Acesso Remoto?

O acesso remoto possibilita que usuários ou administradores acessem computadores ou outros dispositivos em redes, de qualquer localidade, utilizando a internet. Essa capacidade permite diversas operações, como transferência de arquivos, colaboração em projetos e garantia da segurança do tráfego de dados de aplicações.

O acesso remoto é essencial para a sobrevivência e o crescimento de organizações. Além disso, administradores necessitam de acesso remoto eficiente para gerenciar servidores, redes e aplicações sem a necessidade de estarem fisicamente presentes nos locais dos servidores.

O Que É SSH?

O Secure Shell, ou SSH, é um protocolo de rede que permite a comunicação segura entre computadores em redes não seguras.

Após o estabelecimento de uma conexão segura, o usuário ou administrador pode se conectar à máquina remota e executar aplicações, ou utilizar a conexão segura e criptografada para transferir arquivos através da rede.

O termo SSH engloba um conjunto de tecnologias e ferramentas que implementam o protocolo SSH. Para garantir a segurança do SSH, diversas tecnologias são aplicadas, como a autenticação de chave pública, comunicação de dados criptografados e autenticação com senhas robustas.

A empresa por trás do desenvolvimento do SSH é a Netscape Communications Corporation, contudo, o cientista da computação finlandês Tatu Ylonen criou os primeiros designs do SSH, após encontrar um “sniffer” de senhas em sua recém-criada rede.

Como Funciona o SSH?

O SSH substituiu protocolos de conectividade remota mais antigos, como Telnet, rlogin e rsh, que, apesar de populares, careciam de segurança. O SSH é tão eficiente que é usado preferencialmente em relação a protocolos de transferência de arquivos como cópia remota (rcp) e Protocolo de Transferência de Arquivos (FTP).

O SSH utiliza um modelo cliente-servidor, onde um cliente SSH se conecta a um servidor SSH.

  • O cliente SSH é um programa residente em um computador ou dispositivo que inicia o protocolo SSH. O cliente envia uma requisição ao servidor SSH e aguarda sua aceitação. O cliente SSH utiliza criptografia de chave pública para verificar e assegurar que está se conectando ao servidor correto, prevenindo que agentes maliciosos se passem por um servidor e roubem dados importantes do cliente.
  • O servidor SSH gerencia as conexões SSH e executa o serviço. Para aceitar requisições, o servidor SSH monitora constantemente a porta TCP 22 (por padrão), respondendo às solicitações recebidas. O servidor SSH também verifica e autentica o cliente usando autenticação de chave pública. Somente após uma autenticação bem-sucedida, o cliente obtém acesso ao sistema “host”.

O cliente e o servidor negociam o método de criptografia, desativando opções menos seguras. O SSH também permite múltiplas conexões, possibilitando realizar diversas tarefas simultaneamente (baixar, editar ou executar um programa) através de diversos canais em uma única conexão SSH.

A sintaxe do SSH é:

$ ssh [email protected]

O “user_name” é o nome de usuário para conectar ao “host”, que pode ser um endereço IP ou nome de domínio.

Em resumo, o fluxo do SSH envolve os seguintes passos:

  • O cliente SSH inicia uma conexão com um servidor SSH específico.
  • O servidor SSH recebe a conexão e envia sua chave pública ao cliente.
  • O cliente armazena a chave pública do servidor em seu arquivo host (para futuras conexões).
  • O servidor e o cliente negociam e estabelecem os parâmetros da conexão.
  • O SSH oferece uma forte opção de conectividade com segurança robusta e proteção da integridade dos dados. Também segue uma padronização IETF para melhor implementação e se mantém íntegro há mais de 15 anos.

    Para um entendimento mais técnico do SSH, consulte o documento de padronização SSH RFC 4253. Além disso, você pode explorar o artigo do etechpt.com sobre o funcionamento do SSH.

    O Que É Telnet?

    Telnet significa Teletype Network. É outro protocolo de rede popular para conectividade remota através de uma interface de linha de comando. Semelhante ao SSH, permite controle remoto e execução de ações. Contudo, carece das funcionalidades de segurança que o SSH oferece.

    Essa falta de segurança é devida ao fato de que, quando foi lançado em 1969, a maioria das comunicações era feita em uma rede local, que era mais segura em comparação com a internet não segura.

    Como Funciona o Telnet?

    O Telnet estabelece uma comunicação terminal a terminal baseada em texto entre o cliente e o servidor, utilizando um modelo cliente-servidor com conexões de oito bytes.

    Uma vez estabelecida a conexão, é possível realizar diversas operações no computador remoto, incluindo verificação de portas abertas, configuração de dispositivos, edição de arquivos e execução de programas.

    A sintaxe do Telnet é:

    $ telnet hostname port

    Para mais informações sobre Telnet, veja o artigo sobre comandos Telnet para testar e solucionar problemas de conexão.

    Quando e Onde Usar SSH?

    O SSH é principalmente usado para:

    • Administração remota de sistemas.
    • Execução remota de comandos.
    • Proteção do tráfego de aplicações.
    • Transferência de arquivos.

    Administradores também podem configurar sessões SSH automatizadas para tarefas repetitivas, como backups de rede, coleta de arquivos de log e manutenção periódica.

    O SSH deve ser utilizado para qualquer operação de conectividade remota, especialmente em redes não seguras como a internet. Ele também é uma excelente opção para redes locais, pois a segurança de uma rede local nunca é totalmente garantida.

    Quando e Onde Usar Telnet?

    Devido à sua falta de segurança, o Telnet deve ser evitado para conexões remotas em redes não seguras. No entanto, isso não significa que ele seja inútil.

    Você pode utilizar o Telnet para:

    • Solucionar problemas de SSH.
    • Solucionar problemas de FTP, SMTP e servidores Web.
    • Verificar se uma porta está aberta ou não.
    • Acessar redes de internet confiáveis.

    SSH x Telnet

    A seguir, uma comparação entre SSH e Telnet, levando em consideração diversos critérios. Para uma visão rápida, consulte a tabela comparativa.

    SSH Telnet
    Segurança Altamente seguro, com cliente e servidor negociando algoritmos de criptografia. Não seguro, sem mecanismos para proteger a conexão ou os pacotes.
    Autenticação Utiliza criptografia de chave pública para autenticação. Não possui mecanismo de autenticação, solicitando apenas nome de usuário/senha, que são transferidos sem proteção.
    Operação Utiliza a porta TCP 22 por padrão, podendo ser alterada para impedir acesso não autorizado. Utiliza a porta TCP 23 por padrão, podendo ser configurada para proteção contra acesso não autorizado.
    Modelo Modelo cliente-servidor. Modelo cliente-servidor.
    Velocidade de Transferência de Dados Tecnicamente mais lento que Telnet, mas dificilmente notável no uso cotidiano. Mais rápido que SSH, devido à ausência de protocolos de segurança.

    Segurança

    O SSH é seguro, mantendo a conexão protegida com protocolos de criptografia adequados. Já o Telnet é totalmente desprovido de medidas de segurança.

    No SSH, o cliente e o servidor negociam parâmetros de conexão, incluindo algoritmos de criptografia, configurando para bloquear algoritmos fracos e tornando a conexão o mais segura possível.

    Após estabelecer uma conexão TCP/UDP entre cliente e servidor, inicia-se uma tentativa de criar uma conexão segura.

    Para entender melhor a segurança do SSH, vamos analisar o conteúdo de um pacote SSH, composto por cinco componentes:

    • Comprimento do Pacote: 4 bytes, indicando o tamanho do pacote.
    • Quantidade de Preenchimento: 1 byte, indicando a quantidade de preenchimento do pacote.
    • Payload: os dados reais transferidos, de tamanho variável.
    • Preenchimento: bytes aleatórios combinados com o payload para maior criptografia.
    • Código de Autenticação da Mensagem: um código para validar a autenticidade do pacote, assegurando que os dados não foram alterados.

    Quando o SSH utiliza criptografia, apenas o comprimento do pacote e o código de autenticação da mensagem ficam visíveis. O cliente e o servidor negociam os parâmetros de conexão através de um código de autenticação de mensagem. Além disso, pacotes SSH podem ser compactados usando algoritmos de compressão.

    O Telnet carece de segurança e realiza autenticação insegura para conectar cliente e servidor, permitindo que agentes maliciosos interceptem os pacotes e comprometam a conexão.

    Autenticação

    O SSH é um protocolo seguro que utiliza criptografia de chave pública para autenticar cliente e servidor. Ele pode usar algoritmos criptográficos simétricos ou assimétricos para emparelhar chaves públicas e privadas.

    O Telnet, em contrapartida, não oferece proteção para autenticação, solicitando nome de usuário e senha antes de conectar, com os dados sendo enviados sem qualquer proteção, acessíveis a qualquer pessoa.

    Operação

    Em termos de operação, o SSH utiliza a porta TCP 22 por padrão, enquanto o Telnet utiliza a porta TCP 23. Portanto, ao utilizar esses protocolos sem especificar o número da porta, o comando tentará se conectar automaticamente às portas 22 e 23, respectivamente.

    Entretanto, essas portas são bem conhecidas e podem ser usadas por hackers para obter acesso não autorizado.

    Para evitar isso, é possível alterar as portas dos protocolos SSH e Telnet. Recomenda-se fechar as portas comuns e escolher portas entre 1024 e 65535.

    No Telnet, os comandos são enviados no formato Network Virtual Terminal (NVT), compreendido pelo servidor Telnet, sem qualquer criptografia ou autenticação.

    No SSH, após estabelecer a conexão cliente-servidor, uma sessão é gerada e identificada com uma chave de sessão, que criptografa o tráfego até o encerramento da sessão. O servidor também verifica o cliente usando geração de pares de chaves SSH, criando um canal de criptografia de ponta a ponta para transferência segura de dados.

    Modelo

    Tanto o SSH quanto o Telnet utilizam o modelo cliente-servidor, que oferece diversos benefícios, como:

    • Escalabilidade horizontal, onde o servidor pode adicionar mais recursos quando necessário.
    • Otimização dos clientes para entradas de dados adequadas.
    • Divisão do processamento entre cliente e servidor.

    Velocidade e Sobrecarga

    Para compreender completamente SSH e Telnet, é importante considerar seu impacto sobre a sobrecarga. Geralmente, o SSH possui mais sobrecarga do que o Telnet, mas essa diferença é quase imperceptível em cenários do mundo real.

    Tecnicamente, tanto Telnet quanto SSH fazem “rekeying” após uma hora de conexão ou 1 GB de dados transferidos.

    Em relação à largura de banda, o SSH possui mais sobrecarga, mas essa diferença é mínima e não impacta significativamente os usuários. Quanto à CPU do cliente e do servidor, a sobrecarga também é mínima, devido à forma como o padrão AES funciona e é implementado em conexões SSH.

    Em resumo, SSH e Telnet não apresentam diferenças visíveis em termos de velocidade ou sobrecarga, mas tecnicamente o SSH carrega uma sobrecarga um pouco maior em comparação com o Telnet.

    Casos de Uso de SSH e Telnet

    Nesta seção, exploraremos alguns casos de uso para SSH e Telnet.

    Casos de Uso do SSH:

    Os casos de uso incluem:

    • Execução remota de comandos.
    • Acesso seguro a recursos de máquinas remotas.
    • Transferência remota de arquivos.
    • Fornecimento remoto de atualizações de software.
    • Configuração de transferências automatizadas de arquivos ou realização de transferências manuais.

    Casos de Uso do Telnet:

    Os casos de uso incluem:

    • Solução de problemas de SSH.
    • Solução de problemas de FTP, SMTP e servidores Web.
    • Verificação de portas abertas.
    • Acesso a redes de internet confiáveis.

    Considerações Finais: Qual É o Melhor?

    O SSH é a melhor opção. É um protocolo de rede moderno e atualizado que garante o acesso remoto seguro. Até o momento, não foram encontradas brechas de segurança nele. Além disso, é fácil de usar e configurar.

    O Telnet, por sua vez, já teve seus dias de glória, tendo quase 50 anos. Entretanto, ainda é útil em alguns cenários atuais, como na solução de problemas de SSH ou verificação de portas abertas. Administradores podem utilizar o Telnet para diagnosticar problemas de rede.