Procédure
Para asegurar el acceso SSH de su VPS LWS, se recomienda desactivar por completo la autenticación por contraseña en favor de una clave SSH y, a continuación, instalar fail2ban. Esta configuración protege su servidor contra ataques de fuerza bruta y elimina los riesgos relacionados con contraseñas interceptadas o adivinadas. En este tutorial, copiará su clave SSH pública, ajustará la configuración SSH para neutralizar los ajustes predeterminados de cloud-init y luego instalará y verificará la protección activa de fail2ban.
Abra una terminal en su ordenador y conéctese al servidor con la contraseña root recibida en su correo de entrega. Durante la primera conexión, acepte la huella de la clave del servidor escribiendo yes. Una vez conectado, salga inmediatamente de la sesión ejecutando exit para volver a su máquina local.
ssh root@203.0.113.10
exitDesde su ordenador, utilice el comando ssh-copy-id para copiar su clave pública al servidor. Introduzca su contraseña root una última vez cuando la terminal se lo pida. Si ya había añadido su clave SSH durante el pedido o la reinstalación desde el panel KVM, este paso no es necesario.
ssh-copy-id root@203.0.113.10Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@203.0.113.10'"
and check to make sure that only the key(s) you wanted were added.Vuelva a conectarse a su VPS por SSH desde su ordenador. La conexión debe establecerse instantáneamente sin solicitar la contraseña root del servidor, confirmando que su clave pública se ha instalado correctamente.
ssh root@203.0.113.10Enumere los archivos presentes en el directorio /etc/ssh/sshd_config.d/ y muestre el contenido de 50-cloud-init.conf. Este archivo activa la autenticación por contraseña. Como el servidor SSH conserva la primera directiva encontrada al leer los archivos por orden alfabético, su propia configuración debe leerse obligatoriamente antes que esta.
ls /etc/ssh/sshd_config.d/
cat /etc/ssh/sshd_config.d/50-cloud-init.confPasswordAuthentication yesAbra el editor nano para crear el archivo 00-cles-uniquement.conf. El prefijo 00 garantiza que este archivo se procesará antes que 50-cloud-init.conf. Escriba en él las directivas que desactivan las contraseñas y limitan el acceso root a las claves, y luego guarde con Ctrl+X, confirme con O (o Y según el idioma) y pulse Entrar.
nano /etc/ssh/sshd_config.d/00-cles-uniquement.conf# Conexión SSH solo mediante clave
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-passwordEjecute sshd -t para comprobar que no hay errores de sintaxis y luego verifique los valores activos con sshd -T. Tenga en cuenta que permitrootlogin muestra without-password, lo que corresponde a prohibit-password. Si todo es correcto, recargue el servicio SSH para aplicar los nuevos parámetros sin interrumpir su sesión.
sshd -t
sshd -T | grep -E "^(passwordauthentication|kbdinteractiveauthentication|permitrootlogin)"
systemctl reload sshpermitrootlogin without-password
passwordauthentication no
kbdinteractiveauthentication noSin cerrar su sesión activa, abra una segunda ventana de terminal en su ordenador. Intente primero una conexión forzando el rechazo de las claves con la opción PubkeyAuthentication=no: el servidor debe rechazar el acceso. Después, inicie una conexión normal: la autenticación mediante clave se realiza con éxito.
ssh -o PubkeyAuthentication=no root@203.0.113.10
ssh root@203.0.113.10root@203.0.113.10: Permission denied (publickey).Desde su sesión conectada al VPS, actualice la lista de repositorios Debian con apt update y luego instale el paquete fail2ban. En las versiones recientes de Debian, fail2ban activa automáticamente la protección del servicio SSH al finalizar la instalación.
apt update
apt install -y fail2banAsegúrese de que el servicio fail2ban está activo con systemctl y luego consulte la prisión sshd para confirmar que el filtrado funciona y supervisa las conexiones. Después puede desconectarse con total tranquilidad.
systemctl is-active fail2ban
fail2ban-client status sshd
exitactive
Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 3
| `- Journal matches: _SYSTEMD_UNIT=ssh.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:El demonio OpenSSH lee los archivos de la carpeta sshd_config.d por orden alfabético y aplica el primer valor que encuentra. Al usar el prefijo 00, sus directivas se procesan antes que las de 50-cloud-init.conf, lo que garantiza que se aplique la prohibición de contraseñas.
Si pierde su acceso SSH, conéctese a su área de cliente LWS y abra la consola KVM / VNC disponible para su VPS. Esta consola simula una pantalla y un teclado físicos conectados al servidor y permite corregir sus archivos de configuración sin pasar por SSH.
Se trata exactamente del mismo parámetro en OpenSSH. prohibit-password es la sintaxis moderna recomendada, pero el comando sshd -T muestra su equivalente histórico without-password en la lista de directivas activas.
En distribuciones recientes como Debian 13, fail2ban configura e inicia automáticamente la prisión para el servicio SSH en cuanto se instala el paquete. Puede personalizar posteriormente los tiempos de bloqueo en un archivo jail.local si lo desea.
Hágala al equipo de LWS y a la comunidad. La respuesta se publica tras la moderación.