Guía Completa de Seguridad y Hardening para VPS
TUTORIAL 8 min read fordnox

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:

Requisitos Previos

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

  1. Actualizaciones regulares - Programa verificaciones de actualización semanales
  2. Software mínimo - Solo instala lo que necesitas
  3. Contraseñas fuertes - Usa un gestor de contraseñas, mínimo 16 caracteres
  4. Principio de mínimo privilegio - Los usuarios solo obtienen el acceso que necesitan
  5. Auditorías regulares - Revisa logs y accesos semanalmente
  6. Copia de seguridad antes de cambios - Siempre ten un plan de reversión
  7. Monitoreo activo - Configura alertas para actividad sospechosa
  8. 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:

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.

~/vps-security-guide/get-started

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

seguridad VPS hardening de servidor seguridad SSH configuración de firewall fail2ban protección VPS

// related guides

Andrius Putna

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.