SSH son las siglas de Secure Shell. Es un protocolo que tiene como función ofrecer acceso remoto a un servidor. La principal peculiaridad es que este acceso es seguro, ya que toda la información va cifrada. Esto evita que pueda filtrarse y que un tercero pueda ver esos datos. Vamos a explicar en qué consiste este protocolo, cómo funciona y también hablaremos de cómo podemos utilizarlo en Windows.
SSH es un protocolo de red seguro que se utiliza principalmente para acceder y administrar sistemas informáticos de forma remota. Por tanto, no hay que confundir con otro protocolos de cifrado, como el que usa WhatsApp, ya que tienen el suyo propio, y no utilizan, por tanto, SSH.
En qué consiste
Es uno de los protocolos que tenemos para conectarnos de forma remota a un servidor. Está disponible para Linux y macOS, además de poder utilizar un cliente en Windows. Básicamente consiste en poder gestionar un servidor de forma remota, pero además hacerlo con seguridad.
SSH utiliza un sistema de autenticación, lo que va a aportar esa seguridad que mencionamos. Podremos comunicar dos equipos entre sí, de forma remota, y esa comunicación va a estar cifrada. Por ejemplo, se utiliza para entrar en un ordenador de forma remota y utilizar para ello un nombre de usuario y contraseña.
Funciona de forma similar al protocolo Telnet, pero SSH apareció como una solución cifrada, para mantener la seguridad y evitar problemas. Se basa en el cifrado de 128 bits, lo que garantiza una protección fuerte y hace que sea realmente difícil que un intruso pueda descifrar y leer los datos que se envían o reciben. Telnet transfiere los datos en texto plano y eso es un problema.
Para qué se puede utilizar
Este protocolo permite diferentes acciones, entre ellas, conectarte a un servidor de manera remota y, lo mejor de todo, de forma segura. Aunque esto es solo una de las distintas opciones que ofrece la opción de utilizar el protocolo SSH.
Y regresando a la seguridad, usar SSH no solo es bueno, sino que también es un hecho relevante. Especialmente si se quiere utilizar una conexión cifrada. De lo contrario, cualquier usuario puede llegar a tener la opción de interceptar esa transmisión de datos, por lo que pondrías en juego tu información personal, como usuarios, contraseñas, datos bancarios, etc.
Para que puedas tener una idea más clara de para qué sirve, aquí puedes encontrar las acciones más comunes que se pueden realizar a través de este protocolo en particular:
Conectar remotamente a un servidor
El uso más importante del protocolo SSH es el de conectarnos de forma remota a un servidor. Esto puede ser de forma gráfica, como sería un programa en Windows, pero también a través de la terminal, como por ejemplo en Linux.
Siempre vamos a tener que utilizar el nombre de usuario y contraseña correspondiente, ya que este protocolo requiere autenticación. Esto es lo que nos permitirá acceder de forma remota a un servidor y poder controlarlo o llevar a cabo diferentes acciones sin necesidad de estar físicamente delante.
Actualizar un dispositivo o realizar cambios
De forma remota y a través de SSH vamos a poder actualizar un dispositivo. Por ejemplo, podemos acceder a un NAS para actualizar a una nueva versión del firmware y enviar los archivos que sean necesarios para ello.
También podremos realizar cambios en la configuración de forma remota. Por ejemplo, instalar una aplicación o incluso reiniciar el dispositivo si hubiera algún error. Todo ello, una vez más, sin necesidad de estar físicamente delante de ese dispositivo.
Modificar o copiar archivos
También podremos enviar archivos de un equipo a otro a través del protocolo SSH. Esto significa que podremos estar trabajando desde un ordenador, por ejemplo, y posteriormente subir esos archivos a un servidor mediante este protocolo.
De la misma manera, podemos acceder a un servidor y modificar los archivos que ya hay. Esto evita que tengamos que descargar los archivos, modificarlos y posteriormente volverlos a enviar. Lo que hacemos es modificarlos directamente en el servidor.
Transferencia de archivos segura
SSH no solo se limita al acceso remoto, sino que también ofrece un protocolo específico para la transferencia segura de archivos, conocido como SFTP. Este protocolo proporciona una capa adicional de seguridad en comparación con los métodos tradicionales como FTP, ya que toda la comunicación, incluida la autenticación y la transferencia de datos, está cifrada. Esto asegura que la información sensible, como nombres de usuario y contraseñas, esté protegida durante la transmisión.
La principal ventaja de SFTP es su capacidad para transferir archivos de manera segura a través de conexiones encriptadas. Al utilizar el mismo mecanismo de autenticación y seguridad que SSH, SFTP garantiza la confidencialidad e integridad de los datos, convirtiéndose en una opción preferida para la transferencia de archivos en entornos donde la seguridad es primordial. Además, SFTP suele ser compatible con firewalls, ya que utiliza el mismo puerto que SSH.
Gestión de dispositivos en red
Muchos administradores de red utilizan SSH para acceder y administrar dispositivos de red, como routers y switches, de manera segura.
La gestión segura de dispositivos de red es una parte fundamental en entornos de red y SSH tiene un papel crucial en este tema. Los administradores de red utilizan SSH para acceder y administrar dispositivos de manera remota y segura. La clave de esta función está en la capacidad de SSH para proporcionar una conexión cifrada, lo que garantiza que la información crítica transmitida entre el administrador y el dispositivo de la red esté protegida contra posibles amenazas.
El uso de SSH en la gestión de dispositivos de red también permite a los administradores realizar tareas de configuración, monitoreo y resolución de problemas de manera eficiente. La encriptación de extremo a extremo proporcionada por SSH asegura que los comandos y la información confidencial no sean vulnerables a ataques de interceptación, lo que es muy importante para mantener la integridad y la seguridad de la infraestructura de la red.
Seguridad del protocolo SSH
Una de las grandes ventajas del protocolo SSH a diferencia de sus antecesores, es la transferencia de archivos de forma segura entre el host y el servidor. Y para ello tenemos tres formas de cifrar los datos. Estas son el cifrado simétrico, asimétrico y el hashing:
Cifrado Simétrico
En esta forma se utiliza una clave, la cual es secreta. Su función es cifrar y a su vez descifrar el contenido de un mensaje para el cliente y para el host. Por lo cual, cualquiera que tenga dicha clave, puede ver el contenido. También es conocido por clave compartida o cifrado secreto compartido.
Puede parecer que se trata de un mecanismo no seguro, pero lo cierto es que, todo lo contrario, pues la clave no es transmitida entre el cliente y el host. En su defecto, los dos equipos comparten datos públicos y luego los manipulan para realizar un cálculo independiente que da como resultado la clave secreta.
Cifrado Asimétrico
Este caso es el contrario del anterior, y no solo por el nombre. Aquí se utilizan dos claves, una pública y otra privada. Estas forman lo que se le llama un par de claves. En primer lugar, la clave pública se distribuye entre los equipos de forma abierta. Siendo una clave que se puede calcular como vimos en el caso anterior. Luego tenemos la clave privada, la cual siempre permanece en privado, y es lo que hace de esta conexión más segura. Por lo cual ningún tercero puede conocerla.
Por otro lado, hay que tener en cuenta que este tipo de cifrado no se usa para llegar a cifrar toda la sesión SSH. En este caso, por más que la idea general sea que es así, se usa durante el algoritmo de intercambios de claves de cifrado simétrico. Hay que llegar hasta el punto en el que se establece una comunicación simétrica que sea segura, para que luego el servidor use la clave pública de los clientes con tal de transmitirlas al cliente para su comprobación. De esta forma, si después el cliente recibe el contenido de manera correcta, ya se puede decir que cuenta con la clave privada que es la necesaria para la conexión. Por lo que, en ese mismo momento, arranca la sesión SSH.
Hashing
De primeras, hay que tener claro que los mensajes que se cifran para por el algoritmo conocido como ‘hash‘. Eso es lo primero, ya que este crear un valor alfanumérico para cada mensaje. Esto mismo nos lleva a que esta difiere de las dos anteriores.
Por tanto, con el hashing se genera un valor único de longitud fija, y se utiliza para cada entrada que no muestra una tendencia clara para que se pueda explotar. Esto lo hace irreversible. Este genera una clave hash criptográfica, y compara su valor para verificar si se poseen los accesos correctos.
¿Cómo es de seguro?
Ahora que ya conoces los tipos de cifrado que pueden llevarse a cabo con los SSH, podemos ver si es algo que influye directamente en la seguridad de este servicio. La seguridad del SSH, está basada en el uso de claves públicas y privadas para poder autenticar a los usuarios. Y así poder establecer el cifrado en la comunicación entre ambos. Y lo cierto, es que de forma generalizada el protocolo SSH es considerado muy seguro. El cifrado de extremo a extremo que se utiliza para proteger esta comunicación entre dos sistemas de posibles atacantes, es bastante eficaz. Sin duda, es mucho más seguro que utilizar usuarios y contraseñas más convencionales.
En cambio, como cualquier protocolo, no estamos ante algo perfecto. Este no es infalible, y siempre tendremos algunos riesgos potenciales que debemos considerar. El primero, es que, si la clave privada se llega a perder o es filtrada, puede comprometer gravemente la seguridad de la conexión SSH. Por otro lado, todo debe estar correctamente actualizado, ya que así podremos tratar de poner solución a posibles vulnerabilidades que los atacantes suelen aprovechar. Ante todo, debemos tener en cuenta que el SSH solo puede proteger la comunicación entre los dos sistemas, pero no proporciona protección para ataques que no tengan que ver con esta comunicación. Para ello, lo mejor que podemos hacer es implementar herramientas de seguridad que nos protejan de esas amenazas que no tienen que ver con el SSH.
En definitiva, estamos ante una herramienta muy segura, y que es ampliamente utilizada en el mundo de la informática para establecer comunicaciones. Pero esto no quita de que sea necesario utilizar otras herramientas de seguridad en los equipos. También se debe hacer una correcta implementación del SSH, puesto que su configuración es importante para la estrategia de seguridad que va a seguir. Y esto se puede aplicar tanto a usuarios, como a empresas que les quieran dar uso.
Cómo funciona SSH
Pero, ¿cómo funciona exactamente SSH? Hay que mencionar que necesita tres puntos indispensables: usuario, puerto y servidor. Esto es lo que va a permitir establecer una conexión entre servidores y poder hacer todo lo que hemos mencionado.
El puerto SSH estándar asignado es el TCP 22. No obstante, ese puerto siempre puede ser cambiado si queremos. El cliente SSH va a contactar con el servidor para iniciar la conexión. Ese servidor está escuchando a través del puerto 22 o el que se le haya asignado. Posteriormente el servidor va a enviar la clave pública y comienzan a organizar los parámetros y abrir un canal seguro. El cliente inicia sesión para conectarse a ese servidor.
El servidor podría ser por ejemplo un dominio web o una dirección IP. El usuario sería el nombre, como puede ser root o administrador.
En cuanto al cifrado SSH, hay de diferentes tipos. Por un lado, está el cifrado simétrico, que es el más popular, en el que utiliza una clave secreta que va a ser usada tanto al cifrar como al descifrar la conexión. Esa clave es única.
Por otra parte, está el cifrado asimétrico, que en esta ocasión utiliza dos claves diferentes. Una clave es pública y la otra privada y la información solo se puede obtener si se conoce esta última clave.
Una última opción de cifrado es lo que se conoce como hash o hashing. Esto se consigue al convertir esa información en una serie de datos que son únicos.
Desventajas de usar SSH
Aunque es una gran herramienta, también tiene sus desventajas, por lo que vamos a resumirlas:
- Complejidad de configuración inicial: Aunque una vez configurado, su uso es muy simple, la primera vez que ajustemos todo puede ser complejo si no estamos acostumbrados, por tanto, puede que no sepamos hacerlo funcionar por nuestra cuenta.
- Posibles vulnerabilidades: Pese a que, como hemos visto, es bastante seguro, las versiones desactualizadas son bastante vulnerables a ataques de seguridad, como fuerza bruta, ataques de diccionario o exploits de software, entre otras cosas.
- Costo de recursos: La encriptación y la autenticación que proporciona SSH hace que, un sistema limitado, pueda verse afectado, por el consumo de recursos que necesita, especialmente si existe un volumen alto de tráfico.
- Bloqueo por firewalls: los puertos utilizados por SSH pueden estar bloqueados por firewalls, lo que dificultaría o impediría el acceso remoto a través de este protocolo.
- Gestión de contraseñas: en entornos con bastantes usuarios puede ser complicada la administración de claves, lo que requiere una gestión cuidadosa para garantizar la seguridad del mismo.
- Dependencia de conexión: aunque es algo lógico, hay que comentarlo, ya que no solo necesitaremos depender de tener internet nosotros, sino también el servidor, es decir, tanto emisor como receptor.
Pese a tener estas desventajas, hablamos de un protocolo bastante fiable, por lo que no tenemos que tener miedo en utilizarlo, y no encontraremos una alternativa mejor si es lo que buscamos.
Cómo usar SSH en Windows
Hay que tener en cuenta que los sistemas operativos de Linux y macOS ya traen incorporado SSH. Podemos utilizar la línea de comandos para acceder a un servidor desde Ubuntu, por ejemplo. Pero también vamos a poder usarlo en Windows. Podremos instalar programas y aprovechar el funcionamiento de este protocolo, aunque habrá que habilitarlo en el sistema.
Para ello tendremos que ir a Inicio, escribimos Servicios y lo abrimos. Allí nos debería de aparecer OpenSSH Server. En el caso de que no sea así, tendremos que habilitarlo. Tendremos que ir a Configuración, entrar en Aplicaciones, Características opcionales y Agregar una característica. Tendremos que pinchar y darle a Instalar.
Ya sea que lo hayamos tenido que instalar o ya lo tengamos, tendremos que ir a Servicios y pinchar en OpenSSH Server y hace clic con el segundo botón. Tendremos que pinchar en Iniciar, aunque también podemos configurarlo para que se inicie siempre con Windows.
Una vez tengamos esto, vamos a PowerShell y, con permisos de administrador, tenemos habilitar el puerto de escucha y para ello hay que ejecutar el siguiente código.
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Service sshd -Enabled True -Direction Inbound -Protocol TCP -Action Allow -Profile Domain
Ya podremos acceder a este ordenador mediante el protocolo SSH. Lo siguiente será utilizar un programa para tal efecto. El más utilizado en Windows es Putty, que podremos descargar e instalar de forma gratuita.
En definitiva, el protocolo SSH es muy útil para poder acceder de forma remota a un equipo y además de forma segura. Es una alternativa a Telnet, mejorando notablemente la seguridad, y que podemos utilizar en nuestro sistema Windows. Ofrece diferentes usos, como es el poder enviar archivos, modificarlos directamente en el servidor, actualizar un equipo, etc.
Alternativas a SSH en Windows
Existen diferentes alternativas a SSH que podremos utilizar en Windows para acceder remotamente a otro equipo, que son las siguientes:
- PowerShell Remoting (WinRM): Es una herramienta nativa de Windows que utiliza el protocolo WinRM para administrar sistemas de forma remota mediante la ejecución de comandos y scripts de PowerShell. Es bastante utilizada en entornos de empresas ofreciendo un cifrado de seguridad bastante alto.
- RDP (Remote Desktop Protocol): Es un protocolo nativo de Windows, por lo que no habrá que descargar nada más. Permite acceder de forma remota al escritorio completo de otro equipo, por lo que hablaríamos de una interfaz gráfica, algo mucho más sencillo y visualmente mejor para trabajar en remoto.
- Telnet: Aunque es una herramienta más antigua, Telnet permite establecer conexiones remotas en línea de comandos. Su principal desventaja, además de no tener una interfaz gráfica, es que no cifra los datos, lo que lo hace inseguro para entornos modernos. Sigue siendo útil en dispositivos o sistemas que no soportan protocolos más avanzados como SSH, por lo que sigue siendo una opción.
- PuTTY: En este caso hablamos de una aplicación gratuita que permite conexiones SSH, Telnet y serial. Es bastante sencilla y fácil de utilizar, además de compatible con múltiples sistemas operativos.
- TeamViewer o AnyDesk: Aquí ya hablaríamos de aplicaciones de escritorio más conocidas, pero que realizan funciones similares e incluso más completas. Ofrecen acceso remoto gráfico fácil de usar, permitiendo controlar equipos de manera segura a través de Internet y sin tener grandes conocimientos, útil para cualquier usuario.
- FTP/FTPS: Si lo que queremos es simplemente transferir archivos entre equipos, sin control, usar FTP será lo más rápido y sencillo, aunque solo sirva para esta acción en concreto.
Hay más alternativas, aunque esperamos que con estas sean más que suficientes para lo que estáis buscando.