Ejecutamos nuestras aplicaciones en Heroku y usamos Cloudflare como CDN y para protegernos contra los ataques de DOS. Sin embargo, recientemente experimentamos un ataque (relativamente menor) que logró eludir fácilmente Cloudflare simplemente enviando solicitudes a uno de los servidores de enrutamiento que Heroku aloja en AWS al tiempo que configuramos el encabezado Host:
de las solicitudes a nuestro nombre de host. Esto funcionó porque el enrutamiento interno de la aplicación de Heroku se basa completamente en ese encabezado.
Le pregunté a Heroku si podían hacer algo al respecto y sugirieron manejarlo en la capa de middleware (que estamos usando reglas nginx). Pero esto todavía permite que el tráfico de ataque llegue a nuestro dinamómetro y aunque este ataque se gestionó utilizando esa estrategia, creo que un ataque mayor ralentizaría nginx, incluso si el servidor estuviera haciendo las conexiones en masa.
A falta de que ejecutemos nuestro propio proxy inverso, ¿alguien tiene alguna sugerencia para una mejor estrategia? ¿No es una debilidad importante de la arquitectura de Heroku que se dirijan a las aplicaciones basadas en el encabezado de solicitud Host:
en lugar de asignar direcciones IP a dynos? ¿Es eso típico de PaaS?