Guía Completa de Seguridad y Hardening para VPS
Guía paso a paso para proteger tu VPS. Cubre el hardening de SSH, firewalls, fail2ban, actualizaciones automáticas y prácticas de seguridad esenciales para proteger tu servidor.
Guía Completa de Seguridad y Hardening para VPS
Tu VPS está expuesto a internet las 24 horas del día, los 7 días de la semana. Sin una seguridad adecuada, es solo cuestión de tiempo antes de que alguien lo comprometa. Esta guía cubre todo lo que necesitas para blindar tu servidor.
Por Qué Esto Importa
Cada minuto, bots automatizados escanean internet en busca de servidores vulnerables. Un VPS recién creado puede recibir miles de intentos de inicio de sesión en cuestión de horas. La seguridad adecuada no es opcional: es la diferencia entre un servidor confiable y convertirse en parte de una botnet.
Lo que está en juego:
- Tus datos y los datos de tus usuarios
- Tu servidor siendo utilizado para spam o ataques
- Malware de minería de criptomonedas drenando tus recursos
- Pérdida total del control sobre tu infraestructura
Requisitos Previos
- Un VPS nuevo (recomendamos Hostinger VPS por sus funciones de seguridad y protección DDoS)
- Acceso SSH a tu servidor
- Conocimientos básicos de línea de comandos
Paso 1: Actualiza Tu Sistema
Antes de cualquier otra cosa, actualiza todos los paquetes:
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL
sudo dnf update -y
Habilita las actualizaciones de seguridad automáticas:
# Ubuntu/Debian
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure -plow unattended-upgrades
Paso 2: Crea un Usuario Sin Privilegios de Root
Nunca uses root para las operaciones diarias:
# Create new user
adduser deploy
# Add to sudo group
usermod -aG sudo deploy
# Switch to new user
su - deploy
Paso 3: Configura la Seguridad de SSH
Edita tu configuración de SSH:
sudo nano /etc/ssh/sshd_config
Aplica estos ajustes:
# Disable root login
PermitRootLogin no
# Disable password authentication (after setting up keys!)
PasswordAuthentication no
# Change default port (optional but recommended)
Port 2222
# Limit login attempts
MaxAuthTries 3
# Set login timeout
LoginGraceTime 60
# Disable empty passwords
PermitEmptyPasswords no
# Disable X11 forwarding if not needed
X11Forwarding no
Configura la autenticación por clave SSH ANTES de deshabilitar las contraseñas:
# On your LOCAL machine, generate a key
ssh-keygen -t ed25519 -C "your-email@example.com"
# Copy to server
ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@your-server-ip
Reinicia SSH:
sudo systemctl restart sshd
¡Prueba tu nueva conexión en una terminal separada antes de cerrar tu sesión actual!
Paso 4: Configura el Firewall
Usa UFW (Uncomplicated Firewall):
# Install UFW
sudo apt install ufw -y
# Set default policies
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Allow SSH (use your custom port if changed)
sudo ufw allow 2222/tcp
# Allow HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Enable firewall
sudo ufw enable
# Check status
sudo ufw status verbose
Paso 5: Instala y Configura Fail2Ban
Fail2Ban bloquea automáticamente las IPs con demasiados intentos de inicio de sesión fallidos:
sudo apt install fail2ban -y
Crea una configuración local:
sudo nano /etc/fail2ban/jail.local
Añade:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
banaction = ufw
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 24h
Inicia Fail2Ban:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Check banned IPs
sudo fail2ban-client status sshd
Paso 6: Deshabilita Servicios No Utilizados
Lista los servicios en ejecución:
sudo systemctl list-units --type=service --state=running
Deshabilita todo lo que no necesites:
sudo systemctl disable --now cups
sudo systemctl disable --now avahi-daemon
sudo systemctl disable --now bluetooth
Paso 7: Configura la Detección de Intrusiones
Instala AIDE (Advanced Intrusion Detection Environment):
sudo apt install aide -y
# Initialize database
sudo aideinit
# Move database
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# Check for changes (run periodically)
sudo aide --check
Paso 8: Configura los Parámetros de Seguridad del Kernel
Edita la configuración de sysctl:
sudo nano /etc/sysctl.d/99-security.conf
Añade:
# IP spoofing protection
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Ignore ICMP redirects
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Disable source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
# SYN flood protection
net.ipv4.tcp_syncookies = 1
# Ignore ping broadcasts
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Log suspicious packets
net.ipv4.conf.all.log_martians = 1
Aplica los cambios:
sudo sysctl -p /etc/sysctl.d/99-security.conf
Paso 9: Configura el Monitoreo de Logs
Configura logwatch para informes diarios:
sudo apt install logwatch -y
# Generate report
sudo logwatch --detail High --mailto your@email.com --service All --range today
Configura un cron job diario:
echo "0 0 * * * /usr/sbin/logwatch --output mail --mailto your@email.com --detail high" | sudo tee /etc/cron.d/logwatch
Paso 10: Habilita la Autenticación de Dos Factores (Opcional)
Instala Google Authenticator:
sudo apt install libpam-google-authenticator -y
# Run setup as your user
google-authenticator
¡Responde las preguntas y guarda tus códigos de respaldo!
Edita la configuración de PAM:
sudo nano /etc/pam.d/sshd
Añade al principio:
auth required pam_google_authenticator.so
Edita la configuración de SSH:
sudo nano /etc/ssh/sshd_config
Establece:
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
Reinicia SSH:
sudo systemctl restart sshd
Buenas Prácticas
- Actualizaciones regulares - Programa verificaciones de actualización semanales
- Software mínimo - Solo instala lo que necesitas
- Contraseñas fuertes - Usa un gestor de contraseñas, mínimo 16 caracteres
- Principio de mínimo privilegio - Los usuarios solo obtienen el acceso que necesitan
- Auditorías regulares - Revisa logs y accesos semanalmente
- Copia de seguridad antes de cambios - Siempre ten un plan de reversión
- Monitoreo activo - Configura alertas para actividad sospechosa
- Usa VPN para acceso sensible - Considera WireGuard o Tailscale para el acceso de administración
Errores Comunes que Debes Evitar
❌ Deshabilitar la autenticación por contraseña antes de configurar las claves SSH - Te quedarás sin acceso
❌ Abrir demasiados puertos en el firewall - Cada puerto abierto es una superficie de ataque
❌ Usar root para todo - Un error puede destruir tu sistema
❌ Ignorar los logs - Los ataques suelen mostrar señales de advertencia antes de tener éxito
❌ Claves SSH débiles - Usa Ed25519 o RSA de 4096 bits como mínimo
❌ La misma contraseña en todas partes - Si un servicio se ve comprometido, todos lo están
❌ Olvidarse de las reglas de salida - El malware se comunica con su servidor a través de conexiones salientes
❌ No probar los cambios - Siempre prueba el acceso SSH antes de cerrar tu sesión
Lista de Verificación de Seguridad
Usa esta lista para cada servidor nuevo:
- Sistema actualizado
- Usuario sin root creado
- Claves SSH configuradas
- Autenticación por contraseña deshabilitada
- Puerto SSH cambiado (opcional)
- Firewall habilitado
- Fail2Ban instalado
- Servicios no utilizados deshabilitados
- Actualizaciones automáticas habilitadas
- Monitoreo de logs configurado
Preguntas Frecuentes
¿Con qué frecuencia debo actualizar mi servidor?
Las actualizaciones de seguridad deben aplicarse lo antes posible, idealmente de forma automática. Para otras actualizaciones, una vez a la semana es un buen ritmo.
¿Es realmente necesario cambiar el puerto SSH?
No es obligatorio, pero reduce drásticamente los ataques automatizados en tus logs. Los bots escanean principalmente el puerto 22. Es seguridad por oscuridad: no es un reemplazo para la seguridad real, pero es un complemento útil.
¿Qué pasa si me quedo sin acceso?
Por eso Hostinger VPS y proveedores similares ofrecen acceso por consola. Puedes acceder a tu servidor a través de su panel de control incluso si SSH está roto.
¿Debo usar una VPN para acceder a mi servidor?
Para servidores altamente sensibles, sí. WireGuard es ligero y rápido, y Tailscale facilita aún más la configuración. Para la mayoría de los casos de uso, SSH correctamente configurado con autenticación por clave y Fail2Ban es suficiente.
¿Cómo sé si mi servidor ha sido comprometido?
Las señales incluyen: uso inesperado de CPU, procesos desconocidos, archivos modificados (AIDE detectará esto), cron jobs desconocidos y tráfico de red inexplicable. El monitoreo regular es clave.
¿Es realmente tan peligroso el inicio de sesión como root?
Sí. Root tiene poder ilimitado. Un error tipográfico o una sesión comprometida puede destruirlo todo. Usar sudo te da un margen de seguridad y un registro de auditoría.
Próximos pasos: Una vez que tu servidor esté asegurado, consulta nuestra guía de despliegue con Docker Compose para empezar a desplegar aplicaciones de forma segura.
Ready to get started?
Get the best VPS hosting deal today. Hostinger offers 4GB RAM VPS starting at just $4.99/mo.
Get Hostinger VPS — $4.99/mo// up to 75% off + free domain included
// related topics
// related guides
$1 VPS Hosting 2026: Cheapest VPS Servers Starting at $1/Month
Looking for $1 VPS hosting? Compare the cheapest VPS providers starting from $1-3/month. Real specs, no hidden fees, honest reviews of budget VPS options.
tutorialCaddy Reverse Proxy Guide 2026: Automatic HTTPS Made Easy
Set up Caddy as a reverse proxy with automatic HTTPS, zero-config SSL, and simple Caddyfile syntax. Complete VPS deployment guide.
tutorialCloudflare Tunnel VPS Guide 2026: Expose Services Without Opening Ports
Set up Cloudflare Tunnel on your VPS to expose web apps securely without opening ports or revealing your server IP. Complete guide with Docker and DNS config.
tutorialCoolify VPS Setup Guide 2026: Self-Hosted Vercel Alternative
Deploy Coolify on your VPS for a self-hosted Vercel/Netlify experience. Complete setup guide with Docker, SSL, and app deployments.
Andrius Putna
I am Andrius Putna. Geek. Since early 2000 in love tinkering with web technologies. Now AI. Bridging business and technology to drive meaningful impact. Combining expertise in customer experience, technology, and business strategy to deliver valuable insights. Father, open-source contributor, investor, 2xIronman, MBA graduate.
// last updated: February 6, 2026. Disclosure: This article may contain affiliate links.