El campo de encabezado HTTP X- Fordered -For ( XFF ) es un método común para identificar la dirección IP de origen de un cliente que se conecta a un servidor web a través de un proxy HTTP o un equilibrador de carga .
El X-Forwarded-For
encabezado de solicitud HTTP fue introducido por los desarrolladores del servidor proxy de almacenamiento en caché Squid . [ cita requerida ]
X-Forwarded-For
también es un encabezado de correo electrónico que indica que un mensaje de correo electrónico se reenvió desde una o más cuentas (probablemente de forma automática). [1]
En este contexto, los servidores de almacenamiento en caché suelen ser los de los grandes ISP que alientan u obligan a sus usuarios a utilizar servidores proxy para acceder a la World Wide Web , algo que a menudo se hace para reducir el ancho de banda externo mediante el almacenamiento en caché. En algunos casos, estos servidores proxy son proxies transparentes y es posible que el usuario no sepa que los está utilizando.
Sin el uso de XFF u otra técnica similar, cualquier conexión a través del proxy revelaría solo la dirección IP de origen del servidor proxy, convirtiendo efectivamente el servidor proxy en un servicio de anonimato , haciendo que la detección y prevención de accesos abusivos sea significativamente más difícil que si la dirección IP de origen estaba disponible. La utilidad de XFF depende de que el servidor proxy informe de manera veraz la dirección IP del host original; por esta razón, el uso efectivo de XFF requiere saber qué proxies son confiables, por ejemplo buscándolos en una lista blanca de servidores en cuyos mantenedores se puede confiar.
Formato
El formato general del campo es: [2]
X-Fordered-For: cliente, proxy1, proxy2
donde el valor es una lista de direcciones IP separadas por comas + espacios, la más a la izquierda es el cliente original, y cada proxy sucesivo que pasó la solicitud agrega la dirección IP de donde recibió la solicitud. En este ejemplo, la solicitud pasó a través de proxy1, proxy2 y luego proxy3 (no se muestra en el encabezado). proxy3 aparece como dirección remota de la solicitud.
Ejemplos: [3]
X-reenviado-para: 203.0.113.195, 70.41.3.18, 150.172.238.178X-reenviado-para: 203.0.113.195X-reenviado-para: 2001: db8: 85a3: 8d3: 1319: 8a2e: 370: 7348
Dado que es fácil falsificar un campo X-Fordered-For, la información proporcionada debe usarse con cuidado. La dirección IP más a la derecha es siempre la dirección IP que se conecta al último proxy, lo que significa que es la fuente de información más confiable. Los datos X-Fordered-For se pueden utilizar en un escenario de proxy directo o inverso.
No siempre basta con registrar el campo X-Reenviado-For, ya que la última dirección IP de proxy en una cadena no está contenida en el campo X-Reenviado-For, está en el encabezado IP real. Un servidor web debe registrar AMBOS la dirección IP de origen de la solicitud y la información del campo X-Forjected-For para completar.
Servidores proxy y motores de almacenamiento en caché
El campo X-Fordered-For es compatible con la mayoría de los servidores proxy, incluidos A10 Networks , aiScaler , [4] Squid , [5] Apache mod_proxy, [6] Pound , [7] HAProxy , [8] [9] Varnish , [ 10] Dispositivo de seguridad web IronPort , [11] AVANU WebMux, Array Networks , AppDirector de Radware , Alteon ADC, ADC-VX y ADC-VA, F5 Big-IP , [12] Blue Coat ProxySG, [13] Cisco Cache Engine, McAfee Web Gateway, Phion Airlock, Finjan's Vital Security, NetApp NetCache , jetNEXUS, Crescendo Networks 'Maestro, Web Adjuster, Websense Web Security Gateway, [14] Microsoft Forefront Threat Management Gateway 2010 (TMG) [15] y NGINX. [dieciséis]
El registro X-Fordered-For es compatible con muchos servidores web, incluido Apache. IIS también puede usar un módulo HTTP para este filtrado. [17] [18] [19]
Zscaler enmascarará un encabezado X-Reenviado-For con Z-Reenviado-For, antes de agregar su propio encabezado X-Reenviado-For que identifica la dirección IP del cliente de origen. Esto evita que las direcciones IP internas se filtren fuera de los nodos de aplicación de Zscaler y proporciona a los proveedores de contenido de terceros la verdadera dirección IP del cliente. Esto da como resultado una solicitud HTTP no compatible con RFC.
Equilibradores de carga
- AVANU WebMux Network Traffic Manager, una solución de equilibrio de carga de red de entrega de aplicaciones inserta el encabezado X-Fordered-For de forma predeterminada en el modo de red única con un solo brazo y está disponible como una opción de granja en NAT de dos brazos, Transparente de dos brazos y Uno -Modos de retorno de servidor directo armado. [20]
- Barracuda Load Balancer de Barracuda Networks admite encabezados definidos por el usuario como X-Fordered-For para insertar la dirección IP del cliente en una solicitud de cliente. [21]
- NetScaler de Citrix Systems admite campos definidos por el usuario como X-Fordered-For para insertar la dirección IP del cliente en una solicitud de cliente. [22]
- Los módulos de equilibrio de carga de Cisco ACE también pueden insertar este campo, generalmente implementado cuando el equilibrador de carga está configurado para realizar NAT de origen , para permitir que el equilibrador de carga exista en una configuración de un solo brazo , al tiempo que proporciona un mecanismo que los servidores reales pueden usar para contabilizar para la dirección IP de origen del cliente. La referencia menciona x-forward, sin embargo, X-Fordered-For puede ser sustituido. [23]
- Los balanceadores de carga de F5 Networks admiten X-Fordered-For para configuraciones de un brazo y de varios brazos. [24] Big-IP también se puede configurar para delegar la confianza a los proxies a más de un salto de distancia y aceptar encabezados X-Fordered-For personalizados de otras fuentes. [25]
- Los balanceadores de carga virtuales LineRate admiten X-Fordered-For a través de configuraciones de unidades de línea de comandos o mediante scripts de node.js. [26]
- LoadMaster de KEMP Technologies admite X-Fordered-For para el equilibrio de carga no transparente en configuraciones de un solo brazo y configuraciones de múltiples brazos. [27]
- Coyote Point Systems Equalizer admite campos X-Fordered-For para el equilibrio de carga en configuraciones de un solo brazo y configuraciones de múltiples brazos. [28]
- Los relés OpenBSD pueden insertar y / o alterar este campo. [29]
- El servicio Elastic Load Balancing de Amazon admite este campo.
- LBL LoadBalancer admite X- Fordered -For para configuraciones de un brazo y de varios brazos.
- Radware AppDirector ADC, Alteon ADC, ADC-VX y ADC-VA admiten la inserción de un encabezado X-Fordered-For para el tráfico que es Source NAT hacia los servidores, además de ser capaz de proporcionar persistencia de tráfico basado en X- Encabezado de reenvío para distribuir el tráfico desde una conexión proxy a varios servidores mientras se conserva la persistencia en los servidores.
- Los balanceadores de carga de Loadbalancer.org Enterprise admiten el balanceo de carga X-Fordered-For de forma predeterminada [30]
Alternativas y variaciones
RFC 7239 estandarizó un Forwarded
encabezado HTTP con un propósito similar pero con más funciones en comparación con el X-Forwarded-For
encabezado HTTP. [31] Un ejemplo de Forwarded
la sintaxis de un encabezado:
Reenviado: para = 192.0.2.60; proto = http; por = 203.0.113.43
HAProxy define el protocolo PROXY que puede comunicar la dirección IP del cliente de origen sin usar el encabezado X-Forwarded-For
o Forwarded
. [32] Este protocolo se puede utilizar en varios protocolos de transporte y no requiere inspeccionar el protocolo interno, por lo que no se limita a HTTP.
Ver también
- Privacidad en Internet
- Lista de software proxy
- IP de origen X para SMTP equivalente
- Lista de campos de encabezado HTTP
Referencias
- ^ "{título}" . Archivado desde el original el 20 de septiembre de 2014 . Consultado el 5 de mayo de 2014 .
- ^ "calamar: seguir_x_enviado_para la directiva de configuración" . Squid-cache.org . Consultado el 12 de noviembre de 2017 .
- ^ "X-Reenviado-para" . Documentos web de MDN . Consultado el 6 de noviembre de 2020 .
- ^ "Página 152 de la Guía del administrador" (PDF) . Aiscaler.com . Consultado el 12 de noviembre de 2017 .
- ^ SquidFaq / ConfiguringSquid - Wiki de proxy web de Squid . Wiki.squid-cache.org (6 de febrero de 2012). Consultado el 24 de diciembre de 2012.
- ^ mod_proxy - Servidor HTTP Apache . Httpd.apache.org. Consultado el 24 de diciembre de 2012.
- ^ Pound proxy Archivado el 7 de junio de 2015 en Wayback Machine , en "Solicitar registro"
- ^ Manual de configuración de HAProxy . haproxy.1wt.eu. Consultado el 24 de diciembre de 2012.
- ^ haproxy.1wt.eu . haproxy.1wt.eu. Consultado el 24 de diciembre de 2012.
- ^ Preguntas frecuentes sobre el barniz. Archivado el 29 de marzo de 2008 en Wayback Machine con respecto al registro.
- ^ Dispositivos de seguridad web IronPort . Ironport.com (26 de noviembre de 2012). Consultado el 24 de diciembre de 2012.
- ^ "Uso de" X-Fordered-For "en Apache o PHP" . devcentral.f5.com.
- ^ Artículo 000010319 de la base de conocimientos de Bluecoat Archivado el 15 de febrero de 2015 en Wayback Machine . Kb.bluecoat.com (29 de junio de 2009). Consultado el 6 de marzo de 2014.
- ^ "Uso de" X-Fordered-For "en Websense WSG" . Websense.com . Consultado el 12 de noviembre de 2017 .
- ^ "Winfrasoft - X-Fordered-For - para TMG, ISA Server e IIS" . Winfrasoft.com . Consultado el 12 de noviembre de 2017 .
- ^ "Proxy inverso NGINX - NGINX" . Nginx.com . Consultado el 12 de noviembre de 2017 .
- ^ Winfrasoft XFF para IIS . Winfrasoft.com
- ^ Registro avanzado de IIS . Iis.net (10 de agosto de 2009). Consultado el 5 de junio de 2013.
- ^ Módulo HTTP X-Fordered-For para IIS7, fuente incluida. por Joe Pruitt Devcentral.f5.com. (5 de julio de 2013).
- ^ "Recursos técnicos de WebMux - Balanceo de carga de la red de entrega de aplicaciones" . Avanu.com . Consultado el 12 de noviembre de 2017 .
- ^ Inc, Barracuda Networks. "Servicios HTTP (S) de capa 7" . Campus Barracuda . Consultado el 12 de noviembre de 2017 .
- ^ Guía de administración de tráfico de Citrix NetScaler - Versión 9.1 ... Support.citrix.com. Consultado el 24 de diciembre de 2012.
- ^ Cisco ACE con NAT de origen y encabezado IP de cliente . Cisco.com. Consultado el 24 de diciembre de 2012.
- ^ Uso del campo de encabezado HTTP X-Fordered-For para conservar la dirección IP del cliente original para el tráfico traducido por un SNAT . Support.f5.com (26 de septiembre de 2012). Consultado el 24 de diciembre de 2012.
- ^ Descripción general del encabezado Trusted X-Fordered-For . Support.f5.com (26 de septiembre de 2012). Consultado el 24 de diciembre de 2012.
- ^ Insertar encabezado X-Fordered-For con LineRate (29/12/2014). Consultado el 5 de octubre de 2015.
- ^ Manual del producto LoadMaster . Kemptechnologies.com. Consultado el 24 de diciembre de 2012.
- ^ Guía del usuario del ecualizador . Coyotepoint.com. Consultado el 24 de diciembre de 2012.
- ^ página de manual de relayd.conf . Openbsd.org (29 de noviembre de 2017). Consultado el 4 de febrero de 2018.
- ^ Loadbalancer.org X-reenviado-para .Loadbalancer.org. Consultado el 15 de diciembre de 2017.
- ^ Petersson, A; Nilsson, M (junio de 2014). Extensión HTTP reenviada . IETF . doi : 10.17487 / RFC7239 . RFC 7239 . Consultado el 20 de febrero de 2020 .
- ^ Willy Tarreau: El protocolo PROXY . haproxy.1wt.eu. Consultado el 24 de diciembre de 2012.
enlaces externos
- Apache mod_extract_fordered