10

Actualmente estamos utilizando Lighttpd con FastCGI para servir PHP a nuestros clientes. Recientemente, hemos agregado equilibrio de carga a través de RackSpace Cloud para ayudarnos a manejar nuestro tráfico, sin embargo, la IP del cliente ahora es la IP del equilibrador de carga. Todo el tráfico es a través de HTTPS.Dirección de problema de IP del cliente sobre https con Rackspace Cloud Load Balancers

Hemos habilitado mod_extforward y hemos intentado todas las configuraciones diferentes al usar nuestro LB IP y los diferentes encabezados ("X-Forwarded-For", "Forwarded-For", "X-Cluster-Client-Ip") ¡y parece que no podemos hacer que esto funcione!

¿Alguna idea? ¡Gracias!

+2

Así que su pregunta es "¿En qué encabezado RackSpace Cloud envía la IP del cliente?" Debería ser "X-Forwarded-For", pero ¿por qué no simplemente volcar los encabezados y buscarlo usted mismo? – AndreKR

+0

No estoy exactamente seguro de cómo hacer esto. ¿Alguna ayuda allí? – Kaiser

+1

¿Has probado la salida de 'phpinfo()' para tu dirección IP? Bajo PHP 5.4 puede usar 'getallheaders()', para versiones anteriores la forma más fácil es probablemente usando 'tcpdump -s 2000 -w dump' y luego lanzando este volcado a Wireshark. – AndreKR

Respuesta

7

Si está utilizando Cloud Load Balancers de Rackspace, no podrá obtener la dirección IP del cliente a través de SSL.

Para HTTP simple, los balanceadores pueden hacer cosas inteligentes (la página "servicio no disponible", X-Forwarded-for, etc.) Sin embargo, los balanceadores de carga no pueden hacer otra cosa que transportar bytes entre el cliente y el servidor sobre HTTPS, porque, sin la clave privada, no hay forma de modificar la secuencia (que no sea inválida).

Alguien asked this question en los foros de Rackspace hace un momento.

+1

¿Ha habido actualizaciones al respecto? – ecorvo

0

Rackspace agregó la terminación SSL, por lo que puede hacer que el equilibrador de carga descifre el tráfico y pase el tráfico no encriptado a sus nodos de servidor. Ver this para más información. Por supuesto, esto significa que está enviando tráfico a través de lo que efectivamente es un enlace público desde el equilibrador de carga a sus servidores web. Y, solo está disponible a través de su API y no de la consola web, lo cual es una mierda.

1

De acuerdo con Rackspace, terminación SSL no debe utilizarse si su aplicación web está transmitiendo información de identificación personal (PII)

http://www.rackspace.com/knowledge_center/product-faq/cloud-load-balancers

Estoy teniendo que recurrir a la configuración de IP del cliente en una cookie. La cookie está configurada en javascript. La IP del cliente se obtiene haciendo una llamada jsonp a un servidor (no detrás de un equilibrador de carga) que proporciona la IP pública del cliente. Esto es todo lo que puedo pensar donde aún puedo utilizar Cloud Load Balancer de Rackspace.

+0

Esto no es un descargo de responsabilidad legal, sino un consejo. Si el tráfico descifrado solo atraviesa la red interna de Rackspace, es bastante seguro. Según Rackspace; "" "Aaron M (26/01/2017, 14:20:29): No tendría que preocuparse por el tráfico, las interfaces están configuradas para no permitir la detección/captura de paquetes desde el nivel del hipervisor, por lo que no sería posible capturar desde otro servidor "" " – MagicLAMP

0

Instalo mod_rpaf para servidores bajo balanceadores de carga y Rackspace. Entonces cualquier código PHP simplemente funciona igual que antes con REMOTE_ADDR

+0

Enlace? Configuración de ejemplo? ¿Por qué/cómo resuelve el problema? – Synchro

+0

' mod_rpaf' se puede configurar fácilmente en Apache 2.2 para reescribir 'REMOTE_ADDR' basado en el valor de' X -Forwarded-For' u otro encabezado HTTP. Esto hará que tanto los registros estándar como los intérpretes como PHP reciban un 'REMOTE_ADDR' corregido con la IP del cliente en lugar de la IP del equilibrador de carga. En Apache 2.4, el módulo estándar 'mod_remoteip' hace un trabajo similar. – gid

0

Una forma que encontré para resolver este problema es usar CloudFlare. Más allá de todas las características y beneficios adicionales que proporciona, en realidad es un proxy en sí mismo e incluirá su propio encabezado x-forward-for.

Esto omite el problema porque el encabezado x-forward-for ya está presente antes de que llegue al equilibrador de carga del espacio en rack, por lo que no necesita agregar nada. La dirección IP del cliente ya estará en el encabezado.

Tenga en cuenta: Este método no es totalmente infalible, incluso con una lista de proxies de confianza. Es posible falsificar su dirección IP modificando el archivo de host de su computadora y eludiendo Cloudflare, conectándose directamente al equilibrador de carga.No usaría esta técnica para nada que requiera alta seguridad.

Cuestiones relacionadas