Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

06 - Telnet (23) - Histórico e Limitações

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Telnet (porta 23) — Histórico e Limitações

1. Definição

O Telnet (TELetype NETwork) é um protocolo da camada de aplicação, definido na RFC 854 (1983), que permite a um terminal acessar remotamente um computador como se estivesse localmente conectado. Usa TCP na porta 23 e oferece um canal bidirecional interativo com um shell remoto. Foi o primeiro protocolo padronizado da ARPANET (RFC 97, 1971) e durante três décadas foi o padrão de fato para administração remota de servidores, roteadores e mainframes.

Hoje, o Telnet é considerado obsoleto e inseguro para acesso remoto administrativo, substituído universalmente pelo SSH (RFC 4251, 2006) a partir dos anos 2000. Ainda encontra uso legítimo em testes de conectividade TCP (substituto do netcat), em dispositivos embarcados antigos (routers, switches legados, impressoras) e em ambientes isolados (laboratórios, redes out-of-band).

Características Técnicas

Atributo Valor
RFC base 854 (1983), sucessoras 855-861
Porta TCP 23
Transporte TCP (orientado a conexão, confiável)
Criptografia Nenhuma
Autenticação Usuário/senha em texto puro
Modelo Cliente/servidor, terminal virtual (NVT)
Encoding ASCII 7-bit (NVT), negociável para 8-bit
Multiplexação Não (conexão 1:1)
Tamanho máximo de linha Negociado (geralmente 512 bytes)

2. Contexto Histórico

O Telnet precede a própria internet. Em 1969, na ARPANET, o primeiro comando de login remoto foi implementado para permitir que pesquisadores acessassem computadores distantes. A padronização formal veio com a RFC 97 (1971) e a consolidação na RFC 854 (1983), que define a Network Virtual Terminal (NVT) — uma abstração de terminal que permite interoperabilidade entre sistemas heterogêneos (IBM mainframes, PDP-11 Unix, VMS).

Linha do Tempo

Ano Evento
1969 Primeiro login remoto na ARPANET (UCLA → SRI)
1971 RFC 97 — primeira especificação Telnet
1983 RFC 854 — padronização do Telnet moderno com NVT
1983 RFC 855-861 — opções (Negociações Telnet)
1995 Tatu Ylönen lança SSH 1.0 (substituto seguro)
2000 SSH 2.0 (RFC 4251) consolida substituição
2000s Provedores e vendors desativam Telnet por padrão
2010s CISCO, Juniper desabilitam Telnet em novos equipamentos
Hoje Apenas testes de porta, dispositivos legados

Por que o Telnet dominou por tanto tempo? Porque a internet original era uma rede de confiança entre pesquisadores e militares, sem adversários na rede. A necessidade de criptografia só emergiu quando a internet se massificou nos anos 1990 e ataques de sniffing se tornaram triviais.

3. Arquitetura — Network Virtual Terminal (NVT)

A NVT é uma abstração de um terminal "mínimo comum" — um terminal de impressão imaginário com teclado e papel, operando em ASCII 7-bit. O cliente Telnet traduz as teclas locais para NVT; o servidor traduz NVT para o terminal real do sistema operacional. Isso garante interoperabilidade entre sistemas com terminais diferentes (VT100, ANSI, IBM 3270).

Negociação de Opções (IAC)

O Telnet usa o byte 0xFF (255) como Interpret As Command (IAC) para inserir comandos de controle no fluxo de dados. Após IAC, vêm o código de comando e opcionalmente opções:

Comando Código Função
IAC 255 Início de comando
DONT 254 Pedir para desabilitar opção
DO 253 Pedir para habilitar opção
WONT 252 Recusar habilitar opção
WILL 251 Aceitar habilitar opção
SB 250 Início de sub-negociação
SE 240 Fim de sub-negociação

Opções Comuns

Código Opção Função
0 Binary Transmission Modo 8-bit
1 Echo Servidor ecoa caracteres
3 Suppress Go Ahead Modo caractere-a-caractere
24 Terminal Type Negociar tipo (VT100, xterm)
31 Window Size Negociar tamanho (NAWS)
34 Linemode Modo linha (em vez de char)

Exemplo de negociação capturada: servidor envia IAC DO 24 ("Você suporta Terminal Type?"), cliente responde IAC WILL 24 ("Sim"), servidor envia IAC SB 24 1 IAC SE ("Qual seu tipo?"), cliente responde IAC SB 24 0 XTERM IAC SE ("Sou xterm").

4. Limitações e Vulnerabilidades

O Telnet é inaceitável em redes modernas por questões fundamentais de segurança:

1. Senhas em Texto Puro

Todo o tráfego — comandos USER, PASS e a sessão inteira de shell — viaja em ASCII legível. Qualquer sniffer na rota (Wireshark, tcpdump, ettercap) captura credenciais instantaneamente:

$ tcpdump -A -i eth0 port 23
12:34:56 IP cliente.54321 > servidor.telnet: ...
..USER admin..
..PASS s3nha123..
..ls -la..

2. Sem Integridade

Um atacante na rota (MITM) pode alterar comandos em trânsito — por exemplo, injetar rm -rf / em uma sessão de root.

3. Sem Autenticidade do Servidor

O cliente não valida a identidade do servidor. Qualquer máquina pode se passar por um servidor Telnet e capturar senhas (ataque de honeypot).

4. Sem Forward Secrecy

Mesmo que o tráfego seja capturado e armazenado hoje, se a senha não for trocada, a captura histórica permite acesso anos depois.

5. Ataques Específicos

  • Telnet Bounce: usar um servidor Telnet como proxy para mascarar origem de ataques.
  • Session Hijacking: sequestrar sessão TCP via ARP spoofing + injeção de pacotes.
  • Brute-force sem rate-limit: servidores Telnet antigos não têm proteção contra força bruta.

5. Por que foi Substituído pelo SSH

O SSH (Secure Shell), lançado em 1995 por Tatu Ylönen em resposta a um sniffer que capturou 30.000 senhas na universidade de Helsinki, resolve todas as limitações do Telnet:

Característica Telnet SSH
Criptografia Nenhuma AES, ChaCha20, Curve25519
Autenticação senha Texto puro Cifrada no canal
Autenticação chave pública Não Sim (Ed25519, RSA)
Integridade Nenhuma HMAC, Poly1305
Forward do agente Não Sim (com cautela)
Port forwarding Não Sim (-L, -R, -D)
Túnel X11 Não Sim
SFTP/SCP Não Sim
Auditabilidade Limitada Logs ricos (auth.log)
Compliance (PCI, LGPD) Falha Conforme

A migração Telnet → SSH nos anos 2000 foi um dos marcos de segurança da internet. Vendors como Cisco desabilitaram Telnet por padrão em novos equipamentos a partir de 2010.

6. Uso Moderno Legítimo

Apesar de obsoleto para administração, o Telnet ainda tem nichos de uso:

1. Teste de Conectividade TCP

telnet host porta verifica se uma porta TCP está aberta — substituto simples do nc (netcat):

telnet www.exemplo.com 80      # Testar web
telnet smtp.exemplo.com 25      # Testar SMTP
telnet db.exemplo.com 5432      # Testar PostgreSQL
# Conectado → porta aberta; Connection refused → fechada; Timeout → firewall drop

Nota: o comando nc (netcat) é hoje preferido para esse fim, por não enviar IAC nem tentar negociação NVT.

2. Dispositivos Embarcados Legados

Routers domésticos antigos, switches gerenciáveis antigos, impressoras de rede e equipamentos industriais frequentemente oferecem apenas Telnet como interface de gerenciamento. Nesses casos, deve-se isolar em rede separada (VLAN out-of-band) ou usar túnel SSH como wrapper.

3. Diagnóstico de Protocolos Textuais

Protocolos texto (SMTP, FTP, POP3, IMAP, HTTP/1.1) podem ser testados manualmente via Telnet para validar respostas, simular clientes e debugar. Por exemplo, conversar com POP3 (porta 110): enviar USER, PASS, LIST e QUIT para validar resposta de mensagens.

7. Diagnóstico de Problemas Comuns

Sintoma Causa Solução
Connection refused Porta 23 fechada no servidor Habilitar ou usar SSH
Connection timeout Firewall bloqueando Verificar ACL/FW
Caracteres aparecem duplicados Echo local + echo remoto stty -echo no servidor
Teclas seta não funcionam Tipo de terminal errado export TERM=xterm
\r\n aparece como ^M Tradução LF/CRLF Configurar cliente
Não consegue sair ^] para prompt Telnet quit ou ^D

Comandos do Cliente Telnet

Dentro de uma sessão Telnet, ^] (Ctrl+]) abre o prompt telnet>: ? lista comandos, status mostra estado, mode line/mode char alterna modos, toggle crlf traduz CRLF, quit sai.

8. Alternativas Modernas

Caso Substituto
Acesso shell remoto SSH (ssh user@host)
Teste de porta TCP nc -zv host porta, nmap, curl -v telnet://host:porta
Transferência de arquivos SFTP, SCP, rsync
Acesso a console serial screen /dev/ttyUSB0 115200, minicom, picocom
Debug de protocolos openssl s_client, nc, socat

9. Boas Práticas (quando inevitável)

Prática Recomendação
Desabilitar Telnet em servidores systemctl disable telnetd
Substituir por SSH Sempre que possível
Isolar dispositivos legados VLAN out-of-band dedicada
Wrapper SSH ssh -L 23:host-legado:23 bastion
Não usar em produção Jamais expor porta 23 à internet
Auditoria Monitorar tentativas de login
Senhas únicas Senhas distintas para Telnet legado
Documentar Marcar como débito técnico a migrar

10. Conclusão

O Telnet é uma das peças mais importantes da história da internet: por 30 anos foi o protocolo padrão para acesso remoto, permitindo que a ARPANET e a internet crescessem. Sua substituição pelo SSH nos anos 2000 marca a transição da "internet de confiança" para a "internet hostil" moderna. Hoje, deve ser visto como uma relíquia técnica: impossível para administração (senhas em texto puro, sem criptografia, sem integridade), mas ainda útil como ferramenta de diagnóstico (teste de porta TCP, debug de protocolos textuais) e em nichos legados (dispositivos embarcados antigos). Em novos projetos, sempre preferir SSH; manter Telnet apenas em ambientes isolados, documentados como dívida técnica a ser quitada com migração.