Asegurar el acceso SSH en servidores con Syspanel
¿Por qué es tan importante asegurar el acceso SSH?
Si tienes un servidor con Syspanel, es muy probable que ya sepas que SSH es la puerta principal para administrarlo. Pero, ¿alguna vez te has detenido a pensar en cuántos intentos de acceso recibe tu servidor cada día? La realidad es que, en cuanto tu servidor está en línea, bots automatizados empiezan a probar contraseñas y usuarios comunes sin descanso.
Asegurar el acceso SSH no es un lujo, es una necesidad básica de ciberseguridad. Un acceso comprometido puede darle a un atacante el control total de tu servidor, tus sitios web, tus bases de datos y, en el peor de los casos, convertir tu servidor en parte de una botnet para atacar a otros.
La buena noticia es que no necesitas ser un experto en seguridad para proteger tu servidor. Con una serie de pasos sencillos y prácticos, puedes reducir drásticamente la superficie de ataque. A lo largo de esta guía, te mostraré cómo asegurar el acceso SSH en servidores con Syspanel, paso a paso, de una manera clara y sin tecnicismos innecesarios.
Antes de empezar, es importante que sepas que Syspanel es un panel de control que te facilita la gestión de tu servidor, y aunque su acceso principal es a través del puerto 2106 para la interfaz web, el acceso SSH se realiza por el puerto estándar 22 (aunque esto lo podremos cambiar, como veremos más adelante).
Cambiar el puerto SSH por defecto
El primer paso, y uno de los más efectivos, es cambiar el puerto por defecto de SSH. El puerto 22 es conocido por todos, incluidos los atacantes. Al cambiarlo a un puerto no estándar, te librarás automáticamente de la gran mayoría de ataques automatizados que solo escanean el puerto 22.
Para hacerlo, necesitas acceder a tu servidor por SSH (sí, usando el puerto 22 por ahora) y editar el archivo de configuración de SSH.
Paso 1: Conectarte al servidor
Abre tu terminal (si usas Windows, puedes usar PowerShell o un cliente como PuTTY) y conéctate a tu servidor con el siguiente comando:
ssh usuario@tu_ip
Reemplaza usuario con tu nombre de usuario (normalmente root o un usuario con privilegios) y tu_ip con la dirección IP de tu servidor.
Paso 2: Editar el archivo de configuración
Una vez dentro, ejecuta el siguiente comando para editar el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
Este comando abrirá el archivo en el editor de texto nano. Busca la línea que dice #Port 22. Deberás eliminar el símbolo # (que comenta la línea) y cambiar el número por el puerto que desees. Por ejemplo, puedes usar el puerto 2222 o cualquier otro número entre 1024 y 65535 que no esté en uso.
Port 2222
[TIP] Elige un puerto que sea fácil de recordar para ti, pero que no sea obvio. Evita puertos comunes como 80, 443, 21, etc.
Paso 3: Reiniciar el servicio SSH
Guarda los cambios con Ctrl + O, luego presiona Enter y sal del editor con Ctrl + X. Ahora, reinicia el servicio SSH para que los cambios surtan efecto:
sudo systemctl restart sshd
[WARNING] A partir de este momento, tu acceso SSH ya no estará en el puerto 22. Si cierras la sesión actual sin probar el nuevo puerto, podrías quedarte fuera. Te recomiendo que, antes de cerrar la sesión, abras una nueva ventana de terminal e intentes conectarte con el nuevo puerto para asegurarte de que funciona.
Para conectarte en el futuro, usa:
ssh -p 2222 usuario@tu_ip
Deshabilitar el acceso por contraseña y usar claves SSH
Las contraseñas son fáciles de adivinar o descifrar mediante ataques de fuerza bruta. Una alternativa mucho más segura es usar claves SSH (también conocidas como pares de llaves). Este método utiliza un par de archivos criptográficos: una clave privada que solo tú tienes y una clave pública que se instala en el servidor.
Paso 1: Generar tu par de claves
En tu ordenador local (no en el servidor), abre tu terminal y ejecuta:
ssh-keygen -t rsa -b 4096
Te preguntará dónde guardar el archivo y si quieres añadir una frase de contraseña (passphrase). Te recomiendo que sí uses una frase de contraseña, ya que añade una capa extra de seguridad. Si alguien roba tu clave privada, no podrá usarla sin la frase.
Paso 2: Copiar la clave pública al servidor
Una vez generada, debes copiar la clave pública al servidor. Puedes hacerlo manualmente, pero el comando ssh-copy-id lo hace mucho más fácil:
ssh-copy-id -p 2222 usuario@tu_ip
Este comando te pedirá tu contraseña actual y copiará la clave pública al archivo ~/.ssh/authorized_keys del servidor.
[INFO] Si
ssh-copy-idno está disponible en tu sistema, puedes copiar la clave manualmente. Abre el archivo~/.ssh/id_rsa.puben tu ordenador, copia su contenido y, en el servidor, añádelo al final del archivo~/.ssh/authorized_keys.
Paso 3: Deshabilitar la autenticación por contraseña
Ahora que la clave pública está instalada, puedes deshabilitar la autenticación por contraseña. Vuelve a editar el archivo de configuración:
sudo nano /etc/ssh/sshd_config
Busca la línea #PasswordAuthentication yes y cámbiala a:
PasswordAuthentication no
Guarda los cambios y reinicia el servicio SSH:
sudo systemctl restart sshd
A partir de ahora, solo podrás conectarte usando tu clave privada. Si intentas usar una contraseña, el servidor la rechazará.
[WARNING] Asegúrate de que tu clave privada funciona correctamente antes de deshabilitar las contraseñas. Si te quedas sin acceso, tendrás que usar la consola de tu proveedor de hosting para restaurar el acceso.
Proteger el servidor con un firewall
Un firewall es tu primera línea de defensa. Te permite controlar qué puertos están abiertos al mundo exterior y cuáles no. Con Syspanel, puedes gestionar el firewall de forma gráfica, pero también puedes hacerlo directamente desde la terminal.
Configurar UFW (Uncomplicated Firewall)
UFW es una herramienta sencilla para gestionar el firewall en Ubuntu y otras distribuciones. Para instalarlo y configurarlo, sigue estos pasos:
sudo apt update && sudo apt install ufw
Una vez instalado, puedes configurar las reglas. Primero, permite el acceso por SSH en el nuevo puerto:
sudo ufw allow 2222/tcp
Ahora, permite el acceso a Syspanel en el puerto 2106:
sudo ufw allow 2106/tcp
También es recomendable permitir el tráfico HTTP y HTTPS si tienes sitios web:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Ahora, habilita el firewall:
sudo ufw enable
[TIP] Si quieres limitar el acceso SSH solo a ciertas IPs, puedes usar el comando
sudo ufw allow from TU_IP to any port 2222. Esto es especialmente útil si siempre te conectas desde la misma dirección IP.
Deshabilitar el acceso SSH para el usuario root
El usuario root es el más poderoso del sistema y, por lo tanto, un objetivo muy atractivo para los atacantes. Deshabilitar el acceso SSH directo para root es una práctica de seguridad recomendada. En su lugar, deberías usar un usuario normal con privilegios sudo.
Paso 1: Crear un usuario con privilegios
Si aún no tienes un usuario con privilegios, puedes crear uno:
sudo adduser nuevo_usuario
Después, añádelo al grupo sudo para que pueda ejecutar comandos con privilegios de administrador:
sudo usermod -aG sudo nuevo_usuario
Paso 2: Deshabilitar el acceso root por SSH
Edita el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
Busca la línea #PermitRootLogin yes y cámbiala a:
PermitRootLogin no
Guarda los cambios y reinicia el servicio SSH:
sudo systemctl restart sshd
Ahora, los intentos de conexión como root serán rechazados automáticamente. Deberás usar tu nuevo usuario y, cuando necesites privilegios de administrador, usar el comando sudo antes del comando que quieras ejecutar.
Monitorizar los intentos de acceso
Aunque hayas tomado todas las medidas anteriores, es importante que estés al tanto de lo que ocurre en tu servidor. Monitorizar los intentos de acceso te permitirá detectar actividades sospechosas a tiempo.
Fail2ban: tu guardián automático
Fail2ban es una herramienta que analiza los logs del sistema y bloquea automáticamente las IPs que hagan demasiados intentos fallidos de conexión. Es como un guardia de seguridad que expulsa a los que intentan forzar la puerta.
Para instalarlo:
sudo apt install fail2ban
Una vez instalado, puedes configurarlo editando el archivo de configuración:
sudo nano /etc/fail2ban/jail.local
Aquí puedes definir reglas, como el número de intentos fallidos antes de bloquear una IP y el tiempo de bloqueo. Por ejemplo:
[sshd]
enabled = true
port = 2222
maxretry = 5
bantime = 3600
Este ejemplo bloquea a cualquier IP que falle 5 veces en un período de 10 minutos, durante 1 hora.
Reinicia Fail2ban para que los cambios surtan efecto:
sudo systemctl restart fail2ban
[INFO] Fail2ban es muy configurable. Puedes crear reglas personalizadas para otros servicios, como Syspanel, si lo deseas.
Mantener el sistema actualizado
Mantener tu servidor actualizado es una de las medidas de seguridad más simples y efectivas. Las actualizaciones incluyen parches de seguridad que corrigen vulnerabilidades conocidas.
Puedes configurar actualizaciones automáticas para no tener que preocuparte por ello:
sudo apt install unattended-upgrades
Y para configurarlo:
sudo dpkg-reconfigure unattended-upgrades
Te preguntará si quieres que las actualizaciones se apliquen automáticamente. Responde que sí.
Consideraciones adicionales para el hardening de SSH
Además de los pasos anteriores, hay otras medidas que puedes tomar para reforzar aún más la seguridad de tu servidor.
Limitar los usuarios que pueden acceder por SSH
Puedes especificar qué usuarios tienen permitido acceder por SSH. En el archivo de configuración, añade:
AllowUsers usuario1 usuario2
Esto significa que solo usuario1 y usuario2 podrán conectarse por SSH. Cualquier otro usuario será rechazado.
Usar un banner de advertencia
Añadir un banner que advierta a los usuarios no autorizados puede ser un elemento disuasorio. Puedes crear un archivo de texto con el mensaje:
sudo nano /etc/ssh/banner
Y luego, en el archivo de configuración de SSH, añade:
Banner /etc/ssh/banner
Cambiar el tiempo de espera de conexión
Puedes configurar que el servidor cierre automáticamente las conexiones que estén inactivas durante un período de tiempo. En el archivo de configuración:
ClientAliveInterval 300
ClientAliveCountMax 0
Esto cerrará las conexiones inactivas después de 5 minutos.
Conclusión y buenas prácticas
Asegurar el acceso SSH en tu servidor con Syspanel es un proceso continuo, no un evento único. Los atacantes siempre están buscando nuevas formas de penetrar en los sistemas, por lo que es importante que te mantengas al día con las mejores prácticas de seguridad.
Aquí tienes un resumen de los pasos clave:
- Cambia el puerto SSH por defecto.
- Usa claves SSH en lugar de contraseñas.
- Deshabilita el acceso root por SSH.
- Configura un firewall.
- Usa Fail2ban para bloquear intentos maliciosos.
- Mantén el sistema actualizado.
[TIP] Realiza copias de seguridad de tus archivos de configuración antes de hacer cambios. Si algo sale mal, siempre puedes restaurar la configuración anterior.
Recuerda que la seguridad es una responsabilidad compartida. Aunque Syspanel te facilita la gestión de tu servidor, la seguridad del acceso SSH depende en gran medida de ti. Siguiendo estos pasos, estarás mucho más protegido contra los ataques más comunes.
Si tienes alguna duda o encuentras algún problema, no dudes en consultar la documentación oficial o buscar ayuda en la comunidad. La seguridad de tu servidor es un viaje, y cada paso que das te acerca a un entorno más seguro y confiable para tus proyectos.
