Cómo proteger el acceso SSH en DirectAdmin con llaves
¿Por qué deberías usar llaves SSH en lugar de contraseñas?
Cuando gestionas un servidor con DirectAdmin, una de las primeras medidas de seguridad que debes implementar es proteger el acceso SSH. Aunque muchos usuarios se sienten cómodos usando contraseñas, estas son vulnerables a ataques de fuerza bruta, phishing o simplemente a errores humanos como elegir claves débiles.
Las llaves SSH (también conocidas como pares de claves públicas y privadas) funcionan como un mecanismo de autenticación mucho más robusto. En lugar de escribir una contraseña, el servidor verifica que tu equipo posea una clave privada que coincida con la clave pública almacenada en el servidor. Esto elimina casi por completo el riesgo de que alguien adivine o robe tu credencial de acceso.
En este artículo, te guiaré paso a paso para que configures las llaves SSH en tu servidor con DirectAdmin, ya sea desde tu ordenador con Windows, macOS o Linux. No necesitas ser un experto: con un poco de paciencia, lo tendrás listo en menos de 15 minutos.
Conceptos básicos: qué es una llave pública y una privada
Antes de empezar, es importante que entiendas la diferencia entre los dos archivos que vas a generar:
- Llave privada: Es como la llave física de tu casa. Debe permanecer siempre en tu equipo local, protegida y nunca compartida. Si alguien la obtiene, podrá acceder a tu servidor.
- Llave pública: Es como la cerradura de la puerta. Puedes copiarla y colocarla en el servidor sin problemas. Solo la llave privada correspondiente puede abrir esa cerradura.
El proceso general será:
- Generar un par de llaves en tu ordenador.
- Copiar la llave pública al servidor (con DirectAdmin o manualmente).
- Configurar el servidor para que solo acepte conexiones mediante llaves y deshabilitar la autenticación por contraseña (opcional pero muy recomendable).
Paso 1: Generar tus llaves SSH en tu ordenador
En Linux o macOS
Abre una terminal y ejecuta el siguiente comando:
ssh-keygen -t rsa -b 4096 -C "tu_correo@ejemplo.com"
- El parámetro
-t rsaindica el tipo de algoritmo (puedes usared25519si prefieres algo más moderno, perorsaes universalmente compatible). -b 4096define el tamaño de la clave (4096 bits es muy seguro).-Ces solo un comentario para identificar la llave (normalmente tu email).
El sistema te preguntará dónde guardar la llave. Por defecto, se guarda en ~/.ssh/id_rsa. Si no tienes preferencia, pulsa Enter.
También te pedirá una frase de contraseña (passphrase). Este es un extra de seguridad: aunque alguien robara tu llave privada, necesitaría esa frase para usarla. Te recomiendo encarecidamente que pongas una.
En Windows (con PuTTY o PowerShell)
Si usas Windows, tienes dos opciones:
- Con PowerShell (OpenSSH): Si tienes Windows 10 o 11, abre PowerShell y ejecuta el mismo comando
ssh-keygen. La ruta de guardado seráC:\Users\TuUsuario\.ssh\id_rsa. - Con PuTTYgen: Descarga PuTTY, abre PuTTYgen, selecciona "RSA" y el número de bits (4096), y pulsa "Generate". Mueve el ratón por la ventana para generar aleatoriedad y guarda tanto la llave privada como la pública.
Paso 2: Copiar la llave pública a tu servidor con DirectAdmin
Una vez que tienes tu par de llaves, el siguiente paso es subir la llave pública al servidor. Hay dos métodos principales: a través del panel de DirectAdmin o manualmente desde la terminal.
Método A: Usar el panel de DirectAdmin (más fácil)
- Accede a tu panel de DirectAdmin con tu usuario administrador o revendedor.
- Busca la sección "Cuenta de usuario" o "Administración de archivos". Dependiendo de la versión, puede estar en "Configuración SSH" o "Acceso SSH".
- Verás un campo llamado "Claves autorizadas" o "Authorized Keys". Copia el contenido de tu archivo
id_rsa.pub(es un texto largo que empieza porssh-rsa AAAA...). - Pega ese contenido en el campo correspondiente y guarda los cambios.
[TIP]: Algunas versiones de DirectAdmin permiten subir la llave directamente desde la sección "Administrador de archivos". Si tienes problemas, siempre puedes usar el método manual.
Método B: Copiar la llave manualmente desde tu terminal
Esta opción es ideal si ya tienes acceso SSH por contraseña y quieres automatizar el proceso.
En Linux o macOS, ejecuta:
ssh-copy-id usuario@tu-servidor.com
Te pedirá la contraseña de tu usuario en el servidor y automáticamente copiará tu llave pública al archivo ~/.ssh/authorized_keys.
En Windows con PowerShell, puedes usar:
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh usuario@tu-servidor.com "cat >> ~/.ssh/authorized_keys"
Paso 3: Configurar el servidor para usar solo llaves SSH
Una vez que has confirmado que puedes entrar con tu llave, es hora de deshabilitar el acceso por contraseña. Esto es clave para protegerte de ataques de fuerza bruta.
Editar el archivo de configuración de SSH
- Conéctate a tu servidor por SSH (con tu llave, ya que aún tienes la contraseña activa).
- Abre el archivo de configuración:
sudo nano /etc/ssh/sshd_config
- Busca las siguientes líneas y cámbialas así:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
- Guarda los cambios (Ctrl+O, luego Enter, y Ctrl+X para salir).
- Reinicia el servicio SSH para aplicar los cambios:
sudo systemctl restart sshd
[WARNING]: Antes de cerrar la sesión actual, abre una nueva ventana de terminal y prueba iniciar sesión con tu llave. Si algo falla, podrás revertir los cambios. Si no puedes entrar, tendrás que acceder por el panel de control de tu proveedor (VPS) para deshacerlo.
Paso 4: Proteger tu llave privada local
Tu llave privada es ahora la única barrera entre tu servidor y los atacantes. Sigue estas buenas prácticas:
- Usa una frase de contraseña (passphrase) al generar la llave. Aunque sea un poco tedioso, es una capa extra muy valiosa.
- No la subas a la nube (Google Drive, Dropbox, etc.). Guárdala en un dispositivo seguro o en un gestor de contraseñas.
- Usa permisos correctos: En Linux, ejecuta
chmod 600 ~/.ssh/id_rsapara que solo tu usuario pueda leerla.
Paso 5: Configuración avanzada (opcional pero recomendada)
Cambiar el puerto SSH
Por defecto, SSH usa el puerto 22. Cambiarlo a un puerto no estándar (por ejemplo, 2200) reduce drásticamente los intentos de conexión automática de bots.
En el archivo sshd_config, cambia la línea:
Port 2200
Recuerda abrir ese puerto en el firewall de tu servidor (CSF, UFW, etc.) y en el panel de DirectAdmin.
Restringir usuarios que pueden usar SSH
Puedes limitar qué usuarios del sistema tienen permitido conectarse. Añade al final de sshd_config:
AllowUsers usuario1 usuario2
Esto es especialmente útil si tienes varias cuentas en el servidor.
Usar fail2ban
Fail2ban es una herramienta que bloquea automáticamente las IPs que hacen demasiados intentos fallidos de conexión. En DirectAdmin, puedes instalarlo fácilmente desde el administrador de plugins o por línea de comandos.
Preguntas frecuentes (FAQ)
¿Puedo usar la misma llave para varios servidores?
Sí, puedes copiar tu llave pública a tantos servidores como quieras. Solo asegúrate de que la llave privada esté bien protegida.
¿Qué pasa si pierdo mi llave privada?
Si pierdes la llave privada y has deshabilitado el acceso por contraseña, no podrás entrar. Deberías tener siempre un plan B, como una segunda llave o el acceso por el panel de control de tu proveedor.
¿Es seguro usar ed25519 en lugar de RSA?
Sí, ed25519 es más rápido y seguro que RSA. La mayoría de sistemas modernos lo soportan. Si tienes un servidor antiguo, quizás necesites RSA.
¿Puedo usar llaves SSH con Syspanel?
Si estás usando Syspanel (anteriormente conocido como HestiaCP), el proceso es muy similar. Syspanel tiene su propio panel de administración y el acceso por SSH se configura de la misma manera. Recuerda que el puerto de acceso al panel de Syspanel es el 2106, pero el SSH sigue usando el puerto configurado en el sistema (normalmente 22 o el que hayas definido).
[INFO]: Si tu servidor usa Syspanel, asegúrate de que el firewall permita el puerto SSH que hayas configurado, además del 2106 para el panel.
¿Cómo sé si mi llave pública se copió correctamente?
Puedes verificar el contenido del archivo authorized_keys en el servidor con:
cat ~/.ssh/authorized_keys
Debería mostrar la misma línea que tienes en tu archivo .pub.
Conclusión
Proteger el acceso SSH en DirectAdmin con llaves SSH es una de las mejores decisiones de seguridad que puedes tomar. No solo eliminas el riesgo de ataques por fuerza bruta, sino que también simplificas el acceso diario a tu servidor.
Recuerda que la seguridad es un proceso continuo. Además de las llaves, te recomiendo mantener tu sistema actualizado, usar firewalls y monitorear los logs de acceso. Si tienes dudas, no dudes en consultar la documentación oficial de DirectAdmin o contactar con tu proveedor de hosting.
Ahora que ya sabes cómo hacerlo, ¡ponlo en práctica y duerme tranquilo sabiendo que tu servidor está mucho más seguro!
