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 configuración inicial y seguridad
Photo by Lukas / Unsplash

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-vps

En 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-upgrades

Cada 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-servidor

Verificar

hostnamectl

Actualiza también /etc/hosts para que el nombre resuelva correctamente:

echo "127.0.1.1 mi-servidor" >> /etc/hosts

Esto 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 - andres

El 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-vps

Si 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_config

Busca y modifica (o agrega) estas líneas:

Port 4867
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no

Explicació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-vps

Si 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/tcp

Activar el firewall

sudo ufw enable

Ver estado

sudo ufw status verbose

UFW 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 status

Para configurarlo a medida, crea /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local

y dentro de este pega lo siguiente:

[sshd]
enabled = true
port = 4867
maxretry = 3
bantime = 3600

Esto 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

timedatectl

Al 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 -tlnp

Si ves servicios que no reconoces (como postfix, avahi-daemon o snapd), desactívalos:

sudo systemctl disable --now nombre-del-servicio

Mantener 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-upgrades

Selecciona "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