El protocolo Secure Shell (SSH) establece conexiones remotas encriptadas entre los ordenadores. También habilita la tunelización.
Después de leer este artículo podrás:
Contenido relacionado
Suscríbete a theNET, el resumen mensual de Cloudflare sobre las ideas más populares de Internet.
Copiar el enlace del artículo
El protocolo Secure Shell (SSH) es un método para enviar comandos de forma segura a un ordenador mediante una red no segura. SSH utiliza criptografía para autenticar y encriptar las conexiones entre dispositivos. SSH también permite la tunelización, o redireccionamiento de puertos, que es cuando los paquetes pueden cruzar las redes que de otro modo no podrían cruzar. SSH se utiliza a menudo para controlar los servidores a distancia, para gestionar infraestructuras y para transferir archivos.
Cuando viaja, el propietario de una tienda puede dar instrucciones a sus empleados desde lejos para asegurarse de que la tienda opere sin problemas mientras él no está. Del mismo modo, el SSH permite a los administradores gestionar servidores y dispositivos desde lejos. Los protocolos antiguos de gestión remota, como Telnet, transportaban los comandos de los administradores de manera que cualquiera pudiera verlos. (Imagina que los empleados pusieran al propietario de la tienda en el altavoz durante una llamada; todos los clientes de la tienda podrían oír las instrucciones privadas). A diferencia de Telnet, SSH es seguro — de ahí el nombre de Secure Shell.
Conexiones remotas encriptadas: el SSH establece una conexión entre el dispositivo de un usuario y una máquina lejana, a menudo un servidor. Utiliza encriptación para codificar los datos que atraviesan la conexión. Una parte interceptora solo encontraría algo como estática — datos aleatorios que no significan nada a menos que se descifren. (SSH utiliza métodos de encriptación que hacen que la desencriptación sea demasiado difícil para los extraños).
Capacidad de tunelizar: en redes, la tunelización es un método para mover paquetes a través de una red al utilizar un protocolo o ruta que normalmente no podrían usar. La tunelización funciona envolviendo paquetes de datos* con información adicional —llamados encabezados— para cambiar su destino. Los túneles de SSH utilizan una técnica conocida como reenvío de puertos para enviar paquetes de una máquina a otra. El reenvío de puerto SSH se explica en mayor detalle a continuación.
*Todos los datos que atraviesan una red se dividen en trozos más pequeños. Estos trozos se denominan "paquetes".
SSH se ejecuta sobre el conjunto de protocolo TCP/IP, del que depende gran parte de Internet. TCP/IP transporta y distribuye paquetes de datos. El uso de TCP es una de las diferencias entre SSH y otros protocolos de tunelización, algunos de los cuales utilizan en su lugar el UDP, que es más rápido pero menos fiable.
Estas claves "asimétricas" —llamadas así porque tienen valores diferentes— también hacen posible que los dos lados de la conexión negocien claves simétricas idénticas y compartidas para su posterior encriptación a través del canal. Una vez finalizada esta negociación, las dos partes utilizan las claves simétricas para encriptar los datos que intercambian.
En una conexión de SSH, ambas partes tienen un par de clave pública/privada y cada parte autentica a la otra utilizando estas claves. Esto diferencia al SSH de HTTPS, que en la mayoría de las implementaciones solo verifica la identidad del servidor web en una conexión cliente-servidor. (Otras diferencias incluyen que HTTPS no suele permitir al cliente acceder a la línea de comandos del servidor y que los firewalls a veces bloquean SSH, pero casi nunca HTTPS).
Aunque la criptografía de clave pública autentica los dispositivos conectados en SSH, un ordenador debidamente protegido seguirá requiriendo la autenticación de la persona que utiliza el SSH. A menudo, esto adopta la forma de introducir un nombre de usuario y una contraseña.
Una vez completada la autenticación, la persona puede ejecutar los comandos en la máquina remota, como si lo estuviera haciendo en su propia máquina local.
El reenvío de puertos es similar a reenviar un mensaje entre dos personas. Bob puede enviar un mensaje a Alicia, quien a su vez se lo pasa a Dave. Del mismo modo, el reenvío de puertos envía paquetes de datos dirigidos a una dirección IP y a un puerto de una máquina a una dirección IP y a un puerto de una máquina diferente.
Por ejemplo, imagina que un administrador quiere hacer un cambio en un servidor dentro de una red privada que gestiona y quiere hacerlo desde una ubicación remota. Sin embargo, por razones de seguridad, ese servidor solo recibe paquetes de datos de otros ordenadores de la red privada. En cambio, el administrador podría conectarse a un segundo servidor dentro de la red —que esté abierto a recibir tráfico de Internet— y luego utilizar el reenvío de puertos SSH para conectarse al primer servidor. Desde la perspectiva del primer servidor, los paquetes de datos del administrador se original del interior de la red privada.
Los sistemas operativos Linux y Mac vienen con el SSH incorporado. Las máquinas Windows pueden requerir que se tenga instalada una aplicación de cliente SSH. En ordenadores Mac y Linux, los usuarios pueden abrir la aplicación Terminal e introducir directamente los comandos SSH.
Técnicamente, el SSH puede transmitir cualquier dato arbitrario a través de una red y la tunelización SSH puede configurarse para una infinidad de propósitos. Sin embargo, los casos de uso de SSH más comunes incluyen:
El puerto 22 es el puerto por defecto para el SSH. A veces, los firewalls pueden bloquear el acceso a determinados puertos en los servidores detrás del firewall, pero dejar abierto el puerto 22. Por lo tanto, el SSH es útil para acceder a los servidores situados al otro lado del firewall: los paquetes dirigidos al puerto 22 no se bloquean y pueden reenviarse a cualquier otro puerto.
Como el acceso SSH suele ir acompañado de privilegios de nivel elevado, como la capacidad de instalar aplicaciones en un servidor o eliminar, modificar o extraer datos, el acceso SSH puede ser perjudicial en manos de un atacante, o incluso de una persona con acceso a la información bien intencionada. El SSH se ha utilizado en una serie de ataques documentados para exfiltrar datos privados, abrir rutas de puerta trasera en una red segura y obtener acceso raíz a los servidores.
El SSH también puede atravesar firewalls que dejan el puerto 22 desbloqueado (como hacen muchos), lo que permite a los atacantes ingresar a redes seguras.
Los atacantes también pueden robar claves SSH para acceder a computadoras y servidores privados. De hecho, la gestión de claves SSH es un importante problema de seguridad para las grandes organizaciones, ya que su gran cantidad de servidores pueden utilizar miles o incluso millones de claves, y el seguimiento y la actualización manual de esas claves es prácticamente imposible. Las claves SSH no vencen a menos que se revoquen explícitamente, por lo tanto, una vez que un atacante obtiene una clave, puede tener acceso constante durante meses o años.
Una de las principales diferencias entre el SSH y otros protocolos de tunelización es la capa OSI en la que operan. GRE, dirección IP en IP, e IPsec son todos los protocolos de capa de red. Como tales, no conocen los puertos (un concepto de la capa de transporte), sino que operan entre direcciones IP. (La capa OSI exacta de SSH no está definida de forma estricta, pero la mayoría de fuentes la describen como un protocolo de capas de aplicación/capa 7, como HTTP, FTP y SMTP).
Otra diferencia es que el SSH utiliza TCP. TCP, como se describió anteriormente, es un protocolo de capa de transporte y uno de los principales utilizados en Internet. Otro protocolo de capa de transporte muy utilizado es el UDP, el User Datagram Protocol. UDP es un protocolo de transporte "best-effort" —que envía paquetes sin asegurar su entrega— lo que lo hace más rápido, pero a veces provoca la pérdida de paquetes. Aunque TCP es más lento que UDP, garantiza la entrega de todos los paquetes en orden y, por lo tanto, es más confiable.
IPsec utiliza exclusivamente UDP en lugar de TCP para permitir que los paquetes IPsec pasen a través de firewalls. Por lo tanto, los túneles IPsec suelen ser más rápidos que los túneles SSH, pero pueden perder paquetes en tránsito. GRE y IP en IP pueden utilizarse con TCP o UDP.
Por último, el SSH solo encripta una aplicación cada vez, no todo el tráfico que va y viene de un dispositivo. Esto distingue a SSH de IPsec, que encripta todo el tráfico de red, independientemente de la aplicación de la que provenga. Por esta razón, el SSH no se utiliza para configurar las VPN.
Si bien el SSH implica riesgos de seguridad, muchas organizaciones dependen de este para seguir siendo productivas. Para mitigar esos riesgos, Cloudflare ofrece SSH con Access for Infrastructure como parte de su plataforma SASE. Este servicio aplica conceptos de Zero Trust a SSH, lo que ofrece a las organizaciones un control detallado sobre cómo los usuarios pueden conectarse a sus servidores SSH. Limita lo que puede hacer un usuario, reduciendo el impacto del uso no autorizado de SSH por parte de un atacante o un infiltrado.
SSH con Access for Infrastructure también elimina la necesidad de gestionar claves SSH (un gran desafío, como se ha descrito anteriormente). En su lugar, las organizaciones pueden utilizar certificados SSH de corta duración emitidos por una autoridad de certificación (CA) gestionada por Cloudflare.
Cloudflare también permite que las organizaciones supervisen y registren el acceso y el uso de SSH, lo que resulta esencial tanto para la recuperación de incidentes como para el cumplimiento normativo