Cómo cambiar el puerto SSH en Linux (Guía de seguridad)
¿Cansado de ver intentos de acceso sospechosos en tu servidor cada mañana? No estás solo. Cambiar el puerto SSH por defecto (el famoso 22) es una de las primeras y más efectivas capas de seguridad que puedes aplicar en cualquier máquina Linux.
En esta guía extensa y práctica, te voy a explicar paso a paso cómo cambiar el puerto SSH en Linux, por qué es una buena idea hacerlo y qué precauciones debes tomar para no quedarte fuera de tu propio servidor. No necesitas ser un gurú de la administración de sistemas; solo seguir las instrucciones con calma.
Vamos a ello.
¿Por qué deberías cambiar el puerto SSH por defecto?
Antes de ensuciarnos las manos con la terminal, es crucial entender el "por qué". El puerto 22 es el estándar mundial para SSH. Esto lo convierte en un imán para bots y atacantes automáticos que escanean internet constantemente en busca de servidores expuestos.
Al cambiar el puerto SSH a un número no estándar (por ejemplo, el 2222 o el 4821), reduces drásticamente el ruido de fondo de ataques automatizados. No es una seguridad infalible (un escáner de puertos dedicado te encontrará igualmente), pero es un obstáculo excelente que te da tranquilidad.
Beneficios clave de cambiar el puerto SSH:
- Reduce el ruido y los intentos de fuerza bruta: Los bots suelen atacar solo al puerto 22. Al cambiarlo, desaparecen la mayoría de los intentos de acceso no autorizado.
- Dificulta el reconocimiento automático: El atacante tiene que hacer un escaneo más profundo para encontrar tu servicio SSH.
- Cumple con políticas de seguridad: Muchas auditorías y empresas exigen no usar puertos por defecto en servicios críticos.
¿Es suficiente con cambiar el puerto?
No. Cambiar el puerto SSH es una medida de seguridad por oscuridad, es decir, esconder las cosas. Debes combinarlo siempre con otras prácticas como:
- Deshabilitar el acceso root por SSH.
- Usar autenticación por clave pública en lugar de contraseña.
- Configurar un firewall (UFW o iptables) para permitir solo IPs concretas si es posible.
Antes de empezar: Preparación y requisitos previos
Este es el paso más importante de toda la guía. Un error aquí puede dejarte sin acceso al servidor. Tómate tu tiempo.
[WARNING] ¡NUNCA cierres la sesión actual hasta que hayas probado la nueva conexión en otra pestaña o terminal! Si cometes un error en la configuración y cierras la sesión, podrías quedarte bloqueado para siempre.
Requisitos:
- Acceso root o un usuario con privilegios
sudoal servidor. - Conexión a internet estable.
- Un editor de texto en la terminal (usaremos
nanopor su simplicidad, pero puedes usarvimsi lo prefieres).
Paso 0: Actualiza tu sistema
Siempre es buena práctica empezar con el sistema actualizado. Ejecuta:
sudo apt update && sudo apt upgrade -y
(Si usas CentOS o Fedora, usa sudo yum update o sudo dnf update).
Paso 1: Localizar y editar el archivo de configuración de SSH
El archivo de configuración principal de SSH se encuentra en /etc/ssh/sshd_config. Vamos a editarlo.
-
Abre el archivo con nano:
sudo nano /etc/ssh/sshd_config -
Busca la línea que dice
#Port 22. Está comentada (empieza con#). -
Elimina el símbolo
#y cambia el número22por el nuevo puerto que quieras usar.
[TIP] ¿Qué puerto elegir? Elige un número entre 1024 y 65535. Evita puertos obvios como 2222 (muy común) o 8080 (usado para web). Un número aleatorio como 4821 o 31000 es ideal. Asegúrate de que no esté en uso por otro servicio. Puedes verificar con: sudo netstat -tulpn | grep <puerto>
Por ejemplo, si elegimos el puerto 4821, la línea debería quedar así:
Port 4821
- Guarda el archivo: En nano, presiona
Ctrl + O(guardar) y luegoEnterpara confirmar. Después presionaCtrl + Xpara salir.
Paso 2: Configurar el firewall para el nuevo puerto
Este paso es crítico. Si no abres el nuevo puerto en el firewall, tu servidor rechazará la conexión, incluso si la configuración de SSH es correcta.
Dependiendo de tu firewall, el comando cambia. Te muestro los dos más comunes:
Opción A: UFW (Uncomplicated Firewall) - El más fácil
-
Permite el nuevo puerto:
sudo ufw allow 4821/tcp -
(Opcional pero recomendado) Elimina la regla que permite el puerto 22 una vez que hayas verificado que todo funciona. No lo hagas aún, espera al final.
# sudo ufw delete allow 22/tcp -
Recarga el firewall para aplicar los cambios:
sudo ufw reload
Opción B: FirewallD (usado en CentOS/RHEL)
-
Añade el nuevo puerto a la zona pública:
sudo firewall-cmd --permanent --add-port=4821/tcp -
Recarga la configuración:
sudo firewall-cmd --reload
Paso 3: Reiniciar el servicio SSH
Ahora que el archivo está editado y el firewall configurado, es hora de reiniciar el servicio SSH para que los cambios surtan efecto.
[INFO] En algunos sistemas, reiniciar SSH no corta las conexiones activas. Sin embargo, es mejor prevenir.
sudo systemctl restart sshd
(En algunos sistemas como Debian/Ubuntu, el servicio se llama ssh en lugar de sshd. Si el comando falla, prueba con sudo systemctl restart ssh).
Paso 3.1: La prueba de fuego (¡No lo olvides!)
Aquí es donde entra en juego el consejo del principio.
-
Abre una NUEVA terminal en tu ordenador local (no cierres la actual).
-
Intenta conectarte al servidor usando el nuevo puerto:
ssh -p 4821 usuario@tu_servidor_ip -
Si la conexión es exitosa y ves el mensaje de bienvenida, ¡enhorabuena! Has cambiado el puerto SSH correctamente.
-
Si la conexión falla, revisa los pasos anteriores. Vuelve a la terminal original y asegúrate de que el puerto en
sshd_configes correcto y que el firewall lo permite.
Paso 4: Deshabilitar el acceso al puerto antiguo (Opcional pero crucial)
Una vez que has confirmado que puedes conectarte con el nuevo puerto, es hora de cerrar el antiguo para que los bots sigan intentando entrar sin éxito.
- Vuelve a la terminal original (la que tiene la sesión SSH activa).
- Ahora sí, elimina la regla del puerto 22 en el firewall.
Para UFW:
sudo ufw delete allow 22/tcp
Para FirewallD:
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
[WARNING] Asegúrate de que tu proveedor de hosting o VPS no tenga un firewall externo (como Security Groups en AWS o paneles de control) que esté bloqueando el nuevo puerto. Si es así, deberás abrirlo desde ese panel también.
Paso 5: Configuraciones adicionales para blindar tu SSH
Ahora que has cambiado el puerto, vamos a aprovechar para endurecer un poco más la seguridad. Mientras estamos en el archivo sshd_config, podemos hacer estos ajustes:
Deshabilitar el acceso root
Permitir que root se conecte por SSH es peligroso. Es mejor usar un usuario normal y luego usar sudo.
Busca la línea #PermitRootLogin yes y cámbiala a:
PermitRootLogin no
Autenticación por clave pública
Esto es lo más recomendado. Genera una clave en tu ordenador local con ssh-keygen y cópiala al servidor con ssh-copy-id. Después, deshabilita las contraseñas.
Busca la línea #PasswordAuthentication yes y cámbiala a:
PasswordAuthentication no
[WARNING] ¡CUIDADO! Si deshabilitas las contraseñas sin haber configurado correctamente las claves públicas, te quedarás fuera. Hazlo solo si estás 100% seguro de que tu clave pública está en el servidor.
Cambiar el tiempo de espera y el número de intentos
Añade estas líneas al final del archivo para que los ataques de fuerza bruta sean más difíciles:
LoginGraceTime 30
MaxAuthTries 3
Esto limita el tiempo para iniciar sesión a 30 segundos y reduce los intentos de contraseña a 3.
Caso especial: ¿Usas un panel de control como Syspanel?
Si tu servidor utiliza un panel de control para gestionar el hosting, es posible que el panel gestione el firewall y el propio SSH.
[INFO] Si tu proveedor te ofrece Syspanel (anteriormente conocido como HestiaCP), debes saber que el acceso al panel se realiza a través del puerto 2106 (https). Además, Syspanel suele integrar su propio firewall. En este caso, después de editar el sshd_config, deberás ir a la sección de "Firewall" dentro de Syspanel y añadir una regla para permitir el tráfico TCP en tu nuevo puerto SSH. Si no lo haces, el panel podría bloquear la conexión entrante.
Pasos extra si usas Syspanel:
- Accede a tu panel en
https://tu_ip:2106. - Ve a la sección de Firewall o Seguridad.
- Añade una regla para permitir el puerto que has elegido (ej. 4821) en TCP.
- Guarda los cambios y aplica la regla.
Recuerda que el panel no interfiere con la edición del archivo de configuración, pero es vital que el firewall del panel esté sincronizado con tu nueva elección.
Solución de problemas comunes (FAQ)
Aquí tienes las dudas más frecuentes que suelen surgir:
¿Qué hago si me he quedado bloqueado?
- Contacta con tu proveedor: Si es un VPS, la mayoría de los proveedores ofrecen un acceso por consola web (VNC o similar) desde su panel de control. Usa eso para entrar sin SSH.
- Revierte los cambios: Una vez dentro, edita
/etc/ssh/sshd_configy vuelve a ponerPort 22. Luego reinicia el servicio. - Revisa el firewall: Si el firewall estaba bloqueando el puerto, desactívalo temporalmente con
sudo ufw disablepara diagnosticar.
¿Puedo tener SSH en dos puertos a la vez?
Sí, puedes. Para ello, en lugar de una línea Port, escribe dos:
Port 22
Port 4821
Esto es útil para hacer la transición sin riesgo de quedarse fuera. Una vez que confirmes que el nuevo funciona, elimina la línea del puerto 22 y reinicia.
¿Es necesario reiniciar el servidor?
No, solo reiniciar el servicio SSH es suficiente. Reiniciar el servidor es un paso extra que no necesitas.
¿Cómo conecto desde Windows?
Usa un cliente como PuTTY. En el campo "Port", escribe el nuevo número de puerto en lugar del 22.
Conclusión: La seguridad es un hábito, no un acto
Cambiar el puerto SSH en Linux es una tarea sencilla pero que requiere atención al detalle. Has aprendido a editar el archivo de configuración, ajustar el firewall y probar la conexión de forma segura. Este pequeño cambio, combinado con la desactivación del acceso root y el uso de claves públicas, convertirá tu servidor en un objetivo mucho menos atractivo para los atacantes.
Recuerda siempre la regla de oro: nunca cierres tu sesión actual hasta que la nueva esté funcionando. Con esta guía, ya tienes el conocimiento para hacerlo sin miedo.
Ahora, toma aire, sigue los pasos con calma y disfruta de un servidor más seguro. Si tienes alguna duda, repasa la sección de FAQ o busca más información sobre "seguridad SSH" para seguir aprendiendo. ¡Buena suerte!
