Por defecto, SSH funciona en el puerto 22, y es justo el primero que comprueban los bots que buscan servidores para atacar. Si mueves SSH a otro puerto, la mayor parte de ese «ruido» simplemente desaparecerá de los registros.
Es importante entender que cambiar el puerto es una medida adicional, no un sustituto de una protección de verdad. Lo principal es el acceso con claves SSH, y el cambio de puerto lo complementa muy bien.
No cierres la conexión actual
Haz todos los pasos sin cerrar la sesión con la que estás conectado. Solo podrás cerrarla cuando el acceso por el nuevo puerto funcione en otra ventana.
1. Elige un puerto nuevo
Sirve cualquier número libre entre 1024 y 65535. En los ejemplos usamos 2222, pero es mejor elegir algo menos evidente, por ejemplo 48222. Apunta el puerto que elijas, porque lo necesitarás cada vez que te conectes.
2. Abre el puerto nuevo en el cortafuegos
Los comandos se ejecutan en el servidor.
En Ubuntu y Debian puedes saltarte este paso si no tienes el cortafuegos activado.
En AlmaLinux, CentOS y Oracle Linux tienes que hacerlo en cualquier caso por SELinux.
# Permitimos las conexiones al nuevo puerto SSH
sudo ufw allow 2222/tcp# Abrimos el nuevo puerto en el cortafuegos firewalld
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
# Por defecto, SELinux solo permite SSH en el puerto 22.
# Instalamos la utilidad semanage y añadimos el nuevo puerto a la lista
# de puertos permitidos para SSH
sudo dnf install -y policycoreutils-python-utils
sudo semanage port -a -t ssh_port_t -p tcp 22223. Indica el puerto nuevo en la configuración de SSH
Los comandos se ejecutan en el servidor.
# Abrimos el archivo con nuestra configuración de SSH. Si has seguido
# la guía sobre claves SSH,
# ya existe; si no, el archivo se creará ahora
sudo nano /etc/ssh/sshd_config.d/00-security.confAñade al archivo una línea con el puerto nuevo.
# Ahora SSH escucha en el puerto 2222 en lugar del 22
Port 2222Para guardar el archivo, pulsa Ctrl + O y Enter, y para salir del editor, Ctrl + X.
# Comprobamos que la configuración no tenga errores. Si el comando
# no muestra nada, todo está bien
sudo sshd -t4. Reinicia SSH
# En las versiones nuevas de Ubuntu, SSH se inicia mediante un socket de systemd,
# así que primero recargamos la configuración y después reiniciamos
# tanto el socket como el propio SSH
sudo systemctl daemon-reload
sudo systemctl restart ssh.socket
sudo systemctl restart ssh# Reiniciamos SSH para que empiece a escuchar en el puerto nuevo
sudo systemctl restart ssh# Reiniciamos SSH para que empiece a escuchar en el puerto nuevo
sudo systemctl restart sshdAhora vamos a comprobar que SSH escucha de verdad en el puerto nuevo.
# En la lista debe aparecer el puerto 2222
sudo ss -tlnp | grep ssh5. Conéctate por el puerto nuevo
Ejecuta este comando en tu ordenador, en una ventana nueva del terminal.
# La opción -p indica el puerto de conexión
ssh -p 2222 admin@SERVER_IPEn Termius, el puerto se cambia en la configuración de la conexión, en el campo Port.
6. Cierra el puerto 22 antiguo
Cuando el acceso por el puerto nuevo ya funcione, cierra el puerto 22 en el cortafuegos.
# Eliminamos la regla del antiguo puerto SSH
sudo ufw delete allow 22/tcp
# Comprobamos la lista de reglas
sudo ufw status# Quitamos el servicio SSH estándar (puerto 22) de los abiertos
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
# Comprobamos qué está abierto
sudo firewall-cmd --list-allSi usas fail2ban
Si usas fail2ban, indica el puerto nuevo también en su configuración; si no, bloqueará a los atacantes en el puerto equivocado. Te explicamos cómo hacerlo en el artículo sobre fail2ban.
Si aun así pierdes el acceso
Si aun así pierdes el acceso, abre el servidor con el botón Console en la lista de servidores del área de cliente. Desde ahí puedes borrar la línea Port del archivo /etc/ssh/sshd_config.d/00-security.conf y reiniciar SSH.
Nuestros recursos
Canal de Telegram: https://t.me/f3cloud_news
Web del hosting: https://f3cloud.com