Docs

Hardening de Infraestructura

Checklist de hardening para VPS Contabo, Coolify, Railway, Redis, PostgreSQL, Docker y configuración de red del ecosistema Nvito.

PublicadoMarzo 2026Equipo de desarrollo, operaciones, CTO

VPS Contabo (DEV/TEST)

SSH

ItemEstadoAcción
Acceso solo con SSH keys (no password)VerificarPasswordAuthentication no en /etc/ssh/sshd_config
Puerto SSH no estandarRecomendadoCambiar de 22 a otro puerto (ej: 2222)
Root login deshabilitadoVerificarPermitRootLogin no en sshd_config
fail2ban instaladoRecomendadoapt install fail2ban con config para SSH
Usuarios limitadosVerificarSolo usuarios necesarios con acceso SSH

Firewall

ItemEstadoAcción
UFW o iptables activoVerificarufw status
Solo puertos necesarios abiertosVerificar80 (HTTP), 443 (HTTPS), SSH
Redis NO expuesto publicamenteVerificarPuerto 6379 solo en red interna
PostgreSQL NO expuesto publicamenteVerificarPuerto 5432 solo en red interna

Sistema operativo

ItemEstadoAcción
Actualizaciones automáticasRecomendadoapt install unattended-upgrades
Logs centralizadosPendienteConfigurar journald o rsyslog
Monitoreo de discoRecomendadoAlerta cuando disco supere 80%

Coolify

Configuración de seguridad

ItemEstadoAcción
HTTPS habilitado para dashboardVerificarCoolify debe accederse solo via HTTPS
2FA en cuenta de CoolifyRecomendadoActivar autenticación de dos factores
Backups automáticosVerificarConfigurar backups de BD y volumes
Variables de entorno encriptadasVerificarCoolify encripta env vars en reposo
Webhooks de deploy protegidosVerificarToken de autorización en webhooks de GitLab

Contenedores

ItemEstadoAcción
Imagenes base actualizadasImplementadonode:20.19.0-alpine pineada
Usuario non-root en contenedoresImplementadoUSER nestjs/nextjs en Dockerfiles
Health checks configuradosImplementadoHEALTHCHECK en Dockerfiles
Restart policyImplementadounless-stopped en docker-compose
Logs con rotaciónVerificarConfigurar log driver con max-size

Railway (Producción)

Configuración de seguridad

ItemEstadoAcción
Variables de entorno via BitwardenImplementadoSecrets gestionados centralmente
HTTPS forzadoVerificarRailway fuerza HTTPS por defecto
Custom domains con SSLPendiente (producción no activo)Configurar al desplegar
Logs accesiblesVerificarRailway Logs dashboard
Metricas de recursosVerificarCPU, memoria, red

Redis (Upstash en DEV/TEST)

ItemEstadoAcción
TLS habilitadoVerificarUpstash soporta TLS, verificar que REDIS_URL usa rediss://
AutenticaciónImplementadoUpstash requiere password en URL
Datos sensibles en cacheRevisarVerificar que tokens/sessions no se cachean sin TTL
Maxmemory policyVerificarallkeys-lru recomendado para evitar OOM

PostgreSQL

ItemEstadoAcción
SSL en conexiónVerificarsslmode=require en DATABASE_URL para remoto
Backups automáticosVerificarNeon/Railway tienen backups automáticos
Credenciales únicas por ambienteImplementadoCada ambiente tiene su propia BD
Migraciones controladasImplementadoSolo prisma migrate deploy, nunca prisma migrate dev en remoto

Docker local (desarrollo)

ItemEstadoAcción
Redis con autenticaciónImplementadorequirepass en docker-compose
Adminer desactivado por defectoImplementadoSolo con --profile debug
MinIO templates privadoImplementadoBucket sin acceso anonimo
Credenciales parametrizadasImplementadoVariables con defaults en docker-compose
.dockerignore completoImplementadoExcluye .env, .git, node_modules, coverage

S3/Cloudflare R2

ItemEstadoAcción
Buckets públicos solo los necesariosImplementadoSolo uploads y assets, templates es privado
URLs pre-firmadas con TTLVerificarTTL razonable (1 hora recomendado)
Validación de Content-TypeImplementadoMagic bytes validation + whitelist MIME
Limites de tamano por planImplementadoFree 5MB, Essential 25MB, Plus 50MB, VIP 100MB

Checklist trimestral de infraestructura

Ejecutar cada trimestre junto con la rotación de secrets:

  1. Verificar actualizaciones del SO en VPS
  2. Verificar versiones de imagenes Docker (node, postgres, redis, minio)
  3. Ejecutar npm audit en los 5 repos
  4. Verificar estado de certificados SSL
  5. Revisar logs de acceso para patrones sospechosos
  6. Verificar backups de BD (restaurar uno de prueba)
  7. Verificar que puertos innecesarios no estan expuestos
Esta pagina fue util?