Volver al blog
VPSLinuxSSHDevOpsSelf-hosting

Cómo Configurar y Asegurar un VPS desde Cero

H
Heyson Betancourt
·10 de febrero de 2025·4 min read
Cómo Configurar y Asegurar un VPS desde Cero

Cómo Configurar y Asegurar un VPS desde Cero

Un VPS (Servidor Privado Virtual) te da una máquina Linux real en la nube que controlas completamente. Sin vendor lock-in, sin facturas sorpresa por tráfico, y la libertad de ejecutar lo que quieras. Esta guía te lleva de cero a un servidor endurecido en el que puedes confiar.

Eligiendo un Proveedor

Cualquier proveedor importante funciona. Mis recomendaciones:

ProveedorPrecio inicialNotas
Hetzner~€4/mesMejor precio/rendimiento en Europa
DigitalOcean$6/mesExcelente UX y documentación
Vultr$6/mesMuchas regiones en todo el mundo
Linode (Akamai)$5/mesSólido y con larga trayectoria

Para la mayoría de proyectos, un plan con 2 GB RAM, 1 vCPU, 40 GB SSD es más que suficiente para empezar.

Elige Ubuntu 24.04 LTS como sistema operativo — tiene la ventana de soporte más larga y la documentación comunitaria más amplia.

Primer Acceso

Después de crear el servidor recibirás una contraseña root o se te pedirá agregar una clave SSH. Siempre prefiere las claves SSH.

Genera un par de claves localmente (si no tienes una):

ssh-keygen -t ed25519 -C "tu@email.com"
# Presiona enter para aceptar la ruta por defecto (~/.ssh/id_ed25519)

Agrega tu clave pública al panel del proveedor, luego conéctate:

ssh root@TU_IP_DEL_SERVIDOR

Deberías aterrizar en un shell root. Lo primero que hacemos es dejar de usar root directamente.

Crear un Usuario sin Privilegios Root

Ejecutar todo como root es peligroso — un error tipográfico puede borrar todo tu sistema. En su lugar, crea un usuario regular con acceso sudo.

# Crea el usuario
adduser heyson

# Agrégalo al grupo sudo
usermod -aG sudo heyson

# Copia las claves autorizadas de root para seguir usando tu clave SSH
rsutil_copy_ssh_keys() {
  mkdir -p /home/heyson/.ssh
  cp /root/.ssh/authorized_keys /home/heyson/.ssh/authorized_keys
  chown -R heyson:heyson /home/heyson/.ssh
  chmod 700 /home/heyson/.ssh
  chmod 600 /home/heyson/.ssh/authorized_keys
}
rsutil_copy_ssh_keys

Ahora abre una nueva terminal y verifica que puedes iniciar sesión como el nuevo usuario antes de cerrar la sesión root:

ssh heyson@TU_IP_DEL_SERVIDOR
sudo whoami  # debe imprimir: root

Endurecer SSH

Edita la configuración del daemon SSH para deshabilitar la autenticación por contraseña y el login como root:

sudo nano /etc/ssh/sshd_config

Encuentra y establece (o añade) estas líneas:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Reinicia SSH:

sudo systemctl restart ssh

Importante: No cierres tu sesión actual hasta que hayas verificado que puedes abrir una nueva conexión SSH con la nueva configuración.

Configurar el Firewall (UFW)

Ubuntu viene con ufw (Uncomplicated Firewall). Por defecto bloquea todo — abramos solo lo que necesitamos:

# Permite SSH (crítico — hazlo antes de activar el firewall)
sudo ufw allow OpenSSH

# Si planeas servir HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# Activa el firewall
sudo ufw enable

# Verifica el estado
sudo ufw status verbose

Deberías ver algo como:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW IN    Anywhere
80/tcp                     ALLOW IN    Anywhere
443/tcp                    ALLOW IN    Anywhere

Mantener el Sistema Actualizado

sudo apt update && sudo apt upgrade -y

# Activa las actualizaciones de seguridad automáticas
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

Instalar Fail2ban (Opcional pero Recomendado)

Fail2ban monitorea tus logs de autenticación y banea IPs que fallen demasiados intentos de login:

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Verifica los baneos activos:

sudo fail2ban-client status sshd

Configurar Hostname y Zona Horaria

# Establece un hostname
sudo hostnamectl set-hostname mi-servidor

# Establece tu zona horaria
sudo timedatectl set-timezone America/Costa_Rica
timedatectl  # verifica

Referencia Rápida: Comandos Esenciales

# Ver servicios en ejecución
sudo systemctl list-units --type=service --state=running

# Ver quién está conectado
w

# Monitorear uso de recursos en tiempo real
htop

# Ver puertos abiertos
sudo ss -tlnp

# Ver logs de autenticación recientes
sudo journalctl -u ssh --since "1 hour ago"

¿Qué Sigue?

Con un VPS endurecido en su lugar puedes:

  • Instalar Docker y empezar a desplegar apps en contenedores
  • Configurar Coolify para una experiencia PaaS auto-hospedada (ver el siguiente post)
  • Apuntar un dominio y obtener un certificado TLS gratuito con Caddy o Nginx + Certbot

Un VPS puede parecer intimidante al principio, pero una vez que entiendes la capa básica de seguridad el resto es solo Linux — y Linux está increíblemente bien documentado.


Siguiente: Configurar Coolify en tu VPS — una alternativa self-hosted a Vercel.