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 filtraciones de datos, hacking y robo de identidad. Para prevenir estos delitos, toda organización necesita técnicas como SSH que garanticen una transmisión segura de datos entre dispositivos o sistemas informáticos. En este artículo aprenderás en detalle qué es el protocolo SSH, el número de puerto SSH, el puerto SSH predeterminado y cómo funciona. Además, conocerás los distintos métodos de cifrado, procesos de autenticación, comandos y componentes clave que aseguran una comunicación segura a través de redes.

¿Qué es SSH?

SSH significa Secure Shell y es un protocolo de red seguro y robusto que proporciona una forma protegida de acceder y gestionar servidores remotos. El protocolo SSH reemplaza a protocolos inseguros como FTP y Telnet. Su función principal es establecer un canal de comunicación seguro para acceder a dispositivos remotos.

Las características principales del protocolo SSH son el cifrado de datos, la verificación de integridad y la autenticación de identidad, que se describen a continuación:

  1. SSH cifra los datos durante la transmisión para protegerlos de usuarios malintencionados.

  2. Utiliza diversos métodos de autenticación, como contraseñas y claves criptográficas, para garantizar la identidad de usuarios y dispositivos.

  3. SSH asegura que los datos no hayan sido modificados durante la comunicación, verificando la integridad de la información transmitida.

Los administradores de sistemas utilizan SSH habitualmente para gestionar servidores remotos de forma segura y realizar distintas tareas administrativas. También permite transferir archivos mediante SFTP (SSH File Transfer Protocol), garantizando una transferencia segura entre sistemas. Además, facilita la creación de 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 lógico o virtual de comunicación dentro de un ordenador o red. Los puertos permiten que distintos servicios y aplicaciones compartan la misma conexión física de red manteniendo canales de comunicación separados.

Los puertos conocidos que van del 0 al 1023 se consideran “puertos reservados” para servicios específicos, como HTTP (puerto 80), HTTPS (puerto 443), FTP (puerto 21) y SSH (puerto 22). Estas asignaciones estandarizadas garantizan coherencia en las redes.

El puerto SSH funciona como el punto específico para las conexiones del protocolo Secure Shell en un sistema. Por defecto, SSH utiliza el puerto 22 cuando se ejecutan comandos en Linux para comunicarse entre dos servidores a través de la red.

Toda la comunicación pasa por un número de puerto designado, aunque puedes cambiar este puerto y asignarlo a cualquier otro número de puerto SSH disponible. Los puertos proporcionan un medio seguro y cifrado para gestionar o acceder a servidores o dispositivos remotos, garantizando una comunicación protegida incluso en redes potencialmente inseguras.

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

SSH funciona bajo un modelo cliente-servidor y permite una 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 acceso remoto y terminales. Los usuarios de Linux suelen utilizar el puerto SSH para acceso remoto y tareas de administración de servidores. Entonces surge la 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 el cliente y el servidor. Veamos su funcionamiento en detalle.

Paso 1: Establecer una conexión

El primer paso consiste en iniciar una solicitud de conexión entre el cliente y el servidor. Cuando un usuario desea establecer una conexión SSH con un servidor, envía una solicitud de conexión al servidor.

El servidor está configurado para escuchar solicitudes entrantes en el puerto 22 para conexiones SSH. Posteriormente, reconoce y responde a la solicitud del cliente.

Cliente y servidor realizan un proceso de intercambio criptográfico para establecer una conexión segura. Durante este proceso acuerdan los métodos de cifrado y el intercambio de claves criptográficas. Al finalizar, se genera una clave secreta compartida entre ambos dispositivos: el cliente y el servidor remoto.

Paso 2: Autenticación del usuario

Después de establecer la conexión inicial, el cliente utiliza el método de autenticación elegido para verificar su identidad ante el servidor. Los métodos principales de autenticación en SSH son mediante contraseña o mediante claves SSH.

El cliente transmite la contraseña cifrada al servidor. También puede proporcionar una clave criptográfica u otro método de autenticación compatible con SSH. Sin embargo, la seguridad de las contraseñas depende de su complejidad, y en algunos casos se consideran un método menos seguro.

Generalmente, la autenticación mediante claves públicas y privadas SSH se considera más segura, ya que utiliza cifrado asimétrico. En este proceso, el servidor concede acceso al cliente cuando este logra descifrar correctamente el mensaje utilizando la clave adecuada.

Tras completar la autenticación, se establece un canal seguro entre cliente y servidor. Toda la información intercambiada se cifra, lo que impide que terceros no autorizados intercepten la comunicación.

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

Una vez creado el canal seguro, se inicia la sesión SSH. Dentro de esta sesión, el cliente puede interactuar de forma segura con el servidor, enviar archivos, ejecutar comandos y realizar otras acciones autorizadas.

Todos los comandos, archivos y datos intercambiados durante la sesión están cifrados y protegidos por el canal seguro. Esto garantiza la integridad de los datos y evita cualquier manipulación durante la transferencia.

Cuando el usuario finaliza la sesión SSH, puede cerrar la conexión. Al cerrar el canal seguro, se impide cualquier comunicación adicional hasta que se inicie una nueva sesión.

El funcionamiento de SSH en el puerto 22 implica la transferencia segura de datos entre cliente y servidor, la autenticación del cliente y la creación de un canal de comunicación cifrado. SSH es ampliamente utilizado y confiable para acceso remoto seguro gracias a sus métodos de cifrado y autenticación robustos.

¿Cómo generar una clave SSH?

SSH ofrece una forma segura de ejecutar comandos en servidores remotos, realizar redirección de puertos, crear túneles y llevar a cabo 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 clave pública.

La autenticación basada en clave pública se considera más segura y práctica que la autenticación por contraseña, ya que utiliza firmas digitales para reforzar la seguridad.

Si utilizas autenticación basada en claves SSH, puedes generar una clave en tu sistema Linux siguiendo estos pasos:

Paso 1: Verificar si existe una clave SSH antigua

Comienza creando una clave SSH en la máquina cliente Ubuntu que utilizarás para conectarte al servidor. Antes de generar una nueva clave, es importante comprobar si ya existe un par de claves SSH en tu sistema cliente para evitar sobrescribirlo.

Utiliza el siguiente comando:

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

Paso 2: Generar un par de claves SSH

Si aparece el error “No such file or directory”, significa que no existe una clave SSH en tu sistema. En ese caso, genera un nuevo par de claves ejecutando:

$ ssh-keygen

o

$ ssh-keygen -t rsa -b 4096 -C "useremail@yahoo.com"

El comando "ssh-keygen" crea por defecto un par de claves RSA de 3072 bits. Para almacenar la clave en la ubicación predeterminada dentro del subdirectorio '.ssh/', presiona “Enter”.

Luego se te pedirá que introduzcas una passphrase para añadir una capa extra de seguridad. Si prefieres dejarla vacía, presiona “Enter”.

Para verificar que la clave se generó correctamente:

$ ls ~/.ssh/id_*

Paso 3: Conectarse al servidor remoto

Transfiere la clave pública SSH generada al servidor remoto Ubuntu que deseas gestionar mediante:

$ ssh-copy-id user_name@server_IPaddress

Sustituye la dirección IP por la de tu servidor.

También puedes copiar manualmente la clave pública con:

$ cat ~/.ssh/id_rsa.pub | ssh username@serverip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Paso 4: Iniciar sesión con la clave SSH

Para iniciar sesión:

$ ssh username@serverIP

Si no configuraste una passphrase, el acceso será inmediato. Si la configuraste, deberás introducirla.

Paso 5: Deshabilitar la autenticación por contraseña

Inicia sesión con privilegios sudo y abre el archivo de configuración:

$ sudo nano /etc/ssh/sshd_config

Busca la línea:

PasswordAuthentication no

Guarda el archivo y reinicia el servicio SSH:

$ sudo systemctl restart ssh

Verifica que SSH funcione correctamente antes de cerrar la sesión actual.

Comandos para gestionar SSH en Linux

Instalar OpenSSH:

$ sudo apt install openssh-server

Iniciar y detener el servicio SSH:

$ sudo systemctl start ssh
$ sudo systemctl stop ssh

Comprobar el estado del servicio:

$ sudo systemctl status ssh

Habilitar el servicio:

$ sudo systemctl enable ssh

Reiniciar el servicio:

$ sudo systemctl restart ssh

Conectarse al servidor SSH:

$ ssh username@remotehost or IP-address

¿Cómo configurar el puerto SSH 22 en el firewall UFW?

Habilitar UFW:

$ sudo ufw enable

Permitir tráfico SSH en el puerto 22:

$ sudo ufw allow 22/tcp

Bloquear el puerto 22:

$ sudo ufw deny 22/tcp

Deshabilitar el servicio SSH:

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

Implementaciones SSH para Linux y Windows

OpenSSH (sistemas Unix): implementación predeterminada en Linux y macOS, conocida por su seguridad y estabilidad.

PuTTY (Windows): cliente SSH popular para Windows con interfaz sencilla y herramientas como PuTTYgen para gestión de claves.

SSH en PowerShell (Windows): Microsoft integró OpenSSH en Windows PowerShell, eliminando la necesidad de aplicaciones externas.

¿Cuál es el puerto SSH predeterminado?

SSH utiliza por defecto el puerto 22. Todas las conexiones SSH se inician a través de este puerto. Esto simplifica la configuración y estandariza las conexiones.

Sin embargo, en algunos casos se recomienda cambiar el puerto 22 por razones de seguridad, especialmente para reducir el riesgo de ataques de fuerza bruta.

Existen 65.536 puertos disponibles para comunicación. Cambiar el puerto SSH es una estrategia eficaz para proteger servidores.

¿Cómo cambiar el puerto SSH 22 por otro?

Paso 1: Crear copia de seguridad del archivo sshd_config

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

Paso 2: Cambiar el puerto

$ sudo nano /etc/ssh/sshd_config

Busca:

#Port 22

Elimina el símbolo “#” y cambia el número, por ejemplo:

Port 45571

Asegúrate de permitir el nuevo puerto en el firewall.

Paso 3: Reiniciar el servicio SSH

$ sudo service sshd restart

Paso 4: Probar el nuevo puerto

$ ssh username@userIP -p 45571

Ahora el puerto SSH predeterminado ha sido cambiado correctamente.

Conclusión

En este artículo aprendimos cómo funciona SSH en el puerto 22 y cómo cambiar el puerto predeterminado a otro número. También revisamos diversos comandos SSH que te ayudarán a comprender mejor el servicio y la configuración del puerto.

Después de leer esta guía, podrás conectar tu sistema a un servidor SSH y cambiar el número de puerto para proteger tu sistema frente a usuarios malintencionados.

Blog