Tu VPS está listo, ¿y ahora qué? Guía de configuración inicial y seguridad
Guía completa paso a paso con checklist para configurar y asegurar tu VPS desde cero: SSH, firewall, fail2ban, swap, actualizaciones de seguridad y más.
Tu VPS está listo, ¿y ahora qué? Guía de primeros pasos
Acabas de contratar tu primer Servidor Virtual Privado (VPS). Tienes una IP, credenciales de acceso y un mundo de posibilidades por delante. Pero antes de instalar Docker, montar un blog con Ghost o desplegar tu primera API, hay una serie de pasos esenciales que separan a un servidor seguro de uno vulnerable.
En el artículo anterior hablamos de qué es un VPS y por qué necesitas uno. Ahora vamos a poner manos a la obra con la configuración inicial. Esta guía aplica para cualquier distribución Linux basada en Debian/Ubuntu, las más comunes en VPS de proveedores como DigitalOcean, Linode, Vultr o Hetzner ó puedes optar por un vps de Racknerd con precios super economicos en sus planes anuales
Primer acceso por SSH
Tu proveedor te envió un correo con la IP del servidor, el usuario (generalmente root) y una contraseña. Desde tu terminal local:
ssh root@tu-ip-del-vpsEn Windows 10/11 puedes usar PowerShell o Windows Terminal. En Linux o macOS la terminal nativa funciona de maravilla. Si prefieres interfaz gráfica, PuTTY sigue siendo una opción válida.
💡 Tip: Guarda la IP del servidor en un bloc de notas. La usarás constantemente durante esta guía.
Actualizar el sistema
Lo primero y más importante. Los VPS recién instalados suelen venir con paquetes desactualizados. Una actualización cierra vulnerabilidades conocidas y te asegura tener las últimas versiones estables:
apt update && apt upgrade -y- apt update — actualiza la lista de paquetes disponibles
- apt upgrade — instala las versiones más recientes
También instala algunos paquetes básicos que todo servidor debería tener desde el día uno:
apt install -y curl wget git ufw fail2ban htop neofetch unattended-upgradesCada uno tiene un propósito específico que veremos más adelante.
Configurar el hostname
Dale una identidad a tu servidor:
hostnamectl set-hostname mi-servidorVerificar
hostnamectlActualiza también /etc/hosts para que el nombre resuelva correctamente:
echo "127.0.1.1 mi-servidor" >> /etc/hostsEsto no solo es estético — muchos servicios dependen de un hostname bien configurado para funcionar correctamente.
Crear un usuario no-root
Trabajar como root permanentemente es una mala práctica. Crea un usuario con permisos administrativos:
adduser andres
usermod -aG sudo andres
su - andresEl grupo sudo le da permisos para ejecutar comandos con sudo sin ser root. Es el equilibrio perfecto entre seguridad y funcionalidad.
Configurar claves SSH
Desde tu máquina local genera un par de llaves si no tienes una:
ssh-keygen -t ed25519 -C "andres@mi-servidor"Copia la llave pública al servidor:
ssh-copy-id -p 22 andres@tu-ip-del-vpsSi no tienes ssh-copy-id, hazlo manualmente:
cat ~/.ssh/id_ed25519.pub | ssh andres@tu-ip-del-vps \
"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"Cambiar el puerto SSH y endurecer la configuración
Edita el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_configBusca y modifica (o agrega) estas líneas:
Port 4867
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication noExplicación de cada cambio:
- `Port 4867` — cambia el puerto por defecto. Usa un número alto (entre 1024 y 65535).
- `PermitRootLogin no` — nadie puede conectarse como root directamente.
- `PasswordAuthentication no` — solo se permite acceso con llave SSH, no con contraseña.
- `PubkeyAuthentication yes` — activa la autenticación por llave pública.
Reinicia el servicio:
sudo systemctl restart ssh⚠️ IMPORTANTE: Antes de cerrar la sesión actual, abre otra terminal y verifica que puedes conectarte con el nuevo puerto:bash
ssh -p 4867 andres@tu-ip-del-vpsSi funciona, puedes cerrar la sesión original tranquilo.
Firewall con UFW
UFW (Uncomplicated Firewall) simplifica la gestión del firewall en Linux. Es tan intuitivo como parece:
Permitir el nuevo puerto SSH (¡ANTES de activar el firewall!)
sudo ufw allow 4867/tcp
Permitir HTTP y HTTPS (para servidores web)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpActivar el firewall
sudo ufw enableVer estado
sudo ufw status verboseUFW bloquea todo el tráfico entrante por defecto. Solo pasa lo que autorices explícitamente. Si en el futuro montas otros servicios (base de datos, Docker, etc.), recuerda abrir sus puertos con ufw allow.
fail2ban contra fuerza bruta
fail2ban monitorea los logs del sistema y bloquea temporalmente las IPs con múltiples intentos fallidos:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client statusPara configurarlo a medida, crea /etc/fail2ban/jail.local:
nano /etc/fail2ban/jail.localy dentro de este pega lo siguiente:
[sshd]
enabled = true
port = 4867
maxretry = 3
bantime = 3600Esto significa: 3 intentos fallidos = 1 hora de bloqueo. Efectivo contra bots sin molestar a usuarios legítimos que se equivocan de IP al teclear.
Zona horaria
Los VPS suelen venir en UTC por defecto. Si estás en Colombia como yo (UTC-5), ajústala:
sudo timedatectl set-timezone America/Bogota
Comprobamos
timedatectlAl ejecutar el segundo comando, simplemente busca la línea que dice Time zone: America/Bogota (-05, -0500) para confirmar que tu ajuste fue un éxito.
Esto evita confusiones con logs, cron jobs y registros de eventos. Nadie quiere calcular mentalmente la diferencia horaria cuando revisa logs a las 3 AM.
Swap para poca RAM
Si tu VPS tiene 1 GB de RAM o menos, el swap evita que el sistema se quede sin memoria al ejecutar varias aplicaciones:
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Hacerlo permanente
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab¿Cuánto swap poner? La regla general:
- 1 GB de RAM → 2 GB de swap
- 2 GB de RAM → 2 GB de swap
- 4 GB+ de RAM → 1-2 GB (opcional, para guardar volcados de memoria)
Desactivar servicios innecesarios
Cada servicio corriendo es un potencial vector de ataque. Revisa qué está escuchando en tu servidor:
ss -tlnpSi ves servicios que no reconoces (como postfix, avahi-daemon o snapd), desactívalos:
sudo systemctl disable --now nombre-del-servicioMantener solo los servicios necesarios reduce la superficie de ataque y libera recursos del sistema.
Actualizaciones automáticas de seguridad
Para no tener que acordarte de actualizar manualmente cada semana:
sudo dpkg-reconfigure --priority=low unattended-upgradesSelecciona "Sí" cuando te pregunte. A partir de ahí, el sistema instalará parches de seguridad críticos automáticamente, sin intervención tuya.
Checklist final
Aquí tienes una lista de verificación para tu próximo VPS. Marca cada paso al completarlo:
- [ ] `apt update && apt upgrade -y` — Actualizar sistema
- [ ] Crear usuario sudo no-root (`adduser`, `usermod -aG sudo`)
- [ ] Configurar autenticación por llave SSH (`ssh-keygen` + `ssh-copy-id`)
- [ ] Cambiar puerto SSH (`Port 4867` en `sshd_config`)
- [ ] Deshabilitar login root (`PermitRootLogin no`)
- [ ] Deshabilitar autenticación por contraseña (`PasswordAuthentication no`)
- [ ] Verificar conexión SSH con el nuevo puerto **antes de cerrar sesión**
- [ ] Configurar UFW (permitir nuevo puerto SSH + HTTP/HTTPS)
- [ ] Configurar fail2ban (`maxretry = 3`, `bantime = 3600`)
- [ ] Ajustar zona horaria (`timedatectl set-timezone America/Bogota`)
- [ ] Configurar swap si tiene poca RAM
- [ ] Desactivar servicios innecesarios (`ss -tlnp`)
- [ ] Activar actualizaciones automáticas de seguridad
Con estos pasos, tu VPS queda protegido contra la mayoría de amenazas automatizadas en internet. No importa si vas a montar un blog, un panel de monitoreo, un servidor de juegos o una aplicación web — esta base sólida te permitirá dormir tranquilo sabiendo que tu servidor está seguro.
¿Tienes un VPS recién comprado? ¿Qué proyecto planeas montar? El ecosistema self-hosted tiene opciones para todos los gustos: desde Jellyfin para streaming personal hasta n8n para automatizaciones, pasando por Nextcloud como alternativa a Google Drive.
En los próximos artículos exploraremos cómo instalar Docker y desplegar aplicaciones en producción. ¡No te lo pierdas!
*Este artículo es parte de la serie "De cero a self-hosting". Artículo anterior: ¿Qué es un VPS y por qué necesitas uno si te gusta la tecnología