Start typing to search across invoices, services, domains, tickets, and more...
El puerto 22 recibe a diario ataques de fuerza bruta de bots automatizados, por lo que mover SSH a un puerto no estándar y establecer una contraseña root segura son los primeros pasos de protección de cualquier servidor nuevo. Esta guía explica cómo cambiar el puerto SSH y la contraseña root en Linux: editar sshd_config, permitir el nuevo puerto en el firewall y en SELinux, reiniciar sshd de forma segura y cambiar la contraseña con passwd. Es válida para Debian/Ubuntu y CentOS/Rocky/AlmaLinux.
Haga una copia de seguridad de /etc/ssh/sshd_config y compruebe el valor actual de Port. Los sistemas más recientes también pueden tener archivos adicionales en /etc/ssh/sshd_config.d/; revíselos también para que su cambio no quede anulado.
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
grep -nE '^#?Port' /etc/ssh/sshd_config
grep -rn '^Port' /etc/ssh/sshd_config.d/ 2>/dev/null
Edite sshd_config con vi o nano, quite el comentario de Port y añada una línea para el nuevo puerto. Elija un puerto libre entre 1024 y 65535; los ejemplos usan el 2222. Durante la transición, mantenga la escucha tanto en el 22 como en el nuevo puerto.
# /etc/ssh/sshd_config - mantenga el 22 temporalmente y añada el nuevo puerto
Port 22
Port 2222
CentOS, Rocky y AlmaLinux usan firewalld de forma predeterminada; Ubuntu suele usar ufw. Si hay un firewall activo y el nuevo puerto no está permitido, no podrá conectarse después de reiniciar sshd. Omita este paso si no tiene ningún firewall habilitado.
# CentOS / Rocky / AlmaLinux con firewalld
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload
# Debian / Ubuntu con ufw
ufw allow 2222/tcp
ufw status
En sistemas de la familia RHEL con SELinux en modo Enforcing, sshd solo puede escuchar en puertos autorizados. Registre el nuevo puerto como ssh_port_t con semanage o sshd no podrá iniciarse. Debian y Ubuntu no habilitan SELinux de forma predeterminada, así que puede omitir este paso.
# Solo en sistemas con SELinux en modo enforcing (CentOS / Rocky / AlmaLinux)
getenforce
dnf install -y policycoreutils-python-utils
semanage port -a -t ssh_port_t -p tcp 2222
semanage port -l | grep ssh_port_t
Ejecute sshd -t para comprobar la sintaxis (si no muestra nada, está correcta) y luego reinicie el servicio. En Ubuntu el servicio se llama ssh y, a partir de Ubuntu 22.10, usa activación por socket, por lo que también debe recargar systemd y reiniciar ssh.socket. Por último, confirme con ss que el nuevo puerto está a la escucha.
# Compruebe primero la sintaxis - si no hay salida, todo está bien
sshd -t
# CentOS / Rocky / AlmaLinux / Debian
systemctl restart sshd
# Ubuntu (el servicio se llama "ssh"); en Ubuntu 22.10+ con activación por socket ejecute también:
systemctl restart ssh
systemctl daemon-reload && systemctl restart ssh.socket
ss -tlnp | grep -E ':22 |:2222 '
Abra una nueva terminal en su equipo e inicie sesión por el nuevo puerto. Cuando funcione, elimine la línea Port 22 de sshd_config, reinicie sshd y elimine la regla del firewall para el puerto 22.
# Desde su propio equipo, en una ventana NUEVA
ssh -p 2222 [email protected]
# Cuando funcione: elimine "Port 22" de sshd_config, reinicie sshd y luego cierre el 22
firewall-cmd --permanent --remove-service=ssh && firewall-cmd --reload # firewalld
ufw delete allow 22/tcp # ufw (if a rule exists)
Ejecute passwd e introduzca la nueva contraseña dos veces; no se muestra nada mientras escribe. Use una contraseña aleatoria de al menos 12 caracteres con mayúsculas, minúsculas, números y símbolos, y guárdela en un gestor de contraseñas. Para scripts, chpasswd establece contraseñas de forma no interactiva.
# Cambiar la contraseña root de forma interactiva
passwd root
# O de forma no interactiva (evite dejarla en el historial del shell en sistemas compartidos)
echo 'root:N3w-Str0ng-P@ssw0rd' | chpasswd
Normalmente lo está bloqueando el firewall o SELinux. Inicie sesión mediante la consola VNC, ejecute ss -tlnp | grep sshd para confirmar que sshd escucha en el nuevo puerto y después revise firewall-cmd --list-all o ufw status.
No. Las contraseñas cambiadas dentro del sistema operativo no se sincronizan con el área de cliente, así que guárdela en un lugar seguro. Si la olvida, restablézcala desde el modo monousuario a través de la consola VNC o abra un ticket de soporte.
Reduce mucho el ruido de los escáneres, pero también debería pasar a la autenticación con clave SSH, desactivar el inicio de sesión con contraseña y usar fail2ban para frenar los intentos de fuerza bruta.
¿Sigue con problemas después de seguir estos pasos? Abra un ticket de soporte y el equipo técnico 24/7 de IMIDC le ayudará. Incluya la IP del servidor, el sistema operativo, los comandos que ejecutó y una captura de pantalla del error para que podamos localizar el problema más rápido.