cambiar el puerto ssh en centos 7 y centos 8 02

Cambiar el puerto SSH en CentOS 7 y CentOS 8

Cambiar el puerto SSH en CentOS 7 y CentOS 8: guía paso a paso

Cambiar el puerto predeterminado de SSH (22) reduce el ruido de los ataques automatizados, pero por sí solo no constituye una defensa completa. Es una medida básica que debe complementarse con autenticación por clave pública, desactivación del acceso root vía SSH y herramientas como fail2ban para bloquear intentos repetidos. Antes de comenzar, asegúrate de tener acceso root o privilegios sudo y, preferiblemente, acceso a la consola del servidor para evitar quedar bloqueado si algo falla.

Cambiar el puerto SSH en CentOS 7 y CentOS 8

Paso 1: Instalar un editor de texto

Para editar el archivo de configuración necesitas un editor sencillo. nano es amigable para principiantes; vim es una alternativa potente si ya lo dominas.

  • En CentOS 7: yum -y install nano
  • En CentOS 8: dnf -y install nano (el comando yum sigue funcionando como capa de compatibilidad, pero dnf es el gestor predeterminado). En instalaciones mínimas puede ser necesario usar explícitamente dnf si yum no está presente.

Si prefieres vim, sustituye nano por vim en los comandos anteriores.

Paso 2: Editar la configuración del daemon SSH

Abre el archivo de configuración principal:

nano /etc/ssh/sshd_config

Localiza la línea que comienza con #Port 22, elimina el símbolo de almohadilla y cambia 22 por el número de puerto que deseas usar (por ejemplo, 22666). La línea debe quedar así:

Port 22666

Guarda los cambios y cierra el editor (Ctrl + X, luego Y y Enter en nano).

Paso 3: Configurar SELinux para el nuevo puerto

Cuando SELinux está en modo enforcing, es necesario indicar explícitamente que el nuevo puerto puede ser utilizado por sshd. El comando semanage port pertenece al paquete policycoreutils-python-utils.

Instala el paquete si no está presente:

  • CentOS 7: yum -y install policycoreutils-python-utils
  • CentOS 8: dnf -y install policycoreutils-python-utils (en instalaciones mínimas puede ser necesario usar dnf directamente).

Luego asigna el tipo SELinux adecuado al puerto TCP elegido:

semanage port -a -t ssh_port_t -p tcp 22666

Este comando permite que sshd escuche en el puerto 22666 bajo las políticas de SELinux. Si el comando semanage no se encuentra después de instalar el paquete, verifica que el repositorio BaseOS esté habilitado y repite la instalación.

Paso 4: Abrir el puerto en el firewall

Advertencia: si no utilizas firewalld y gestionas el firewall directamente con iptables o nftables, deberás agregar la regla correspondiente antes de continuar. Las instrucciones siguientes asumen firewalld, el firewall predeterminado en CentOS 7 y 8.

Agrega el puerto a la zona pública y recarga la configuración:

firewall-cmd --permanent --zone=public --add-port=22666/tcp
firewall-cmd --reload

Si usas iptables (por ejemplo, en un servidor sin firewalld), agrega una regla manual:

iptables -A INPUT -p tcp --dport 22666 -j ACCEPT

Y guarda las reglas para que persistan tras un reinicio (por ejemplo, service iptables save o iptables-save > /etc/sysconfig/iptables).

Importante: mantén el puerto 22 abierto temporalmente hasta que verifiques que el nuevo puerto funciona correctamente. Esto evita un bloqueo accidental.

Paso 5: Reiniciar el servicio SSH

Aplica los cambios reiniciando el daemon SSH con systemctl, el método estándar en ambas versiones:

systemctl restart sshd

Los comandos alternativos (service sshd restart o /etc/init.d/sshd restart) aún funcionan, pero systemctl es preferible en sistemas modernos.

Paso 6: Verificar que el puerto está escuchando

Confirma que el servicio SSH está vinculado al nuevo puerto:

ss -tnlp | grep ssh

La salida debería mostrar algo como:

LISTEN 0 128 *:22666 *:* users:(("sshd",pid=1234,fd=3))
LISTEN 0 128 [::]:22666 [::]:* users:(("sshd",pid=1234,fd=4))

Si ss no está disponible, puedes usar netstat:

netstat -tlnp | grep :22666

Paso 7: Probar la conexión desde una nueva sesión

Antes de cerrar tu sesión SSH actual, abre una nueva terminal y prueba la conexión al nuevo puerto:

ssh -p 22666 tu_usuario@tu_servidor

Si la conexión se establece correctamente, puedes proceder a cerrar la sesión anterior. Si falla, revisa los pasos anteriores: configuración de sshd_config, SELinux, firewall y estado del servicio.

Solo después de verificar el acceso exitoso mediante el nuevo puerto, considera cerrar el puerto 22 en el firewall (si no lo necesitas para otros servicios):

firewall-cmd --permanent --zone=public --remove-port=22/tcp
firewall-cmd --reload

Recuerda que cambiar el puerto es solo una capa adicional. Para una seguridad robusta, combina esta medida con autenticación por clave pública, desactivación del acceso root vía SSH (PermitRootLogin no) y herramientas como fail2ban para bloquear intentos repetidos.

Fuentes consultadas


Publicado

en

por

Etiquetas: