IT Explained

IT Explained:

SSH (Secure Shell)




¿Qué es SSH?

 

 

Definición

SSH es un acrónimo de Secure Shell. Es un término genérico que se refiere a las diferentes versiones de los protocolos SSH, como serían SSH-1, SSH-2 e incluso OpenSSH, entre otras cosas. Aunque se conoce de forma general como una versión de SSH, estrictamente hablando se trata de una suite que consta de diferentes utilidades de red basadas en el protocolo SSH.

Los protocolos SSH especifican estándares para operar los servicios de red de forma segura entre anfitriones para los que no existe una relación de confianza a través de redes no seguras. Las comunicaciones entre un cliente y un servidor que utilizan SSH están encriptadas, por lo que es un protocolo idóneo para su uso en redes no seguras.

Originalmente, la palabra shell en SSH se refería a un programa que procesaba comandos en Unix. Con el tiempo, el término se ha terminado aplicando en mayor medida a las interfaces de usuario de los servidores para facilitar la interactuación con ellos. Un ejemplo de otro shell de uso común es el intérprete de comandos de Windows (cmd.exe), que proporciona acceso a las herramientas de este sistema operativo. SSH en sí no es un shell, como el shell Bourne de Unix o el shell C. En su lugar, crea un canal para ejecutar un shell en una computadora remota.

SSH gestiona más de la mitad de los servidores web del mundo, en las propias instalaciones y en la nube. SSH se utiliza para proteger, configurar, administrar, mantener y operar servidores de red, routers, cortafuegos, switches, sistemas operativos y aplicaciones. Los protocolos SSH abarcan la autenticación, el cifrado y la integridad de los datos. SSH es tan popular que a menudo se usa como verbo en inglés, SSH-ing, al igual que a veces usamos googlear en español.

Versiones

Hay dos versiones principales de SSH: SSH-1 y SSH-2. En 2006 se definió SSH-1.9, un cuarto tipo de SSH. Se utiliza para identificar servidores compatibles con versiones anteriores de SSH, específicamente que un servidor es compatible con SSH-2, así como con versiones anteriores de SSH.

SSH se usa más comúnmente en variantes de sistemas operativos Unix, como serían Linux y macOS, aunque también se emplea con Microsoft Windows. Por ejemplo, Windows 10 usa OpenSSH como su cliente y servidor SSH predeterminados.

En comparación con SSH-1, SSH-2 aporta mejoras en su seguridad y sus funcionalidades, pero no es compatible con SSH-1. Una de las mejoras de seguridad de SSH-2 es el uso del intercambio de claves Diffie-Hellman. El intercambio de claves Diffie-Hellman es un método de intercomunicación de claves criptográficas a través de un canal público, como internet. SSH-2 también agregó códigos de autenticación de mensajes adicionales para mejorar la integridad de los datos.

Debido a ciertos fallos de diseño, SSH-1 generalmente se considera obsoleto. La mayoría de los sistemas modernos emplean SSH-2.

 

Historial

 

 

SSH fue desarrollado por Tatu Ylonen, investigador de la Universidad Tecnológica de Helsinki, en 1995. Ylonen creó la primera versión del protocolo después de que la red de la universidad fuera pirateada y miles de nombres de usuario y contraseñas fueron expuestas. El objetivo de Ylonen era desarrollar una solución que pudiera utilizar para iniciar sesión de forma remota en internet de forma segura.

Primero pasó algún tiempo estudiando criptografía, la columna vertebral de SSH. Después de que la Internet Engineering Task Force (IETF) estandarizara SSH, diseñó el protocolo de transferencia de archivos SSH (SFTP) y, posteriormente, fundó SSH Communications Security Corporation para brindar soporte comercial para las versiones de pago de SSH.

Con la idea de reemplazar Telnet (puerto 23) y FTP (puerto 21), Tatu Ylonen pudo lograr asignar SSH al puerto 22 gracias a la autoridad de asignación de números de internet (Internet Assigned Numbers Authority o IANA)

¿Qué es un cliente SSH?

 

 

SSH se basa en un modelo de arquitectura cliente-servidor. En este modelo, un anfitrión es cualquier computadora que esté conectada a una red. Los clientes y los servidores son programas que se ejecutan en un anfitrión.

Un usuario usa su computadora (el cliente) para conectarse a una computadora remota (el servidor). Los usuarios pueden transferir datos entre el cliente y el servidor mediante una interfaz gráfica de usuario (GUI) o una herramienta de línea de comandos. Tanto el cliente como el servidor deben tener SSH habilitado.

El cliente SSH realiza una solicitud que usa SSH para conectarse a un sistema remoto. Los sistemas operativos de tipo Unix ya integran la funcionalidad SSH de serie. Para los sistemas operativos no Unix, también hay clientes externos disponibles; por ejemplo, PuTTY, EasySSH y Cyberduck. En lo que respecta a Windows específicamente, también hay numerosos clientes SSH, como PuTTY, Solar-PuTTy, WinSCP y MobaXterm.

La mayoría de clientes SSH ofrecen una mayor funcionalidad que la tradicional línea de comandos SSH con, por ejemplo, la capacidad de abrir varias sesiones simultáneamente, resaltar palabras clave entre sesiones, usar otros tipos de conexión como Telnet y guardar credenciales.

¿Dónde se usa SSH?

 

 

SSH se suele usar junto con otros protocolos de internet. SFTP es una alternativa segura a los protocolos tradicionales FTP y Secure Copy (SCP), que permiten transferir archivos entre equipos de una red. SFTP permite un cifrado y descifrado rápidos y dinámicos.

Conexiones seguras automatizadas

En entornos corporativos, las conexiones SSH automatizadas se suelen emplear para efectuar transferencias de archivos cifrados y autenticación automatizada en procesos de máquina a máquina (M2M). Entre las tareas automatizadas típicas podemos tener las copias de seguridad y el archivado, los informes, la limpieza de bases de datos, las copias de seguridad del sistema y el mantenimiento de la red.

Conexiones seguras manuales

Las empresas pueden utilizar túneles SSH para compartir archivos de forma segura con los clientes.

Administración de red remota

SSH permite inicios de sesión seguros en equipos remotos. Habitualmente lo usan administradores de red y webmasters para proteger las transferencias de archivos, automatizar transferencias de datos usando scripts SSH, establecer VPN, probar aplicaciones, reiniciar sistemas, cambiar permisos de archivos y administrar el acceso de usuarios. La mayoría de los administradores utilizan habitualmente un cliente SSH para acceder de forma segura a servidores remotos, switches, routers, plataformas de virtualización y sistemas operativos. Entre sus tareas incluyen la transmisión de vídeo mediante SFTP, la creación de una única sesión autenticada para múltiples conexiones, la realización de copias de seguridad remotas, la conexión de carpetas remotas a un directorio local y el uso de una clave de cifrado para múltiples cuentas en lugar de diferentes contraseñas.

Seguridad de la aplicación

Normalmente, las aplicaciones TCP/IP utilizan un puerto dedicado para comunicarse. Con la redirección de puertos, varias aplicaciones pueden usar el mismo, que vendría a ser el 22.

 

Funciones principales de SSH

 

SSHD

Para establecer una conexión SSH, la computadora remota debe ejecutar un demonio SSH (sshd), que es un programa que escucha las solicitudes de conexión, generalmente en el puerto 22, identifica las solicitudes entrantes y activa las conexiones.

El demonio SSH permite el intercambio cifrado de datos entre anfitriones entre los que no exista confianza a través de una red insegura mediante el protocolo SSH. Un demonio es una aplicación que se ejecuta en segundo plano y, como cualquier otra aplicación, está programado y configurado para realizar tareas específicas para una aplicación concreta.

RFC

SSH se define a partir de una serie de publicaciones de solicitud de comentarios (Request For Comments o RFC). Una RFC describe estándares, protocolos y tecnologías relevantes para internet, como SSH. Por ejemplo, existen documentos estándar para todas las capas SSH, así como algoritmos criptográficos y certificados de seguridad para este protocolo. También hay una RFC que especifica que la capa de transporte SSH debe permitir un secreto perfecto hacia adelante (perfect forward secrecy o PFS). El secreto perfecto hacia adelante garantiza que, si la clave privada de un servidor se ve comprometida, un hacker no podrá acceder a los datos transmitidos previamente.

Capas SSH

SSH se compone de tres capas: transporte, identificación de usuario y capas de conexión.

La capa de transporte gestiona el cifrado y descifrado de los datos intercambiados. La capa de transporte también identifica al servidor y establece confidencialidad e integridad en la comunicación.

Por su parte, la capa de identificación de usuario valida la identidad del cliente.

La capa de conexión gestiona los canales a través de los cuales viajan los datos entre las partes identificadas en el proceso de intercambio de datos. Hay canales (o flujos de datos) para diferentes tipos de comunicación; por ejemplo, conexiones simultáneas a diferentes terminales o servicios remotos o redirección a sesiones X11.

Cifrado SSH

La principal ventaja que tiene SSH sobre otras alternativas es el uso de cifrado. SSH cifra todo el tráfico entre un cliente y un servidor mientras está en tránsito. Cualquiera que escuche a escondidas el tráfico (por ejemplo, mediante el uso de un programa de detección de paquetes) no podrá acceder ni descifrar los datos transmitidos.

SSH utiliza tres métodos de cifrado: cifrado simétrico, cifrado asimétrico y hash.

El cifrado simétrico implica una clave secreta que se utiliza tanto para el cifrado como para el descifrado de una conexión SSH completa. La clave simétrica se crea utilizando un algoritmo de intercambio de claves acordado.

El cifrado asimétrico implica dos contraseñas diferentes en forma de par de claves, pública y privada, para el cifrado y el descifrado. En una sesión SSH, el cifrado asimétrico se utiliza para configurar el cifrado simétrico. En la etapa de cifrado simétrico, el cliente y el servidor producen pares de claves temporales e intercambian la clave pública para crear la clave simétrica. El cifrado asimétrico también se utiliza para validar la identidad del cliente en el servidor.

El método hash convierte los datos que se transmiten en otro valor único. SSH usa el hash para verificar la autenticidad de los mensajes.

Tunelización y redireccionamiento de puertos

SSH admite el redireccionamiento de puertos y la tunelización. A menudo, se usan indistintamente ambos términos, redireccionamiento de puertos (port forwarding) y tunelización (tunneling). Sin embargo, la tunelización es un término más inclusivo que describe tres tipos de redireccionamiento de puertos: redireccionamiento de puerto local, redireccionamiento de puerto remoto y redireccionamiento de puerto dinámico.

La tunelización SSH se puede utilizar para transferir tráfico no cifrado en una red a través de un canal cifrado. Por ejemplo, se puede crear un túnel SSH cifrado para transmitir datos entre un servidor FTP y un cliente, aunque el protocolo FTP no esté cifrado. También se pueden utilizar túneles SSH para acceder a contenido restringido geográficamente y evitar los cortafuegos.

Redireccionamiento X11

SSH habilita el redireccionamiento X11, que se puede usar cuando un usuario desea conectarse a un servidor remoto y también necesita una interfaz gráfica para ver la aplicación en ejecución o los datos. El redireccionamiento X11 permite al usuario arrancar una aplicación remota y, luego, transmitir la salida de dicha aplicación a una máquina Windows local.

 

Beneficios de SSH

 

SSH se diseñó para reemplazar los protocolos de shell remotos no seguros como Telnet, FTP, rsh, rlogin y rexec. Estos protocolos son intrínsecamente inseguros puesto que intercambian todo tipo información (incluidas las contraseñas) a través de texto sin formato, lo que es vulnerable a las violaciones de seguridad. La principal ventaja de SSH es el uso de cifrado para garantizar la transferencia segura de información entre el cliente y el servidor.

SSH permite a los usuarios ejecutar comandos de shell en una computadora remota de la misma manera que si estuvieran sentados físicamente frente al dispositivo. Mediante el uso de scripts y comandos SSH, los administradores pueden ver, eliminar o mover archivos, crear carpetas, archivos y directorios nuevos y descargar archivos.

La capa de conexión SSH permite múltiples flujos de datos a través de una misma conexión TCP. Esta capacidad se llama multiplexación e implica que se necesitan menos conexiones TCP, lo que permite compartir recursos escasos y también reduce la sobrecarga.

La capacidad de SSH para utilizar la tunelización y el redireccionamiento de puertos se puede utilizar para evitar los cortafuegos restrictivos.

SSH permite a los administradores de red limitar de forma remota el acceso de los usuarios a una red.

Las claves SSH se pueden utilizar para identificar a los usuarios que inician sesión en un sistema, en lugar de los nombres de usuario y las contraseñas. Un agente SSH es un programa que almacena claves privadas en memoria y proporciona servicios de identificación. Las claves SSH son más difíciles de piratear que las contraseñas, si bien el proceso de autenticación SSH es un poco más difícil de configurar que el uso de nombres de usuario y contraseñas. El uso de claves SSH mitiga el éxito de los ataques de descubrimiento de contraseñas mediante fuerza bruta.

En la computación en la nube se utilizan los túneles SSH para resolver problemas de conectividad y evitar vulnerabilidades de seguridad en aquellos escenarios en que las máquinas virtuales basadas en la nube están expuestas directamente a internet. Los túneles SSH proporcionan una ruta segura a través de internet y a través de un cortafuegos a una máquina virtual.

Inconvenientes de usar SSH

 

 

A pesar de que, generalmente, se considera que SSH-2 es seguro, todo este tipo de implementaciones de seguridad tiene vulnerabilidades.

SSH admite la tunelización que los administradores utilizan, por ejemplo, para entrar en una red desde ubicaciones remotas. Sin embargo, las transacciones SSH salientes sin restricciones sí pueden generar vulnerabilidades de seguridad. Crear túneles puede generar puertas traseras para los hackers, así como violar algunas regulaciones de seguridad como PCI y HIPAA. Las transacciones SSH entrantes se pueden controlar más fácilmente que las transacciones SSH salientes; por ejemplo, redireccionando las conexiones del puerto 22 (SSH) a una dirección IP específica.

Las claves SSH, que los usuarios suelen utilizar para iniciar sesión en lugar de contraseñas, nunca caducan. En organizaciones grandes, puede haber cientos de claves SSH en varios servidores. Una gestión deficiente de las claves de usuario de SSH puede resultar en una dispersión de claves, lo que podría proporcionar una puerta trasera para los actores maliciosos. Un túnel SSH puede permitir que un atacante use estas claves para eludir los cortafuegos. Sin embargo, los ataques de tunelización no son específicos de los sistemas que utilizan SSH.

Algunos anfitriones pueden compartir la misma clave porque estuviera preconfigurada en un dispositivo. Es posible que se pueda acceder a las claves privadas de estos dispositivos mediante ingeniería inversa. Las contraseñas más antiguas y de menor longitud también pueden permitir que un atacante obtenga los valores de las claves privadas.

Además, SSH puede ser relativamente lento a la hora de responder a comandos de gran exigencia de ancho de banda en conexiones lentas.

Algunos estudios sugieren que la mayoría de los fallos de seguridad de SSH se deben a la mala gestión de dicho protocolo por parte de los departamentos de TI.

A pesar de que, generalmente, se considera que SSH-2 es seguro, todo este tipo de implementaciones de seguridad tiene vulnerabilidades.

SSH admite la tunelización que los administradores utilizan, por ejemplo, para entrar en una red desde ubicaciones remotas. Sin embargo, las transacciones SSH salientes sin restricciones sí pueden generar vulnerabilidades de seguridad. Crear túneles puede generar puertas traseras para los hackers, así como violar algunas regulaciones de seguridad como PCI y HIPAA. Las transacciones SSH entrantes se pueden controlar más fácilmente que las transacciones SSH salientes; por ejemplo, redireccionando las conexiones del puerto 22 (SSH) a una dirección IP específica.

Las claves SSH, que los usuarios suelen utilizar para iniciar sesión en lugar de contraseñas, nunca caducan. En organizaciones grandes, puede haber cientos de claves SSH en varios servidores. Una gestión deficiente de las claves de usuario de SSH puede resultar en una dispersión de claves, lo que podría proporcionar una puerta trasera para los actores maliciosos. Un túnel SSH puede permitir que un atacante use estas claves para eludir los cortafuegos. Sin embargo, los ataques de tunelización no son específicos de los sistemas que utilizan SSH.

Algunos anfitriones pueden compartir la misma clave porque estuviera preconfigurada en un dispositivo. Es posible que se pueda acceder a las claves privadas de estos dispositivos mediante ingeniería inversa. Las contraseñas más antiguas y de menor longitud también pueden permitir que un atacante obtenga los valores de las claves privadas.

Además, SSH puede ser relativamente lento a la hora de responder a comandos de gran exigencia de ancho de banda en conexiones lentas.

Algunos estudios sugieren que la mayoría de los fallos de seguridad de SSH se deben a la mala gestión de dicho protocolo por parte de los departamentos de TI.

 

 

Referencias