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