32blogby Studio Mitsu

Guía de Seguridad SSH: De Autenticación por Clave a Acceso Solo por VPN

Fortalece SSH paso a paso. Autenticación por clave, fail2ban, reglas de firewall y cómo ocultar SSH detrás de una VPN. Guía práctica para administradores de VPS.

by omitsu9 min read

This article contains affiliate links.

Contenido

Lo primero que hay que hacer después de configurar un VPS es fortalecer SSH. Deshabilita la autenticación por contraseña, fuerza el login por clave y restringe el acceso con un firewall — estos tres pasos detienen la gran mayoría de los ataques.

Deja SSH expuesto en el puerto 22 con la configuración por defecto, y los intentos de fuerza bruta comenzarán en minutos. Esto no es una exageración — monta un VPS nuevo, espera una hora y revisa /var/log/auth.log. Encontrarás cientos de intentos de login fallidos de bots automatizados probando root con contraseñas comunes. Esa es la realidad de cada puerto SSH expuesto a internet.

Este artículo te guía a través del fortalecimiento de SSH en niveles progresivos, desde lo esencial hasta ocultar completamente tu puerto SSH de internet.

SSH por defectoPuerto 22 abierto / ContraseñaBajo ataqueVulnerabilidadesFuerza bruta / Fuga de clavesAplicar defensasFortalecimientoClave / fail2ban / FirewallTotalmente fortalecidoServidor seguroAcceso solo por VPN

Entendiendo los Riesgos de SSH

SSH es potente, pero estar expuesto a internet lo convierte en un objetivo constante.

AtaqueDescripción
Fuerza brutaBots automatizados probando combinaciones de usuario/contraseña 24/7
Credential stuffingUsando contraseñas filtradas de otros servicios
Escaneo de puertosDescubriendo puertos abiertos. Puerto 22 abierto = objetivo inmediato
Compromiso de claveClaves privadas filtradas sin frase de paso otorgan acceso completo

Según la investigación de Sucuri, los servidores SSH expuestos pueden recibir entre 70.000 y 100.000 intentos de login fallidos por día. Con la configuración adecuada, eso se reduce a prácticamente cero.

Nivel 1: Configuración Esencial

Lo mínimo que debes hacer. Solo con esto se detienen la mayoría de los ataques de fuerza bruta.

Crea un Usuario Regular y Deshabilita el Login de Root

bash
adduser deploy
usermod -aG sudo deploy

Edita /etc/ssh/sshd_config.

text
PermitRootLogin no
AllowUsers deploy

Root es la cuenta más atacada. Usa un usuario regular con sudo en su lugar.

Cambia a Autenticación por Clave y Deshabilita Contraseñas

Genera un par de claves en tu máquina local. Ed25519 es recomendado — NIST lo aprobó en FIPS 186-5 como algoritmo de firma estándar. Claves más cortas con seguridad equivalente o superior a RSA.

bash
ssh-keygen -t ed25519 -C "deploy@myserver"
ssh-copy-id deploy@YOUR_SERVER_IP

Después de confirmar que el login basado en clave funciona, deshabilita la autenticación por contraseña.

text
PasswordAuthentication no
PubkeyAuthentication yes

Aplica los cambios.

bash
sudo systemctl restart sshd

Nivel 2: Defensa Más Profunda

Añade esto sobre lo básico para reducir aún más las tasas de éxito de ataques.

Instala fail2ban

fail2ban bloquea automáticamente las IPs después de repetidos fallos de autenticación.

bash
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Edita /etc/fail2ban/jail.local.

text
[sshd]
enabled = true
port = ssh
maxretry = 3
bantime = 3600
findtime = 600

Tres fallos activan un bloqueo de una hora. Esto reduce drásticamente la eficiencia de la fuerza bruta. Para una alternativa más moderna, CrowdSec añade inteligencia de amenazas comunitaria — comparte firmas de ataques anonimizadas entre todos los usuarios, para que tu servidor se beneficie de ataques bloqueados en otros servidores de todo el mundo.

bash
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Configura el Firewall

Usa UFW para permitir solo los puertos necesarios.

bash
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Cambia el Puerto SSH (Opcional)

Mover del puerto 22 a un puerto no estándar evita la mayoría de los escáneres automatizados.

text
Port 2222

Esto es seguridad por oscuridad — no es una defensa real. Un escaneo de puertos lo encontrará igualmente. Es mejor que nada, pero no confíes solo en esto.

Limita los Intentos de Autenticación

text
MaxAuthTries 3
LoginGraceTime 30

Nivel 3: Oculta SSH Completamente

Todo lo anterior hace que SSH sea lo suficientemente seguro. Pero no exponer el puerto SSH en absoluto es la defensa definitiva. No puedes atacar un puerto que no existe.

Permite SSH Solo a Través de una VPN

Permite conexiones SSH solo a través de un túnel VPN y cierra el puerto SSH público.

Usar NordVPN cifra tu tráfico cuando gestionas un VPS desde una cafetería o red pública. SSH sobre WiFi no cifrado es arriesgado. Haz el hábito de conectarte a una VPN antes de abrir una sesión SSH — solo esto mejora significativamente la seguridad.

Usa Tailscale para Cerrar el Puerto Completamente

Para una solución más completa, Tailscale es una VPN de malla construida sobre WireGuard que oculta tu puerto SSH de internet público por completo.

bash
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --ssh

Cierra el acceso público a SSH con UFW.

bash
sudo ufw delete allow ssh

Ahora SSH solo es accesible desde dentro de la red Tailscale. Desde internet público, el puerto SSH simplemente no existe.

Tailscale es gratuito para uso personal (3 usuarios, 100 dispositivos). También gestiona las claves automáticamente y proporciona grabación de sesiones para fines de auditoría.

Para una comparación detallada de opciones VPN para flujos de trabajo de desarrollo, consulta nuestra Guía de VPN para Desarrolladores. Si ejecutas NordVPN en tu servidor o estación de trabajo, la Guía de Configuración de NordVPN en Linux cubre la configuración por CLI. Los desarrolladores también deberían revisar 5 Formas en que los Desarrolladores Filtran Información Personal — las claves SSH son solo un vector.

Para mejores prácticas en gestión de claves, NIST SP 800-57 proporciona una guía completa sobre el ciclo de vida, rotación y almacenamiento de claves criptográficas.

FAQ

¿Realmente sirve cambiar el puerto SSH del 22?

Reduce el ruido de escáneres automatizados, pero no es una medida de seguridad real. Un escaneo de puertos dirigido encontrará el nuevo puerto en segundos. Piénsalo como reducción de spam, no como defensa. Siempre combínalo con autenticación por clave y fail2ban.

¿Debo usar RSA o Ed25519 para las claves SSH?

Ed25519. Es más rápido, produce claves más cortas, y NIST lo aprobó en FIPS 186-5. RSA-4096 sigue siendo seguro, pero no hay razón para elegirlo en claves nuevas. Si tienes claves RSA existentes, están bien — simplemente genera Ed25519 para nuevos servidores.

¿Qué pasa si pierdo mi clave SSH?

Si la autenticación por contraseña está deshabilitada y pierdes la única clave autorizada, quedarás bloqueado fuera del servidor. La mayoría de proveedores de VPS ofrecen una consola web o modo de recuperación para recuperar el acceso. Siempre mantén una copia de seguridad de tu clave privada en un lugar seguro y considera agregar una segunda clave como respaldo.

¿Puedo usar autenticación por clave y por contraseña al mismo tiempo?

Sí, OpenSSH soporta ambas simultáneamente. Pero el objetivo de la autenticación por clave es eliminar los ataques basados en contraseñas. Mantener las contraseñas habilitadas anula la mayor parte del beneficio de seguridad. Deshabilita la autenticación por contraseña después de confirmar que la autenticación por clave funciona.

¿Cuál es la diferencia entre fail2ban y CrowdSec?

fail2ban monitorea logs locales y bloquea IPs después de fallos repetidos — reactivo y autocontenido. CrowdSec añade una capa comunitaria: comparte firmas de ataques anonimizadas entre todos los usuarios, para que tu servidor pueda bloquear IPs maliciosas conocidas antes de que incluso lo intenten. CrowdSec es la opción más moderna para configuraciones con múltiples servidores.

¿Tailscale SSH es gratuito?

Sí. El plan Personal de Tailscale es gratuito para hasta 3 usuarios y 100 dispositivos, lo que cubre la mayoría de las configuraciones personales de VPS. La función SSH, incluyendo gestión automática de claves y grabación de sesiones, está incluida sin costo.

¿Debo usar VPN cada vez que me conecto por SSH a un servidor?

Si estás en una red de confianza como tu casa u oficina, el cifrado de SSH por sí solo es suficiente. Pero en WiFi público — cafeterías, aeropuertos, espacios de coworking — una VPN añade una capa de cifrado importante que protege contra ataques a nivel de red. Es un buen hábito conectarte a una VPN antes de cualquier administración remota en redes no confiables.

Conclusión

NivelAccionesEfecto
1 (Esencial)Autenticación por clave + deshabilitar contraseñas + sin login de rootDetiene la mayoría de la fuerza bruta
2 (Recomendado)fail2ban + firewall + cambio de puertoReduce significativamente los ataques restantes
3 (Máximo)Solo VPN / Tailscale para cerrar el puertoLos ataques se vuelven imposibles

El Nivel 1 es obligatorio para todo administrador de VPS. Toma cinco minutos. El Nivel 2 maneja la mayoría de las amenazas restantes. El Nivel 3 elimina el puerto SSH de internet por completo, haciendo los ataques estructuralmente imposibles.

Si gestionas VPSes desde cafeterías o redes públicas, usa NordVPN para cifrar tu conexión antes de SSH. Ese único hábito hace una diferencia medible.

NordVPN

La VPN líder mundial — rápida, segura y fácil de usar

  • Más de 6.400 servidores en 111 países
  • Protocolo NordLynx (basado en WireGuard)
  • Threat Protection Pro (bloqueo de anuncios y malware)

Artículos relacionados: