Recientemente desplegué un nuevo servidor en la nube para alojar un sitio WordPress con una arquitectura desacoplada. El objetivo fue separar los servicios web y de base de datos, contenerizar con Docker, colocar Nginx como proxy inverso y reforzar la seguridad añadiendo un WAF local. Para ello utilicé SafeLine WAF, que inspecciona y filtra todo el tráfico entrante antes de alcanzar los contenedores. Si te interesa probarlo, puedes visitar SafeLine WAF.
Resumen de arquitectura: el servidor ejecuta Docker para aislar servicios y Portainer para gestionar contenedores de forma gráfica. Nginx se instala en el host y actúa como proxy inverso. El flujo de tráfico queda así: el servidor escucha internamente en el puerto 81 para servicios web, SafeLine WAF atiende el dominio en el puerto 80 y filtra peticiones, y tras la inspección reenvía al 81, que a su vez enruta al 8080 del contenedor de WordPress. Así todo acceso externo pasa primero por el WAF, elevando la seguridad sin sacrificar eficiencia.
Acceso SSH a Ubuntu: el usuario por defecto suele ser ubuntu y la cuenta root no trae contraseña asignada en la instalación. Habilita claves SSH, desactiva el acceso por contraseña cuando sea posible y usa sudo con cuentas nominativas para reforzar la gobernanza.
Mapeos y comunicación en Docker: para persistir archivos y separar datos de la imagen, mapea volúmenes con la opción -v, por ejemplo el directorio local data hacia la ruta del documento web del contenedor var www html. Mantén estos mapeos fuera del sistema de archivos root para facilitar backups y restauración.
Base de datos MySQL en contenedor: tras iniciar el contenedor, crea un usuario dedicado con permisos mínimos y contraseña robusta, restringe su acceso por host o red y aplica cifrado en tránsito. Evita conceder todos los privilegios al usuario root para entornos de producción. Recuerda actualizar las reglas de firewall para exponer únicamente el puerto necesario del servicio de base de datos y, si es viable, limita el acceso a la red interna del host o a la subred de Docker.
Conexión del contenedor a una base de datos local: en entornos Docker Desktop puedes usar el host especial host.docker.internal. En Linux, considera redes bridge personalizadas, alias de servicio y la resolución por nombre de contenedor. También puedes inspeccionar la IP del contenedor de base de datos, pero es preferible usar una red de Docker y un alias estable para evitar dependencias frágiles de IP.
Configuración de Nginx como proxy inverso: para evitar bucles de redirección cuando el backend está detrás de un proxy, propaga cabeceras como Host y X Forwarded For, y añade X Forwarded Proto para conservar el esquema de la petición original. Implementa reglas de normalización para forzar un host canónico y ruta base, y utiliza timeouts y límites de tamaño adecuados para proteger recursos y mejorar resiliencia.
Prevención de bypass del WAF por cambio de puerto: si algunas rutas o enlaces apuntan a otro puerto, podrían intentar saltarse el WAF. Soluciónalo asegurando que todas las peticiones externas llegan al 80 o 443 del WAF, aplicando redirecciones 301 controladas hacia el host canónico y bloqueando a nivel de firewall cualquier acceso directo al puerto 81 o 8080 desde Internet. Idealmente, expón solo el WAF y deja Nginx y WordPress accesibles únicamente desde redes internas o mediante reglas de seguridad del proveedor cloud.
Consideraciones de HTTPS y certificados: termina TLS en el WAF o en Nginx, según tu estrategia. Si terminas en el WAF, reenvía al backend con cabeceras X Forwarded Proto y fuerza HTTPS mediante redirecciones desde HTTP. Automatiza la emisión y renovación con ACME y revalida periódicamente la cadena de confianza.
Monitorización y observabilidad: habilita registros de acceso y error en Nginx y SafeLine WAF, centralízalos con tu stack de observabilidad y define alertas básicas por latencia, tasa de errores, códigos 4xx y 5xx, picos de 429 y detecciones del WAF. En Docker, expón métricas de contenedores y usa límites de CPU y memoria para evitar contención entre servicios.
Con este enfoque, Docker, Nginx y SafeLine WAF trabajan juntos para ofrecer un entorno de WordPress seguro y eficiente: todo el tráfico se filtra y monitoriza por el WAF, los servicios internos permanecen aislados, y se equilibra seguridad y rendimiento.
En Q2BSTUDIO acompañamos a empresas en todo el ciclo de vida digital con desarrollo de software a medida y aplicaciones a medida, integración de inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio e iniciativas de ia para empresas con agentes IA. Si buscas reforzar tu postura defensiva y validar controles, explora nuestros servicios de ciberseguridad y pruebas de intrusión en ciberseguridad y pentesting. Para despliegues resilientes y escalables en la nube, te ayudamos con arquitectura, migración y operación en servicios cloud en AWS y Azure.
Nuestro equipo también potencia la toma de decisiones con analítica avanzada, servicios inteligencia de negocio y power bi, y aplicamos inteligencia artificial y agentes IA para automatizar procesos, detectar fraudes, personalizar experiencias y optimizar operaciones. Ya sea que necesites software a medida, automatización y orquestación, o proyectos de ia para empresas, diseñamos soluciones seguras, observables y de alto rendimiento.
Recursos de SafeLine para seguir aprendiendo y resolver incidencias: código fuente en GitHub, documentación oficial en Docs y comunidad en Discord. Si requieres una implantación llave en mano o auditoría de tu stack WordPress con WAF, contáctanos en Q2BSTUDIO y te guiaremos en cada etapa, desde la arquitectura hasta la observabilidad continua.