Cambiar el puerto SSH | INTROSERV
EUR
european

EUR

usa

USD

Spanish Es
Ex. VAT Ex. VAT 0%

Cambiar el puerto SSH

Cambiar el puerto SSH predeterminado (22) reduce la exposición a escaneos automatizados y ataques básicos de fuerza bruta, pero no sustituye las medidas de seguridad adecuadas.

Warning

Antes de realizar cualquier cambio, asegúrese de tener una sesión SSH activa abierta. No la cierre hasta haber verificado que el nuevo puerto funciona. Si algo sale mal, perderá el acceso al servidor.

Elegir un número de puerto

Elija un número de puerto superior a 1024. Los puertos del rango 49152–65535 tienen menos probabilidades de entrar en conflicto con otros servicios conocidos. Evite alternativas de uso frecuente, como 2222 o 22222, ya que suelen ser objetivos de escáneres automatizados. En esta guía se utiliza 22777 como ejemplo.

Hacer una copia de seguridad del archivo de configuración

Antes de realizar cualquier cambio, cree una copia de seguridad del archivo de configuración de SSH:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Cambiar el puerto SSH en Ubuntu y Debian

A partir de Debian 12 y algunas versiones más recientes de Ubuntu (22.04+), SSH puede utilizar systemd socket activation de forma predeterminada. En este caso, cambiar únicamente la directiva Port en sshd_config a menudo no es suficiente.

Primero, compruebe si la activación mediante socket está activa:

systemctl is-active ssh.socket

Si el comando devuelve active, configure el socket SSH para utilizar el nuevo puerto.

Cree una anulación de systemd para el socket SSH:

systemctl edit ssh.socket

Añada el siguiente contenido:

[Socket] ListenStream= ListenStream=22777

La línea vacía ListenStream= elimina el puerto predeterminado (22). Sin ella, SSH puede escuchar tanto en el puerto 22 como en el nuevo puerto.

Para una mayor fiabilidad, establezca también el puerto en la configuración de SSH. Esto ayuda al generador de systemd y conserva la configuración después de las actualizaciones de OpenSSH:

mkdir -p /etc/ssh/sshd_config.d echo "Port 22777" | tee /etc/ssh/sshd_config.d/10-port.conf

Info

Para una mejor compatibilidad, también puede especificar las direcciones explícitamente:

[Socket] ListenStream= ListenStream=0.0.0.0:22777 ListenStream=[::]:22777

Guarde la configuración y aplique los cambios:

systemctl daemon-reload systemctl restart ssh.socket systemctl restart ssh

Compruebe que el servicio está en ejecución:

systemctl status ssh.socket

Info

En algunos sistemas más recientes, como Ubuntu 24.04+, el generador de systemd puede leer automáticamente el puerto desde sshd_config. En ese caso, puede ser suficiente editar Port directamente y ejecutar systemctl daemon-reload seguido de systemctl restart ssh.socket. El método de anulación descrito anteriormente funciona en todas las versiones.

Versiones anteriores de Ubuntu y Debian

En versiones de Ubuntu anteriores a 22.04 y versiones de Debian anteriores a 12, SSH no se gestiona mediante la activación por socket. Abra el archivo de configuración de SSH:

nano /etc/ssh/sshd_config

Busque la siguiente línea:

Port 22

Quite el comentario y sustituya 22 por el número de puerto que haya elegido:

Port 22777

Guarde el archivo y valide la configuración:

sshd -t

Si no se encuentra el comando, utilice:

/usr/sbin/sshd -t

Si el comando no devuelve ninguna salida, la configuración es válida. Reinicie el servicio SSH:

systemctl restart ssh

Desactivar la activación mediante socket

Si prefiere gestionar SSH mediante el servicio tradicional en lugar del socket, puede desactivar la activación mediante socket:

systemctl disable --now ssh.socket systemctl enable --now ssh

Después de esto, edite sshd_config como se ha descrito anteriormente y reinicie SSH con:

systemctl restart ssh

Cambiar el puerto SSH en AlmaLinux, Rocky Linux y CentOS

Editar el archivo de configuración de SSH

Abra el archivo de configuración de SSH:

nano /etc/ssh/sshd_config

Busque la siguiente línea:

Port 22

Quite el comentario y sustituya 22 por el número de puerto que haya elegido:

Port 22777

Guarde el archivo y valide la configuración:

/usr/sbin/sshd -t

Si el comando no devuelve ninguna salida, la configuración es válida. Reinicie el servicio SSH:

systemctl restart sshd

Compruebe que el servicio está en ejecución:

systemctl status sshd

Permitir el puerto en SELinux

En los sistemas con SELinux habilitado, también debe permitir el nuevo puerto en la política de SELinux. Para comprobar qué puertos están actualmente permitidos para SSH, ejecute:

semanage port -l | grep ssh

A continuación, añada o modifique el nuevo puerto:

semanage port -a -t ssh_port_t -p tcp 22777 || semanage port -m -t ssh_port_t -p tcp 22777

Si semanage no está instalado, instale el paquete necesario:

dnf install policycoreutils-python-utils

Configurar el firewall

Permita siempre el nuevo puerto en el firewall antes de reiniciar SSH. Si reinicia SSH primero, puede perder el acceso al servidor.

UFW

ufw allow 22777/tcp ufw reload ufw status

firewalld

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

iptables

iptables -I INPUT -p tcp --dport 22777 -j ACCEPT iptables-save > /etc/iptables/rules.v4

Info

El comando iptables-save guarda las reglas en un archivo únicamente si iptables-persistent está instalado y configurado en el sistema. Para instalarlo, ejecute:

apt install -y iptables-persistent

Compruebe que su distribución utiliza este archivo antes de confiar en él para la persistencia. Tenga en cuenta que los sistemas modernos pueden utilizar nftables en lugar de iptables. Si utiliza nftables, añada una regla que permita el nuevo puerto en la configuración de nftables.

Configurar Fail2Ban

Si Fail2Ban está configurado en el servidor, actualice el puerto SSH en su configuración. Abra /etc/fail2ban/jail.local o el archivo correspondiente en /etc/fail2ban/jail.d/ y establezca:

port = 22777

Después de actualizar la configuración, reinicie Fail2Ban:

systemctl restart fail2ban

Verificar el nuevo puerto

Compruebe que SSH está escuchando en el nuevo puerto:

ss -tlnp | grep :22777

Como alternativa, puede mostrar todos los listeners relacionados con SSH:

ss -tlnp | grep ssh

En sistemas antiguos, utilice netstat en su lugar:

netstat -tlnp | grep :22777

También puede comprobar directamente el estado del servicio.

En Ubuntu y Debian:

systemctl status ssh.socket

En AlmaLinux, Rocky Linux y CentOS:

systemctl status sshd

Sin cerrar la sesión SSH actual, abra una nueva ventana de terminal y conéctese utilizando el nuevo puerto:

ssh root@YOUR_SERVER_IP -p 22777

Si la conexión se realiza correctamente, puede cerrar la sesión anterior. A continuación, elimine el puerto 22 de las reglas del firewall si ya no es necesario.

Para UFW:

ufw delete allow 22/tcp ufw reload

Para firewalld:

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

Warning

No elimine el puerto 22 del firewall antes de verificar que el nuevo puerto funciona. Si la nueva conexión falla, utilice la sesión SSH abierta para solucionar el problema o revertir los cambios:

systemctl revert ssh.socket cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config rm -f /etc/ssh/sshd_config.d/10-port.conf systemctl daemon-reload systemctl restart ssh.socket

Si la activación mediante socket está deshabilitada, sustituya los dos últimos comandos por:

systemctl restart ssh

Conclusión

Cambiar el puerto SSH predeterminado de 22 a un puerto personalizado puede reducir la exposición a escaneos automatizados e intentos básicos de fuerza bruta. Sin embargo, cambiar el puerto debe considerarse una medida de seguridad adicional y no un sustituto de una correcta protección de SSH.

Mantenga siempre abierta la sesión SSH actual hasta que se haya conectado correctamente mediante el nuevo puerto. Una vez verificada la nueva conexión, puede cerrar de forma segura la sesión anterior y eliminar el puerto 22 del firewall si ya no es necesario.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA