Operación
Seguridad
Los controles que protegen el sistema, agrupados por dónde actúan: en el formulario, en el borde de red, en el transporte y en los datos.
Resumen
La seguridad de MediNodo no reside en un solo componente, sino en una cadena de controles: anti-abuso en el formulario (Turnstile y rate limit), exposición sin puertos (Cloudflare Tunnel), credenciales técnicas (AWS IAM), supresión de destinatarios (blocklist), integridad de datos (idempotencia) y recuperación (backups cifrados).
Protección del formulario
Cloudflare Turnstile
Comprueba que el envío del formulario de interés no provenga de automatización abusiva. La validación se ejecuta en Vercel.
Rate limit (Upstash)
Limita de forma distribuida los envíos a /api/interest, mitigando abuso por volumen.
Borde de red
Cloudflare protege y enruta los hostnames públicos. Los servicios privados (listmonk y FastAPI) solo se alcanzan a través del Tunnel, sin publicar puertos en Internet.
Transporte y credenciales
- SMTP autenticado y cifrado (LOGIN + STARTTLS) entre listmonk y Amazon SES.
- AWS IAM provee credenciales SMTP técnicas; deben tratarse como secretos y rotarse.
- El reenvío desde Vercel a
api.medinodo.comes autenticado y viaja por el Tunnel. - Autenticación de dominio (SPF, DKIM, DMARC) para proteger la reputación e impedir suplantación.
Blocklist y supresión
Cuando llega un hard bounce o un complaint, listmonk registra el evento y coloca al suscriptor en blocklist según los umbrales configurados. Así se evita volver a enviar a una dirección inválida o a una persona que marcó el mensaje como spam, protegiendo la reputación de envío.
La supresión depende del webhook
Si el webhook de SES no es accesible, el evento no se registra y la blocklist no se aplica. Monitorear su disponibilidad es un control de seguridad, no solo de operación.
Datos y privacidad
- Identificadores opacos (UUID de suscriptor y campaña) viajan en las URLs en lugar de datos personales en claro.
- Idempotencia en FastAPI evita registros duplicados de interés.
- Backups cifrados con Restic para PostgreSQL y los uploads de listmonk.
- Los datos de negocio permanecen en PostgreSQL, aislados del borde de Cloudflare.
Buenas prácticas
- Encadenar validaciones anti-abuso antes de tocar el backend.
- Nunca exponer listmonk ni FastAPI fuera del Tunnel en producción.
- Custodiar y rotar las credenciales SMTP de IAM.
- Probar la restauración de backups, no solo su creación.
Consideraciones
Seguridad en capas
Ningún control es suficiente por sí solo. La combinación de anti-abuso, borde privado, autenticación de correo y supresión sostiene la reputación y la integridad del sistema.