ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Servidores Linux

Cómo cambiar el puerto SSH y la contraseña root en Linux

7 pasos 13 min de lectura 6 vistas 0
Contenido

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.

Mantenga abierta su sesión SSH actual y deje habilitado el puerto 22 mientras realiza el cambio. Cierre el puerto antiguo solo después de confirmar que puede iniciar sesión por el nuevo. Si se queda sin acceso, utilice la consola VNC del área de cliente para recuperarlo.

Paso 1: Haga una copia de seguridad y revise la configuración de SSH

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

Paso 2: Cambie el puerto SSH en sshd_config

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

Paso 3: Abra el nuevo puerto SSH en el firewall

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

Paso 4: Permita el nuevo puerto SSH en SELinux

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

Paso 5: Valide la configuración y reinicie sshd

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 '

Paso 6: Pruebe el nuevo puerto y cierre el puerto 22

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)

Paso 7: Cambie la contraseña root de Linux con passwd

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

Preguntas frecuentes

La conexión agota el tiempo de espera después de cambiar el puerto.

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.

¿El área de cliente mostrará mi nueva contraseña root?

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.

¿Basta con cambiar el puerto para estar seguro?

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.

¿Fue útil la respuesta?

Tutoriales relacionados