Configuración inicial del VPS

El momento en que tu proveedor activa el VPS es crítico. En los primeros minutos decides si tendrás un servidor estable o una bomba de relojería. Lo primero que hago siempre es conectarme por SSH y comprobar el acceso como root. Si el proveedor me da contraseña, la cambio al instante. Si puedo usar claves SSH, las configuro y deshabilito el acceso por contraseña. Es una de las medidas más simples y eficaces para evitar ataques automatizados.

También actualizo el sistema antes de tocar nada más. En Debian o Ubuntu uso apt update && apt upgrade -y. En CentOS o AlmaLinux, yum update -y. Es increíble la cantidad de gente que monta servicios sobre sistemas sin parches. Actualizar elimina vulnerabilidades conocidas y deja el sistema en un estado limpio y coherente.

Gestión de usuarios y accesos

No conviene trabajar como root a diario. Creo un usuario normal con privilegios de sudo para las tareas de administración. Algo tan básico como esto puede ahorrarte disgustos si cometes un error ejecutando comandos críticos. El proceso típico es:

  • Crear usuario: adduser pedro
  • Darlo de alta en sudoers: usermod -aG sudo pedro
  • Configurar acceso SSH con clave pública

Después edito el archivo /etc/ssh/sshd_config para desactivar el acceso directo de root (PermitRootLogin no) y reinicio el servicio SSH. Es un paso obligatorio antes de abrir el servidor a internet.

Firewall y puertos iniciales

El siguiente paso es blindar los servicios. Un firewall bien configurado bloquea el 99% del tráfico malicioso. Yo suelo usar ufw en sistemas Debian/Ubuntu o firewalld en CentOS.

La configuración mínima que recomiendo:

  • Permitir SSH solo desde tu IP o rango seguro (si no es posible, limitar con fail2ban).
  • Abrir puertos del servicio web: 80 (HTTP), 443 (HTTPS).
  • Bloquear todo lo demás.

Comando rápido con UFW:

ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp
ufw allow 80,443/tcp
ufw enable

Una vez tienes esto listo, el servidor ya está bastante más protegido que la mayoría de VPS recién estrenados.

Fail2ban y protección ante ataques automatizados

Fail2ban analiza logs y bloquea IPs que intentan forzar accesos. Lo instalo en todos los servidores. En Ubuntu: apt install fail2ban -y. Basta con habilitar la jail de SSH y ajustar el tiempo de baneo.

También suelo proteger Postfix, Dovecot o nginx si los tengo instalados. Un ataque de fuerza bruta puede consumir recursos sin que te enteres. Este sistema evita eso. Si tu VPS tiene panel (como Plesk o CyberPanel), la mayoría ya integran fail2ban, solo hay que activarlo.

Actualizaciones automáticas y monitorización básica

Configuro actualizaciones automáticas de seguridad si el servidor no va a tener mantenimiento frecuente. Paquetes como unattended-upgrades o dnf-automatic lo hacen fácil. Ahorra tiempo y mantiene el servidor protegido.

Después instalo herramientas de monitorización básicas: htop y ncdu para rendimiento y disco, monit o netdata si quiero alertas. No es necesario montar Zabbix o Prometheus en un VPS pequeño, pero sí tener visibilidad mínima de CPU, RAM y red.

Configuración de backups

Si no hay backups, no hay sistema seguro. Mi norma es tener al menos una copia automática diaria externa. La mayoría de proveedores ofrecen snapshots, pero eso no sustituye una copia fuera del mismo datacenter.

  • Scripts de backup con rsync a otro servidor.
  • Copias a almacenamiento en la nube con rclone (por ejemplo, Backblaze o Wasabi).
  • Comprobación automática semanal (test real de restauración, no solo listar archivos).

Un backup que no puedes restaurar no sirve. Yo siempre pruebo restaurar una copia completa en otro VPS barato para asegurar que todo funciona.

Instalación del stack web

Cuando la base está lista, ya puedo instalar Nginx, PHP, MySQL o lo que necesite. Pero esto solo después de asegurar el entorno. Muchos principiantes hacen lo contrario: primero instalan WordPress y después piensan en la seguridad. Error clásico.

Mi orden típico:

  • Instalo Nginx o Apache.
  • Configuro HTTPS desde el principio con Certbot y Let’s Encrypt.
  • Añado la capa PHP (con FPM, nunca en modo módulo de Apache).
  • Optimizo la base de datos con caché de consultas y pools de conexiones.

El objetivo es ofrecer rendimiento sin comprometer seguridad. Si el VPS tiene 1 GB de RAM, uso swapfile y ajusto worker_processes. No hay fórmula mágica, pero siempre hay que dimensionar en función del tráfico real.

Configuración de certificados SSL

HTTPS ya no es opcional. Instalo Let’s Encrypt tan pronto como tengo el dominio apuntando al servidor. Ejemplo rápido con Certbot y Nginx:

apt install certbot python3-certbot-nginx -y
certbot --nginx -d midominio.com -d www.midominio.com

Después configuro la renovación automática: systemctl list-timers lo confirma. Si usas servicios como Cloudflare, recuerda desactivar el reenvío flexible (flexible SSL), mejor modo total.

Configuración del hostname y DNS

Muchos olvidan poner un hostname real al VPS. No es solo un detalle: algunos servicios (correo, logs, paneles) lo usan. Configuro el nombre con hostnamectl set-hostname srv1.midominio.com y lo añado en /etc/hosts.

Luego configuro los registros DNS adecuados: A y AAAA (para IPv6), PTR y SPF si voy a enviar correo. Si planeas usar el VPS como mail server, este paso es esencial para evitar entrar en listas negras.

Automatización y gestión remota

Una vez todo está funcionando, automatizo tareas. Cronjobs para limpiezas, copias, rotación de logs. Si gestiono varios servidores, uso Ansible para aplicar configuraciones idénticas.

También instalo un cliente de agente (como Netdata Cloud o UptimeRobot) para vigilar uptime sin necesidad de entrar constantemente por SSH. En servidores de clientes, incluso integro alertas por Telegram.

Verificaciones finales antes de usar en producción

Antes de subir cualquier web, hago una comprobación final:

  • ¿SSH solo con clave? ✔️
  • ¿Firewall activo? ✔️
  • ¿Backups automáticos verificados? ✔️
  • ¿Actualizaciones en marcha? ✔️
  • ¿Panel o servicios adicionales seguros (puertos no estándar, certificados SSL)? ✔️

Si todo esto está en orden, el VPS puede considerarse listo para producción. Los problemas graves suelen venir por omitir pasos de esta lista. En mis primeros años me confié varias veces y terminé formateando servidores enteros por un simple fallo de seguridad o un backup mal hecho. No subestimes estos detalles.

Mantenimiento continuo

Tener un VPS estable no es solo configurarlo bien al principio. Cada semana reviso logs, espacio en disco (df -h y ncdu), y si hay actualizaciones críticas. También monitorizo la carga del sistema con uptime y top. Si noto picos de CPU o consultas lentas, reviso configuraciones antes de que escale el problema.

Además, uso alertas por correo para que me avisen si el SSH deja de responder. Un VPS no debería dar sorpresas de un día para otro: si pasa, algo no está bien configurado.

La clave es prevenir, no apagar incendios. Quien sigue una rutina de mantenimiento rara vez tiene que recuperar un servicio caído.

Pequeños trucos personales

Un par de consejos que siempre aplico:

  • Instalar motd personalizado con recordatorios del sistema (fecha de backup, actualizaciones, etc.).
  • Usar alias de terminal para comandos peligrosos (por ejemplo, alias de rm con confirmación).
  • Guardar configuración en un repositorio Git privado, para replicar rápidamente en otro VPS.

Son detalles menores, pero ayudan a tener control total y repetir entornos fácilmente.

Si estás montando tu primer VPS o quieres mejorar tu proceso actual, te recomiendo comparar proveedores en función no solo del precio, sino del soporte y facilidad de administración. En esta comparativa de servidores recomendados encontrarás opciones equilibradas para diferentes presupuestos y niveles técnicos.