Cambiar el puerto de escucha SSH es una manera fácil de ayudar a asegurar el inicio de sesión remoto en sus servidores Linux. Pero cuando SELinux está involucrado, debe realizar algunos pasos adicionales. Jack Wallen le muestra cómo.
SSH tiene muchos trucos bajo la manga de seguridad, uno de los cuales es configurar el servicio para usar un puerto no estándar. Fuera de la caja, SSH usa el puerto 22. Si desea una manera fácil de tropezar con posibles intentos de piratería, puede configurar ese servicio para usar un puerto diferente, como el 33000.
En las distribuciones de Linux que no usan SELinux, este proceso es bastante sencillo. Sin embargo, si SELinux está involucrado, no puede simplemente cambiar el puerto sin dejar que el sistema de seguridad conozca su pequeño secreto.
Y eso es exactamente lo que voy a hacer aquí, configurar Fedora 35 para usar el puerto 33000 para el tráfico SSH entrante. Este mismo proceso funcionará en cualquier distribución de Linux que utilice SELinux (como RHEL, Alma Linux y Rocky Linux).
Dicho esto, pongámonos a trabajar.
Índice de contenidos
Lo que necesitarás
Para realizar este cambio, necesitará una instancia en ejecución de una distribución de Linux que incluya SELinux, así como el servidor SSH instalado y un usuario con acceso sudo.
Cómo cambiar el puerto SSH predeterminado
Lo primero que haremos es cambiar el puerto predeterminado que usa SSH, que se encuentra en el archivo sshd_config. Abra ese archivo para editarlo con el comando:
sudo nano /etc/ssh/sshd_config
En ese archivo, busque la línea:
#Port 22
Cambie esa línea para que lea:
Port 33000
Guarde y cierre el archivo.
No reinicie el demonio todavía, ya que primero debemos tratar con SELinux.
Cómo alertar a SELinux sobre el cambio
Lo primero que haremos es verificar que SELinux sea consciente de SSH. Emita el comando:
sudo semanage port -l | grep ssh
Debería ver en la lista:
ssh_port_t tcp 22
Entonces SELinux está permitiendo el tráfico SSH en el puerto 22. Lo cambiaremos a 33000 con el comando:
sudo semanage port -a -t ssh_port_t -p tcp 33000
Ahora, si comprobamos qué puerto se está utilizando, debería volver como:
ssh_port_t tcp 33000, 22
Aunque SELinux permite el puerto 22, SSH no escuchará ese puerto, por lo que no es un problema.
Cómo abrir el firewall al puerto 33000
A continuación, debemos abrir el firewall para permitir el tráfico SSH a través del puerto 33000. Para ello, emitimos el comando:
sudo firewall-cmd --add-port=33000/tcp --permanent
A continuación, vuelva a cargar el firewall con:
sudo firewall-cmd --reload
A continuación, deshabilitaremos el puerto SSH estándar a través del firewall con:
sudo firewall-cmd --remove-service=ssh --permanent
Una vez más, recargue el firewall con:
sudo firewall-cmd --reload
Cómo reiniciar el demonio SSH e iniciar sesión
Ahora podemos reiniciar el demonio SSH con:
sudo systemctl restart sshd
Inicie sesión en el servidor recién configurado con:
ssh USER@SERVER -p 33000
Donde USUARIO es un nombre de usuario remoto y SERVIDOR es la dirección IP (o dominio) del servidor remoto.
Y así es como configura SSH para usar un puerto no estándar en una distribución de Linux que hace uso de SELinux. Debería considerar cambiar todos sus servidores para usar un puerto no estándar para el servicio SSH. Cuando combina eso con otros trucos de refuerzo de SSH, contribuirá en gran medida a evitar que los usuarios no deseados obtengan acceso a sus servidores.