Telnet

Telnet
Información sobre la plantilla
Diagrama Telnet .jpg
Concepto:TELecommunication NETwork. Es uno de los protocolos de red más antiguos de Internet.

Telnet (TELecommunication NETwork) es uno de los protocolos más antiguos de Internet, data de la época de ARPANET, y se utiliza para conectar ("login") con un equipo remoto a través de la Red, de forma que el ordenador cliente se comporta como una terminal conectada (on-line) con el ordenador remoto. Todo lo que se necesita es un cliente Telnet (un programa especial). Utilizando la terminología Informática anterior a la Web, diríamos que un cliente telnet es en realidad un programa de emulación de terminal para teleproceso adaptado al sistema de Internet, es decir, al protocolo TCP/IP

Introducción al protocolo Telnet

El protocolo Telnet es un protocolo de Internet estándar que permite conectar terminales y aplicaciones en Internet. El protocolo proporciona reglas básicas que permiten vincular a un cliente (sistema compuesto de una pantalla y un teclado) con un intérprete de comandos (del lado del servidor). El protocolo Telnet se aplica en una conexión TCP para enviar datos en formato ASCII codificados en 8 bits, entre los cuales se encuentran secuencias de verificación Telnet. Por lo tanto, brinda un sistema de comunicación orientado bidireccional (semidúplex) codificado en 8 bits y fácil de implementar.

El protocolo Telnet se basa en tres conceptos básicos:

  • el paradigma Terminal virtual de red (NVT);
  • el principio de opciones negociadas;
  • las reglas de negociación.

Éste es un protocolo base, al que se le aplican otros protocolos del conjunto TCP/IP (FTP, SMTP, POP3, etc.). Las especificaciones Telnet no mencionan la autenticación porque Telnet se encuentra totalmente separado de las aplicaciones que lo utilizan (el protocolo FTP define una secuencia de autenticación sobre Telnet). Además, el protocolo Telnet no es un protocolo de transferencia de datos seguro, ya que los datos que transmite circulan en la red como texto sin codificar (de manera no cifrada). Cuando se utiliza el protocolo Telnet para conectar un host remoto a un equipo que funciona como servidor, a este protocolo se le asigna el Puerto 23.

Excepto por las opciones asociadas y las reglas de negociación, las especificaciones del protocolo Telnet son básicas. La transmisión de datos a través de Telnet consiste sólo en transmitir bytes en el flujo TCP (el protocolo Telnet especifica que los datos deben agruparse de manera predeterminada —esto es, si ninguna opción especifica lo contrario— en un búfer antes de enviarse. Específicamente, esto significa que de manera predeterminada los datos se envían línea por línea). Cuando se transmite el Byte 255, el byte siguiente debe interpretarse como un comando. Por lo tanto, el byte 255 se denomina IAC (Interpretar como comando). Los comandos se describen más adelante en este documento.

Las especificaciones básicas del protocolo Telnet se encuentran disponibles en la RFC (petición de comentarios) 854.

Modos de operación

Para utilizar telnet, es muy importante tener en cuenta que el cliente telnet dispone de dos formas de operación: modo Comando y modo de uso normal. El modo comando permite utilizar una serie de órdenes que afectan al modo de operación, incluyendo conectar y desconectar.

Entre estos comandos están:

  • CLOSE Cierra la conexión Telnet con el ordenador remoto y vuelve al modo comando (si se inició en modo comando) o cierra la aplicación saliendo de Telnet.
  • QUIT Cierra la sesión Telnet. Si se está conectado a un equipo remoto, este comando cierra la conexión y a continuación cierra la aplicación Telnet.
  • SET ECHO Si no podemos ver lo que estamos tecleando, o por el contrario, lo vemos doble, este comando arregla la situación.
  • OPEN Este comando establece una conexión con un ordenador remoto.

En modo normal nuestro equipo se comporta como si fuese un teclado (modificado y remoto) del ordenador al que estamos conectados. Cada pulsación de tecla es enviada al equipo remoto, y lo que vemos en la pantalla es realmente el eco que, en respuesta a esa señal, nos envía el equipo remoto.

Cuando se está en modo normal y se desea pasar a modo comando (por ejemplo para terminar la sesión mediante QUIT), hay que enviar el carácter de escape. Esto se consigue generalmente pulsando simultáneamente la tecla Ctrl y el carácter [ (Ctrl + [), lo que interrumpe momentáneamente la sesión Telnet y nos coloca en modo comando. A su vez, si estamos en modo comando y pulsamos la tecla CR o Enter, salimos de él y volvemos a modo normal.

Telnet sólo sirve para acceder en modo terminal, es decir, sin gráficos, pero fue una herramienta muy útil para arreglar fallos a distancia, sin necesidad de estar físicamente en el mismo sitio que la máquina que los tenía. También se usaba para consultar datos a distancia, como datos personales en máquinas accesibles por Red, información bibliográfica, etc.

Aparte de estos usos, en general telnet se ha utilizado (y aún hoy se puede utilizar en su variante SSH) para abrir una Sesión con una máquina UNIX, de modo que múltiples usuarios con cuenta en la máquina, se conectan, abren sesión y pueden trabajar utilizando esa máquina. Es una forma muy usual de trabajar con sistemas UNIX.

Detalles

Teniendo en cuenta lo anterior, la primera acción para hacer telnet en un sistema remoto será conectarse (hacer "Login"). El programa cliente inicia una negociación con el host que pretendemos acceder; negociación que incluye el establecimiento de determinados métodos y características de la transmisión/servicio a utilizar. Para ello es necesario proporcionar al cliente varios datos iniciales que es necesario conocer:

Nota: La figura adjunta muestra el cuadro de diálogo que presenta el cliente Telnet v. 1.0 de Microsoft para realizar la conexión.

  • Nombre: Se refiere a la Dirección IP del Servidor, bien en forma numérica bien su forma URL. Por ejemplo: 192.168.0.1 o ltu.jovenclub.cu
  • Número de puerto: Indica el servicio concreto que se desea acceder dentro del servidor. Una dirección telnet con un número adicional de puerto, permite no solamente acceder al ordenador remoto, sino también acceder a un servicio o programa específico dentro de él. Salvo indicación en contrario, el número por defecto es el 23 (el que se utiliza normalmente para conectar a una cuenta de acceso de usuario). En el momento de la conexión, el número puede añadirse a continuación del nombre o en una casilla aparte, dependiendo del programa.
  • Tipo de terminal: La identificación del terminal es un acuerdo que utilizan tanto la máquina cliente como el servidor, referente a ciertas características y secuencias a utilizar. De esta forma se utiliza un terminal virtual, con independencia de cual sea realmente el terminal físicamente utilizado. Desde el punto de vista del cliente, la identificación debe hacerse en dos partes.
  • a: Indicado al programa cliente que se comporte como terminal virtual de un cierto tipo.

En MS Telnet v.1.0, esto se hace en: Terminal Preferencias Emulación. Puede elegirse dos tipos: 52 y 100/ANSI (si no tiene idea de que hacer al respecto elija esta última).

  • b: Indicando al servidor que tipo de terminal utilizaremos. Se trata de una cadena de caracteres que se envía al host durante el proceso de negociación de la conexión.

En el MS Telnet v.1.0, se indica en: Conectar, Sistema remoto, Tipo de terminal. Las opciones disponibles son las cadenas de caracteres típicas que un host espera durante esta negociación (la mas estándar es VT100).

  • Login: Nombre de usuario (que a veces se identifica con un servicio concreto). En algunos servicios no es necesario el login ni password, porque el servidor no los exige para el servicio en cuestión (por ejemplo, la primera vez que se accede a determinados juegos tipo MUD).
  • Password: Contraseña que autentifica al usuario. Para los servicios públicos que aceptan invitados (usuarios visitantes), puede ponerse la propia dirección de correo.
  • Log-off: El último paso al final de una sesión en un sistema remoto, es cerrarla antes de la desconexión física, con objeto de no dejar una sesión abierta indefinidamente en el anfitrión (que siempre consume recursos del sistema). La forma concreta depende del sistema. No existen reglas fijas, pero en algunos sistemas, en el login, junto con un mensaje de bienvenida se indica la palabra adecuada para desconectar. Por lo común es alguna de las siguientes:

BYE, LOGOFF, LOGOUT, QUIT, END, EXIT, STOP. CLOSE, precedido de la secuencia de escape. ABORT, precedido de la secuencia de escape (Úselo como último recurso).

Tanto Unix como Windows tienen su propio cliente: Telnet.exe. En el caso de Windows puede encontrarlo en el directorio C:\Windows. Este programa dispone de un buen fichero de ayuda, Telnet.chm, con todos los detalles necesarios para su operación.

Lo usual es que se trate de conectar con grandes ordenadores (mainframes, hosts, servers, etc), en empresas, universidades, centros de investigación y sitios análogos (máquinas Unix generalmente). Por tanto, no se trata de conectar con el ordenador del vecino por Internet (para esto existen otro tipo de herramientas). La razón de la conexión puede ser muy diversa, desde un investigador que quiere continuar la jornada de trabajo desde su domicilio, hasta un internauta que desea algún servicio en un host que solo puede ser accedido de esta forma, no son servicios de la Web (todavía).

La primera idea que es necesario tener en cuenta es que como hemos dicho, no se trata de conectarse a un PC, sino a máquinas grandes donde existen decenas, a veces centenares, de usuarios. Por razones de seguridad, estos sistemas no pueden ser accedidos por cualquiera. La operación se hace mediante la concesión de un derecho (cuenta de acceso) que concede el administrador del sistema, y que lleva implícita una serie de condiciones de la mas variada índole.

Por ejemplo: fechas y horas en que podemos conectar; directorios que podemos visitar/usar; si podemos grabar en ellos o solo leer; cuanta información podemos guardar (espacio de disco que nos conceden), etc. Para identificar a cada usuario con cuenta abierta en el sistema, se utiliza un nombre (nick name) que identifica al usuario o al servicio, y una clave de acceso (password) que lo autentifica.

Debería ser superfluo indicar que para hacer Telnet en un ordenador remoto, una vez establecida la comunicación, es imprescindible saber como operar en él. No tiene sentido conectar a una máquina remota sin conocer mínimamente su Sistema Operativo y el programa de aplicación que debemos utilizar.

Seguridad

Hay tres razones principales por las que el telnet no se recomienda para los Sistemas modernos desde el punto de vista de la seguridad:

  • Los Dominios de uso general del telnet tienen varias vulnerabilidades descubiertas sobre los años, y varias más que podrían aún existir.
  • Telnet, por defecto, no cifra ninguno de los datos enviados sobre la conexión (contraseñas inclusive), así que es fácil interferir y grabar las comunicaciones, y utilizar la contraseña más adelante para propósitos maliciosos.
  • Telnet carece de un esquema de autentificación que permita asegurar que la comunicación esté siendo realizada entre los dos anfitriones deseados, y no interceptada entre ellos.

Problemas de seguridad y SSH

Su mayor problema es de seguridad, ya que todos los nombres de usuario y contraseñas necesarias para entrar en las máquinas viajan por la Red como Texto plano (cadenas de texto sin Cifrar). Esto facilita que cualquiera que espíe el tráfico de la red pueda obtener los nombres de usuario y contraseñas, y así acceder él también a todas esas máquinas. Por esta razón dejó de usarse, casi totalmente, hace unos años, cuando apareció y se popularizó el SSH, que puede describirse como una versión cifrada de telnet -actualmente se puede cifrar toda la comunicación del protocolo durante el establecimiento de sesión (RFC correspondiente, en inglés- si cliente y servidor lo permiten, aunque no se tienen ciertas funcionalidad extra disponibles en SSH).

¿Dónde no utilizarlo?

En ambientes donde es importante la seguridad, por ejemplo en el Internet público, telnet no debe ser utilizado. Las sesiones de telnet no son cifradas. Esto significa que cualquiera que tiene acceso a cualquier Router, Switch, o Gateway localizado en la Red entre los dos anfitriones donde se está utilizando telnet puede interceptar los paquetes de telnet que pasan cerca y obtener fácilmente la información de la Conexión y de la contraseña (y cualquier otra cosa que se Mecanografía) con cualesquiera de varias utilidades comunes como tcpdump y Wireshark.

Estos defectos han causado el abandono y depreciación del protocolo telnet rápidamente, a favor de un protocolo más seguro y más funcional llamado SSH, lanzado en 1995. SSH provee de toda la funcionalidad presente en telnet, la adición del Cifrado fuerte para evitar que los datos sensibles tales como contraseñas sean interceptados, y de la autentificación mediante llave pública, para asegurarse de que el computador remoto es realmente quién dice ser.

Los expertos en Seguridad computacional, tal como el instituto de SANS, y los miembros del newsgroup de comp.os.linux.security recomiendan que el uso del telnet para las conexiones remotas debería ser descontinuado bajo cualquier circunstancia normal.

Cuando el telnet fue desarrollado inicialmente en 1969, la mayoría de los usuarios de computadoras en Red estaban en los servicios informáticos de instituciones académicas, o en grandes instalaciones de investigación privadas y del gobierno. En este ambiente, la seguridad no era una preocupación y solo se convirtió en una preocupación después de la explosión del [[ancho de banda de los años 90. Con la subida exponencial del número de gente con el acceso al Internet, y por la extensión, el número de gente que procura crackear los servidores de otra gente, telnet podría no ser recomendado para ser utilizado en redes con conectividad a Internet.

Telnet en la actualidad

Hoy en día este protocolo también se usa para acceder a los BBS, que inicialmente eran accesibles únicamente con un módem a través de la Línea telefónica. Para acceder a un BBS mediante telnet es necesario un Cliente que dé soporte a gráficos ANSI y protocolos de transferencia de ficheros. Los gráficos ANSI son muy usados entre los BBS. Con los Protocolos de transferencia de ficheros (el más común y el que mejor funciona es el ZModem) podrás enviar y recibir ficheros del BBS, ya sean programas o juegos o ya sea el correo del BBS (correo local, de FidoNet u otras Redes).

Algunos clientes de telnet (que soportan gráficos ANSI y protocolos de transferencias de ficheros como Zmodem y otros) son mTelnet!, NetRunner, Putty, Zoc, etc..

Véase también

Fuentes