Guía completa: Número de puerto SSH y funcionamiento de SSH

En la era digital moderna, la frecuencia de los ciberataques está aumentando rápidamente, incluyendo amenazas como la violación de datos, la piratería informática y el robo de identidad. Para prevenir estos delitos, todas las organizaciones necesitan técnicas, como SSH, que garanticen la transmisión segura de datos entre dispositivos o sistemas informáticos. En este artículo, aprenderá en detalle sobre el protocolo SSH, el número de puerto SSH, el puerto SSH predeterminado y su funcionamiento. Además, explorará diferentes métodos de cifrado, procesos de autenticación, comandos y componentes clave que garantizan una comunicación segura a través de las redes.

¿Qué es SSH?

SSH son las siglas de Secure Shell y es un protocolo de red seguro y robusto que proporciona una forma segura de acceder y gestionar servidores remotos. El protocolo SSH sustituye a protocolos inseguros como FTP y Telnet. La función principal de SSH es establecer un canal de comunicación seguro para acceder a dispositivos remotos.

Las características principales de los protocolos SSH son el cifrado de datos, las comprobaciones de integridad y la autenticación de identidad, que describimos brevemente a continuación:

  1. 1. SSH cifra los datos durante la transmisión para protegerlos de usuarios malintencionados.
  2. Utiliza varias técnicas de autenticación, como contraseñas y claves criptográficas, para garantizar la identidad de los usuarios y los dispositivos.
  3. SSH garantiza que los datos no se han alterado durante la comunicación confirmando la integridad de los datos transmitidos.

Los administradores de sistemas suelen utilizar SSH para gestionar servidores remotos de forma segura y realizar diferentes tareas administrativas. También ayuda a transferir archivos a través de SFTP (SSH File Transfer Protocol), que garantiza la transferencia segura de datos entre sistemas. Además, permite a los usuarios establecer canales seguros para múltiples aplicaciones, como el acceso a bases de datos o la navegación web.

¿Qué es un puerto en SSH?

Un «puerto» en redes es un punto final lógico o virtual para la comunicación dentro de un ordenador o una red. Los puertos permiten que diferentes servicios y aplicaciones compartan la misma conexión de red física, al tiempo que mantienen canales de comunicación independientes.

Los puertos más conocidos, que van del 0 al 1023, se denominan «puertos reservados» para servicios específicos, como HTTP (puerto 80), HTTPS (puerto 443), FTP (puerto 21) y SSH (puerto 22). Estas asignaciones estandarizadas ayudan a garantizar la coherencia entre las redes.

El puerto SSH sirve como punto final específico para las conexiones del protocolo Secure Shell en un ordenador. De forma predeterminada, SSH utiliza el puerto 22 cuando se ejecutan comandos en Linux para comunicarse entre dos servidores a través de la red.

Todas las comunicaciones pasan por un número de puerto designado, pero se puede cambiar este puerto y asignarlo a cualquier otro número de puerto SSH disponible. Proporcionan un medio seguro y cifrado para gestionar o acceder a servidores o dispositivos remotos, lo que garantiza una comunicación segura a través de redes potencialmente inseguras.

¿Cómo funciona SSH (Secure Shell) en el puerto 22?

SSH funciona con un modelo cliente-servidor y facilita la comunicación segura y cifrada a través de conexiones de red. Se utiliza ampliamente en herramientas de línea de comandos, como aplicaciones de inicio de sesión remoto y terminales. Los usuarios de Linux prefieren utilizar el puerto SSH para tareas de acceso remoto y administración de servidores. Por lo tanto, surge la siguiente pregunta: ¿cómo funciona SSH en el puerto 22?

SSH utiliza el puerto 22 para establecer un canal de comunicación seguro y cifrado entre un cliente y un servidor. Veamos en detalle cómo funciona SSH.

Paso 1: Establecer una conexión

El primer paso es iniciar una solicitud de conexión entre el cliente y el servidor. Cuando un usuario o cliente desea establecer una conexión SSH con un servidor, inicia el proceso enviando una solicitud de conexión al servidor.

En respuesta, el servidor configura y escucha las solicitudes en el puerto 22 para las conexiones SSH entrantes. Además, reconoce y responde a la iniciación del cliente.

El cliente y el servidor participan en un proceso de intercambio de claves cifradas, en el que ambos intercambian información para establecer una conexión segura. Para proteger su comunicación posterior, colaboran en la elección de los métodos de cifrado y en el intercambio de claves criptográficas como parte de este proceso. Tras este proceso, se genera una clave secreta compartida que se compartirá entre ambos dispositivos, el cliente como usuario y el servidor remoto.

Paso 2: Autenticación del usuario

Tras seguir el paso anterior, el cliente emplea el método de autenticación elegido para verificar su identidad ante el servidor. Los métodos principales para autenticar a los usuarios SSH son las contraseñas y las claves SSH.

Los clientes transmiten de forma segura las contraseñas cifradas al servidor. Esto puede implicar proporcionar una clave criptográfica, introducir una contraseña o utilizar cualquier otro método de autenticación compatible con SSH. No obstante, la seguridad de las contraseñas depende de la complejidad elegida por el usuario. En algunos casos, crear contraseñas se considera un método de autenticación arriesgado.

Sin embargo, las contraseñas se consideran generalmente menos seguras que el uso de pares de claves públicas y privadas SSH, que implican un cifrado asimétrico. En este proceso, el servidor concede acceso al sistema cliente una vez que este descifra correctamente el mensaje proporcionado utilizando la clave adecuada.

Tras el proceso de autenticación, se establece un canal seguro entre el cliente y el servidor. Esto garantiza la privacidad, ya que toda la información intercambiada entre ellos está cifrada, lo que imposibilita que cualquier entidad no autorizada pueda espiar o escuchar la comunicación.

Paso 3: Establecer un canal seguro e iniciar la sesión

Una vez establecido el canal seguro, se inicia una sesión SSH. Dentro de esta sesión, el cliente puede interactuar de forma segura con el servidor, realizando tareas como enviar archivos, ejecutar comandos y llevar a cabo otras acciones autorizadas.

Todos los comandos, archivos y datos intercambiados entre el cliente y el servidor durante esta sesión se cifran y protegen mediante el canal seguro. Este cifrado garantiza la integridad de los datos, evitando cualquier alteración o manipulación durante la transferencia de datos.

Cuando el usuario finaliza la sesión SSH, puede cerrar la conexión. Al cerrar el canal seguro, se garantiza que no sea posible ninguna comunicación hasta que se inicie una nueva sesión.

El funcionamiento de SSH en el puerto 22 consiste en garantizar la transferencia segura de datos entre el cliente y el servidor, autenticar al cliente y establecer un canal de comunicación seguro y cifrado. SSH goza de una gran confianza y se utiliza ampliamente para el acceso y la comunicación remotos seguros gracias a la implementación de métodos de cifrado y autenticación segura.

¿Cómo generar una clave SSH?

SSH proporciona a los usuarios una forma segura de ejecutar comandos en servidores remotos, facilitar el reenvío de puertos, establecer túneles y realizar diversas tareas. Admite múltiples métodos de autenticación, siendo los más comunes la autenticación por contraseña y la autenticación basada en claves públicas.

La autenticación basada en claves públicas se considera más segura y cómoda que la autenticación por contraseña, ya que se basa en firmas digitales para mejorar la seguridad.

Si utiliza la autenticación basada en claves SSH, puede generar una clave SSH en su sistema Linux siguiendo estos pasos:

Paso 1: Verificar el archivo de la clave SSH antigua

Comience por crear una clave SSH en la máquina cliente Ubuntu, que se utilizará para conectarse con el servidor. Antes de generar la clave SSH, es esencial comprobar si ya existe un par de claves SSH en su sistema cliente. Esto es importante, ya que ayuda a evitar sobrescribir el par de claves antiguo con uno nuevo. Puede verificar la existencia del archivo de clave SSH en su máquina cliente utilizando el siguiente comando:

$ ls -l ~/.ssh/id_*.pub

Paso 2: Generar un par de claves SSH

Si aparece un error que indica «No existe tal archivo o directorio», significa que no hay ninguna clave SSH en su máquina. En tal caso, continúe con el siguiente paso. Genere el par de claves SSH en la máquina cliente Ubuntu ejecutando el siguiente comando para crear un nuevo par de claves con 4096 bits, utilizando una dirección de correo electrónico de usuario como comentario:

$ ssh-keygen

o

$ ssh-keygen -t rsa -b 4096 -C «[email protected]»

Al ejecutar el comando «ssh-keygen» como se ha indicado anteriormente, se crea un par de claves RSA predeterminado de 3072 bits. Para almacenar la clave SSH en la ubicación predeterminada dentro del subdirectorio «.ssh/», simplemente pulse «Intro».

A continuación, se le pedirá que introduzca una frase de contraseña, lo que añade una capa adicional de seguridad. Sin embargo, tenga en cuenta que deberá introducir esta frase de contraseña cada vez que inicie sesión en una máquina remota. Si prefiere dejarla vacía con la configuración predeterminada, pulse «Intro». A continuación, se mostrará toda la pantalla de salida en el terminal, como se muestra a continuación:

Verifique que se ha generado correctamente el par de claves SSH en la máquina cliente utilizando el siguiente comando:

$ ls ~/.ssh/id_*

El par de claves SSH generado debería aparecer en el terminal. Esto significa que ha generado correctamente el par de claves SSH en la máquina cliente Ubuntu.

Paso 3: Conectarse al servidor remoto

A continuación, transfiera la clave pública SSH generada al servidor Ubuntu remoto que desea administrar. Utilice la herramienta «ssh-copy-id», ya que es el método recomendado para copiar la clave pública al servidor remoto. Ejecute el comando que se proporciona a continuación en la máquina cliente para copiar sin esfuerzo la clave pública a su servidor Ubuntu remoto:

$ ssh-copy-id nombre_de_usuario@dirección_IP_del_servidor

Sustituya la dirección IP del servidor por la IP de su sistema.

Al conectarse al sistema por primera vez, es posible que aparezcan varios mensajes en el terminal. Introduzca «yes» y pulse «Intro» para continuar con el proceso. El servidor examinará y validará la clave SSH generada anteriormente en el equipo cliente. También puede copiar manualmente esta clave pública SSH generada en un servidor utilizando el siguiente comando:

$ cat ~/.ssh/id_rsa.pub | ssh nombre_usuario@dirección_ip_del_servidor «mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys»

De nuevo, cambie o sustituya el nombre de usuario y la dirección IP del servidor por los datos de su servidor.

Paso 4: Inicie sesión con la clave SSH en el servidor remoto

Para iniciar sesión a través de SSH en el servidor remoto, utilice el siguiente comando:

$ ssh nombre de usuario@IP del servidor

Si no ha establecido una frase de contraseña segura para la clave privada, podrá iniciar sesión en el servidor remoto inmediatamente. En un escenario diferente, si ha establecido una frase de contraseña segura, se le pedirá que la introduzca durante el proceso de inicio de sesión.

Paso 5: Desactive la autenticación por contraseña SSH

Si desea desactivar la autenticación por contraseña SSH, que añade una capa adicional de seguridad, antes de desactivarla, inicie sesión en su servidor remoto con privilegios sudo. Abra el archivo de configuración SSH «/etc/ssh/sshd_config» con este comando:

$ sudo nano /etc/ssh/sshd_config

Ahora, navegue hasta la siguiente línea y configúrela con el argumento «no».

PasswordAuthentication no

Guarde este archivo de configuración y salga de él.

Después de realizar los cambios, es el momento de reiniciar o recargar el servicio SSH en su servidor ejecutando el siguiente comando:

$ sudo systemctl restart ssh

Asegúrese de que SSH funciona correctamente en su servidor antes de finalizar la sesión actual.

Si todo funciona como se espera, significa que la autenticación por contraseña SSH está desactivada en su servidor.

Comandos para gestionar el SSH en el sistema Linux

Para instalar un servidor OpenSSH, utilice el siguiente comando:

$ sudo apt install openssh-server

Para iniciar y detener el servicio SSH, utilice los siguientes comandos:

$ sudo systemctl start ssh

$ sudo systemctl stop ssh

Para comprobar el estado del servicio SSH, si se está ejecutando en su sistema o no, utilice:

$ sudo systemctl status ssh

Para habilitar un servicio SSH, utilice este comando:

$ sudo systemctl enable ssh

Para recargar o reiniciar el servicio SSH, ejecute este comando:

$ sudo systemctl restart ssh

Para conectarse con el servidor SSH, utilice el siguiente comando:

$ ssh nombre de usuario@host remoto o dirección IP

¿Cómo configurar el número de puerto SSH 22 en el firewall UFW?

Asegúrese de que UFW (Uncomplicated Firewall) está activado y en funcionamiento en su sistema Ubuntu. Si no está habilitado, utilice el siguiente comando para habilitar UFW:

$ sudo ufw enable

Una vez habilitado UFW, conceda permiso para el tráfico SSH en el puerto 22 en el firewall UFW con el siguiente comando:

$ sudo ufw allow 22/tcp

Si desea desactivar el servidor SSH en su sistema, puede desactivar o bloquear el puerto 22 con el siguiente comando:

$ sudo ufw deny 22/tcp

Para desactivar el acceso al servicio SSH, ejecute los siguientes comandos:

$ sudo systemctl stop ssh --now$ sudo systemctl disable ssh --now

Implementaciones de SSH para Linux y Windows

Existen diversas implementaciones y clientes SSH que se utilizan ampliamente en distintos sistemas operativos:

- OpenSSH (sistemas basados en Unix): OpenSSH es la implementación SSH predeterminada para sistemas basados en Unix, como Linux y macOS. Reconocido por su fiabilidad y seguridad, OpenSSH viene preinstalado en la mayoría de las plataformas basadas en Unix.

- PuTTY (Windows): PuTTY es un popular cliente SSH diseñado para Windows. Ofrece una interfaz fácil de usar para conexiones seguras a servidores remotos. Además, PuTTY proporciona herramientas auxiliares como PuTTYgen para la gestión de claves SSH.

- SSH en PowerShell (Windows): En los últimos años, Microsoft ha integrado OpenSSH en Windows PowerShell. Esta integración simplifica el uso de SSH para los usuarios de Windows, eliminando la necesidad de aplicaciones de terceros.

¿Cuál es el número de puerto SSH predeterminado?

Como hemos comentado anteriormente, SSH utiliza el puerto predeterminado 22. Todas las conexiones SSH se inicializan a través del puerto SSH 22. El uso del puerto 22 como predeterminado simplifica la configuración para los usuarios y garantiza un enfoque estandarizado para las conexiones SSH.

Sin embargo, en algunos casos, se considera inseguro transferir datos cruciales. Por lo tanto, se recomienda cambiar el número de puerto SSH predeterminado 22 por otro número de puerto debido a algunos problemas de seguridad.

Hay 65 536 puertos de comunicación disponibles para establecer una conexión entre dispositivos. Puede elegir uno de ellos si desea cambiar el número de puerto SSH. Se trata de un enfoque inteligente para evitar que sus servidores sufran ataques de fuerza bruta.

¿Cómo cambiar el puerto SSH predeterminado 22 a otro número de puerto?

Si realiza comunicaciones importantes que requieren seguridad, es recomendable cambiar el número de puerto SSH predeterminado para reducir el riesgo de ataques de fuerza bruta. Dado que todos los atacantes saben que el puerto 22 es el número de puerto SSH predeterminado, se convierte en un objetivo principal para los ataques, lo que abre la puerta a los piratas informáticos para acceder a los datos que usted proporciona. Al utilizar un puerto SSH diferente, puede emplear eficazmente el protocolo SSH para mejorar la seguridad.

Debe seguir los pasos que se indican a continuación para cambiar el número de puerto SSH 22 a otro puerto:

Paso 1: Crear una copia de seguridad del archivo sshd_config

Puede cambiar fácilmente el puerto SSH predeterminado editando el número de puerto en el archivo sshd_config. Sin embargo, es importante hacer una copia de seguridad del archivo antes de realizar cambios en el archivo de configuración. Para crear una copia de seguridad, utilice el siguiente comando:

$ cp /etc/ssh/sshd_config /etc/ssh/sshd_backup_config

El comando anterior creará una copia de este archivo en el mismo directorio.

Paso 2: Cambiar el puerto predeterminado de SSH 22

Para cambiar el puerto predeterminado de SSH 22, abra el archivo «ssh_config» y ejecute el siguiente comando:

$ sudo nano /etc/ssh/sshd_config

El comando anterior abrirá este archivo de configuración dentro de la ventana de la terminal en el editor nano. Busque la siguiente línea de código:

#Port 22

Descomente esta línea eliminando el símbolo «#» al principio y cambiando este puerto por otro número. Por ejemplo, queremos cambiar el número de puerto SSH a 45571.

Port 45571

Es importante permitir o añadir este puerto a su firewall.

Paso 3: Reinicie el servicio SSH

Después de añadirlo al firewall, reinicie el servicio SSH para cargar los cambios.

$ sudo service sshd restart

Una vez que reinicie su dispositivo, los cambios que haya realizado se aplicarán. Recuerde que una configuración de seguridad crucial consiste en cambiar el número de puerto SSH predeterminado justo después de adquirir un VPS Linux. Puede probar estos cambios cómodamente sin necesidad de cerrar la sesión SSH actual.

Paso 4: Prueba el puerto SSH

Una vez que cambies el puerto SSH predeterminado 22, deberás mencionar el número de puerto al establecer una conexión desde la máquina cliente al servidor.

$ ssh username@userIP -p 45571

Ahora, tu puerto SSH predeterminado ha cambiado y está configurado en el puerto 45571.

Conclusión

En este artículo, hemos aprendido cómo funciona SSH en el puerto 22 y cómo podemos cambiar el puerto SSH predeterminado a otro número de puerto. Además, hemos ejecutado diferentes comandos SSH que le ayudarán a comprender el servicio SSH y el número de puerto.

Espero que, después de leer este tutorial, pueda conectar su sistema a un servidor SSH y cambiar fácilmente el número de puerto para proteger su sistema de usuarios malintencionados.

Blog