Telnet y SSH

Cuando se trata de conectarse y administrar sistemas remotos, dos protocolos fundamentales surgen en el mundo de la informática: SSH y Telnet. Ambos permiten la comunicación entre dispositivos a través de una red, pero presentan diferencias esenciales en términos de seguridad y funcionalidad. En este artículo, exploraremos qué son SSH y Telnet, cómo se utilizan en entornos Linux y Windows, y cómo difieren en sus características técnicas.

Tanto SSH como Telnet pueden utilizarse en sistemas operativos Linux y Windows para acceder y administrar dispositivos remotos. Sin embargo, debido a las diferencias en seguridad y funcionalidad, se recomienda encarecidamente el uso de SSH en lugar de Telnet siempre que sea posible.

En resumen, SSH es la elección más segura y recomendada para la comunicación y administración remota en entornos Linux y Windows. Proporciona cifrado de datos y autenticación sólida, protegiendo la información de posibles amenazas. Por otro lado, Telnet, aunque todavía se encuentra en uso en algunos casos, es menos seguro debido a la falta de cifrado en la transmisión de datos. Siempre es importante priorizar la seguridad de tus comunicaciones y elegir la opción que mejor se adapte a tus necesidades.

Puedes utilizar SSH y Telnet para conectarte a una variedad de dispositivos y sistemas remotos en una red.

Conexiones

  • Servidores Linux y Unix: Puedes conectarte a servidores Linux y sistemas Unix para administrarlos, ejecutar comandos, transferir archivos y realizar tareas de configuración.
  • Dispositivos de Red: Muchos dispositivos de red, como enrutadores, switches y firewalls, admiten conexiones SSH para su administración y configuración.
  • Hospedaje en la Nube: Muchos proveedores de servicios en la nube permiten el acceso SSH a las instancias virtuales, lo que te permite administrar tus recursos de manera segura.
  • Máquinas Virtuales: Si estás ejecutando máquinas virtuales en plataformas como VMware o VirtualBox, puedes conectarte a ellas a través de SSH.
  • Git Repositorios: Puedes utilizar SSH para acceder y administrar repositorios Git, lo que facilita la colaboración en proyectos de desarrollo.

Telnet

Telnet, por otro lado, es un protocolo más antiguo que permite la comunicación entre dispositivos a través de la red, pero carece del nivel de seguridad que ofrece SSH. Los datos transmitidos a través de Telnet no están cifrados, lo que puede dejarlos vulnerables a ataques.

El puerto por defecto utilizado por Telnet es el puerto 23.

Para conectarse a un sistema remoto utilizando Telnet desde un terminal, utiliza el siguiente comando:
Por ejemplo:

Desventajas de Telnet:

  • Falta de cifrado, lo que hace que los datos sean susceptibles a interceptaciones maliciosas.
  • Contraseñas transmitidas en texto plano, lo que las hace vulnerables.
  • Riesgo de ataques de "hombre en el medio" (Man-in-the-Middle).

SSH (Secure Shell)

SSH (Secure Shell) es un protocolo de red que proporciona un nivel de seguridad superior a la comunicación remota en comparación con Telnet. SSH establece una conexión cifrada entre dos dispositivos, lo que significa que los datos transmitidos están protegidos de posibles ataques o interceptaciones.

El puerto por defecto utilizado por SSH es el puerto 22.

Para conectarse a un sistema remoto utilizando SSH desde un terminal, utiliza el siguiente comando:
Por ejemplo:

Ventajas de SSH:

  • Cifrado de datos para una comunicación segura.
  • Autenticación sólida a través de contraseñas o claves públicas/privadas.
  • Posibilidad de transferir archivos de manera segura utilizando el comando scp.

Clave Privada y Clave Pública en SSH

En SSH, se utilizan pares de claves criptográficas: una clave privada y una clave pública. Estas claves trabajan juntas para establecer conexiones seguras y autenticadas.

Clave Privada: La clave privada es una pieza secreta y confidencial de información que se almacena en el sistema del usuario o cliente SSH. Nunca debe ser compartida ni revelada a terceros. Esta clave se utiliza para desbloquear información cifrada que se ha codificado con la clave pública correspondiente. La clave privada es esencial para demostrar la identidad del usuario.

Clave Pública: La clave pública es la contraparte de la clave privada y se comparte con otros sistemas o servidores a los que deseas acceder de manera segura. Puede ser compartida libremente sin comprometer la seguridad del sistema. Cuando se establece una conexión SSH, el servidor utiliza la clave pública para cifrar datos que solo pueden ser desbloqueados por la clave privada correspondiente.

Funcionamiento del Proceso de Autenticación

  1. Generación de las Claves: El usuario genera un par de claves (pública y privada) en su sistema local utilizando herramientas como ssh-keygen.
  2. Distribución de la Clave Pública: La clave pública se copia en el servidor remoto al que se desea acceder. Usualmente se agrega al archivo ~/.ssh/authorized_keys en el servidor.
  3. Inicio de Sesión Seguro: Cuando el usuario intenta iniciar sesión en el servidor remoto, el servidor envía un desafío cifrado utilizando la clave pública del usuario.
  4. Autenticación del Cliente: El cliente SSH utiliza su clave privada para descifrar el desafío y lo devuelve al servidor.
  5. Verificación en el Servidor: El servidor compara el desafío recibido con su propia versión cifrada utilizando la clave pública del usuario.
  6. Conexión Establecida: Si el desafío coincide, el servidor sabe que el cliente tiene la clave privada correspondiente y permite la conexión segura.

Ventajas de las Claves Públicas y Privadas

  • Mayor Seguridad: Las claves públicas y privadas proporcionan una autenticación más segura que las contraseñas. No se envían contraseñas por la red, lo que minimiza el riesgo de interceptación.
  • Sin Contraseñas: Los usuarios no necesitan ingresar contraseñas cada vez que se conectan, lo que agiliza el proceso y reduce la posibilidad de ataques de fuerza bruta.
  • Fácil Gestión: Las claves públicas pueden ser distribuidas en varios servidores, lo que permite el acceso seguro a múltiples sistemas sin la necesidad de recordar diferentes contraseñas.
Esta es una forma de conectarse por SSH utilizando la clave privada del usuario de un sistema al que se desea acceder. Normalmente, estas claves se encuentran en la ruta /home/usuario/.ssh, donde se valida que sea la misma clave que se proporcionó.

Es importante tener en mente que para una clave privada 'id_rsa' generada con el comando ssh-keygen, es necesario modificar los permisos para poder acceder al servidor remoto con el comando chmod 600 id_rsa.

Comandos adicionales

Realiza un reenvío de puerto (port forwarding), el cual abre un puerto interno del servidor que no es accesible desde Internet, en la red local de nuestra computadora, desde la cual nos conectamos mediante la dirección de localhost (127.0.0.1). Este puerto podría estar siendo utilizado para un sitio web, una base de datos u otro servicio. En caso de ser un sitio web, se podría acceder ingresando '127.0.0.1:8000' en nuestro navegador.
Descarga un archivo ubicado en la ruta indicada del servidor, en este caso /usr/lib/apache2, a la carpeta en la cual nos encontramos ubicados en nuestra computadora.
Este comando SCP utiliza el archivo de clave privada "id_rsa" para establecer una conexión segura a través del puerto 2222 (el puerto default de ssh es el 22, pero en caso de usar otro, se debe especificar) con el servidor en la dirección IP 10.129.128.214. Luego, copia el archivo "nc" ubicado en /usr/bin/nc desde la máquina local al directorio /tmp/ en el servidor remoto, permitiendo la transferencia segura de archivos entre sistemas.

¿Qué es PuTTY?

PuTTY es una aplicación de código abierto ampliamente utilizada que ofrece una interfaz gráfica intuitiva para conectar de manera segura a sistemas remotos a través de SSH y Telnet en sistemas Windows.

Características de PuTTY:

  • Interfaz fácil de usar para establecer conexiones SSH y Telnet.
  • Admite una variedad de autenticaciones, incluidas contraseñas y claves públicas.
  • Capacidad de transferir archivos de manera segura a través de SCP y SFTP.
  • Configuraciones avanzadas, como túneles SSH (SSH tunneling) para redireccionamiento de puertos.

Uso de PuTTY:

  1. Descarga PuTTY desde su sitio web oficial e instálalo en tu sistema Windows.
  2. Abre PuTTY y completa los campos requeridos, como la dirección IP o el nombre de host del sistema remoto.
  3. Selecciona el protocolo (SSH o Telnet) y configura las opciones de autenticación.
  4. Haz clic en "Abrir" para establecer la conexión.