He estado trabajando en una solución de equilibrio de carga redundante de múltiples proveedores utilizando HAProxy, AWS y Cloudflare. Tengo una solución y creo que será segura, pero estoy buscando una nueva validación de por qué sería una idea terrible.
Tengo un equilibrador de carga configurado en Cloudflare. Esto hace una comprobación de estado en un ELB en AWS, El ELB es público y comprueba una instancia en EC2 que tiene HAProxy instalado. El EC2 y el ELB están en su propia VPC privada con su propio grupo de seguridad privado.
Quiero probar si el ELB está disponible en Cloudflare. También quiero registrar los controles de salud. Es interesante y valioso para mí ver de dónde proviene el acceso de IP.
Soy consciente de que HAProxy ofrece una solución monitor-uri, y esto funciona, pero no registra las solicitudes. Los documentos dicen que esto es intencional, tal vez porque no quieren inundar los registros con estas comprobaciones.
He intentado reescribir las solicitudes 503 sin backend, con un archivo de error que tiene 200 OK. Siempre devuelve 503, lo cual es comprensible.
Mi solución
Mi enfoque hace uso de la función de denegación de solicitud http. Si envío una solicitud http deny deny_status 200, devolverá 200. Si HAProxy está inactivo, ni siquiera llegará tan lejos. Por lo tanto, el hecho de que llegue hasta aquí es el éxito.
Para evitar falsos positivos, engaños o actividades peligrosas, especificaría denegar (denegar el estado 401 o similar) a cualquier fuente que no sea el ELB, utilizando la URL de AWS ELB DNS. El grupo de seguridad especificaría un puerto personalizado y permitiría solo a través de IP de cloudflare. Protección contra verificadores de estado desconocidos; estos no serían pasados o incluso en el ELB. De esta manera, la única forma de obtener un 200 de vuelta de la verificación de estado fue directamente desde el ELB en un puerto específico.
Descubrí que de esta forma se registran los controles de estado y se obtienen resultados precisos para el equilibrador de carga de la nube. Estoy pensando que esta es una configuración segura, pero ¿hay alguna razón para que esto no sea así? ¿Me estoy perdiendo un problema de seguridad aquí?
Posiblemente no relacionado: son muchas de las IP que se pueden agregar a la lista blanca de cloudflare, lo que me hace sentir incómodo en la lista blanca de tantas IP. Por lo que sé, las direcciones IP no deberían cambiar, y deberían pertenecer a Cloudflare, y debería poder confiar en ellas cuando haya servicio. ¿Me estoy preocupando demasiado?
No responda con soluciones alternativas, solo me preocupa la seguridad y la calidad de esta configuración.
IP de cloudflare: documentos ip de cloudflare
haproxy deny: HAProxy http-request documents