Beneficios de identificar clientes basados en el encabezado HTTP "X-Forwarded-For" o similar, además de la IP del cliente

14

El encabezado X-Forwarded-For es utilizado por algunos proxies HTTP para identificar la dirección IP de el cliente. La página wiki (vinculada arriba) menciona que los ISP también pueden usar este encabezado.

Además, hay una variedad de encabezados adicionales que pueden usarse para identificar a un cliente. Algunos ejemplos incluyen:

  • HTTP_CLIENT_IP
  • HTTP_X_FORWARDED_FOR puede ser una lista de IPs delimitada por comas
  • HTTP_X_FORWARDED
  • HTTP_X_CLUSTER_CLIENT_IP
  • HTTP_FORWARDED_FOR
  • HTTP_FORWARDED
  
  1. ¿Puedo usar cualquiera de estos encabezados para el control de acceso, para bloquear o permitir el acceso a mi sitio?
      p.ej. Bloquee de forma escalonada: HTTP_Header_X primero, luego, ¿IP del cliente?

  2.   
  3. ¿Cuáles son los usos conocidos de estos encabezados?   p.ej. ISPs, software proxy como Squid, etc.

  4.   

Entonces consideré que algunos servidores web pueden alterar dinámicamente su respuesta en función de la presencia (o falta de) estos encabezados. Supongamos que un servidor prohibió a los usuarios por dirección IP. ¿Debería prohibir a un usuario basándose en la IP recibida o en la especificada en este encabezado? Luego consideré la posibilidad de falsificar este encabezado como una forma de evitar una prohibición de IP que el servidor pueda haber impuesto.

  
  1. ¿Qué preocupaciones de seguridad pueden existir alrededor de estos encabezados, cuál es la forma adecuada de solucionarlo?
      p.ej. Incluir que sea relevante para el registro, etc.
  2.   
    
pregunta random65537 07.11.2011 - 15:47
fuente

5 respuestas

12

Cualquiera de esos encabezados HTTP puede ser usado para fines de control de acceso, sin embargo, no confiaría ni en la presencia de esos encabezados ni en la validez de sus datos.

Lo más que usaría para el registro es. No hay garantías de que alguno de esos encabezados esté presente, o incluso si lo están, que contendrán datos válidos. Sé que hay X-Forwarded-For spoof plugins para Firefox, y probablemente también para otros navegadores. Esto hace que la información sea útil solo a nivel estadístico: tendencias, análisis de patrones, etc., definitivamente puede haber algún valor en la recopilación y el registro de esos encabezados. Simplemente no hagas nada que dependa de ellos

Cualquier tipo de confianza en los encabezados HTTP para cualquier tipo de autenticación o control de acceso debería clasificarse como el comportamiento de peor práctica.

Hay formas mucho mejores de controlar el acceso y la autenticación.

    
respondido por el Tim Kennedy 07.11.2011 - 16:27
fuente
4

Cuando los piratas informáticos ingresan a su sitio, intentarán utilizar servidores proxy para ocultar su origen. La mayoría de estos proxies agregan uno de estos encabezados. Al registrar estos encabezados, es más probable que descubra el origen.

Por ejemplo, hace dos años un pirata informático usó proxies abiertos para publicar correos electrónicos robados de investigadores del clima en sitios web de escépticos. Si esos sitios web hubieran rastreado esos encabezados, podrían haber descubierto la identidad del pirata informático.

    
respondido por el Robert David Graham 08.11.2011 - 03:38
fuente
4

El cliente puede agregar el encabezado X-Forwarded-For: ya sea que haya pasado por un proxy o no. Un simple curl -H "X-Forwarded-For: 127.0.0.1" http://example.com logrará esto.

Los proxies se pueden configurar para eliminar este encabezado con el fin de proporcionar privacidad adicional para el usuario final. Muchos proxies disponibles públicamente anuncian que hacen esto.

Aunque puede marcar todas de las direcciones IP encontradas en la lista delimitada por comas y bloquear o permitir el acceso en función de cualquiera de ellas, los dos puntos anteriores significan que no es difícil para ningún cliente para alterar completamente esos encabezados. El control de acceso no sería confiable.

Mantener una lista de todos los servidores proxy anónimos conocidos es una tarea difícil y, en última instancia, inútil.

¿Obtendría alguna ventaja al hacer esto? Posiblemente. Puede frustrar a un atacante por un corto tiempo hasta que encuentre un proxy anónimo o falsifique su propio encabezado. Esta frustración puede ser suficiente para que avance hacia un objetivo más fácil.

¿Hay desventajas? Un encabezado falsificado podría ser bastante largo y tener un formato incorrecto y no contener ninguna dirección IP. También podría haber varias copias del mismo encabezado. Agregar el código para hacer todo este chequeo podría introducir nuevos errores que podrían contener fallas de seguridad. También podría causar una sobrecarga significativa en encabezados largos o múltiples con formato incorrecto.

Nota al margen: Si está utilizando Apache, mod_rpaf tomará la última dirección IP de uno de varios encabezados y reemplazará la variable interna REMOTE_HOST con ella. Esto es útil sobre todo si sus servidores web están detrás de un proxy inverso.

Esto significa que si está utilizando mod_rpaf, el control de acceso dentro de Apache por la dirección IP no es confiable y se puede evitar fácilmente.

No hay garantía de que la última dirección IP en la lista sea la correcta o, de hecho, que cualquiera de ellas lo sea. El único valor conocido garantizado es la dirección IP a la que está conectado.

    
respondido por el Ladadadada 09.11.2011 - 13:34
fuente
2

La mayoría está de acuerdo con Ladadada: se trata de datos proporcionados por el usuario, aunque no se garantiza que sean precisos, al menos la dirección del cliente es mucho más difícil de falsificar.

Pero incluso cuando puede estar razonablemente seguro de la dirección del punto final, autenticar una solicitud basada en su dirección IP es solo una mala idea.

  

¿Puedo usar cualquiera de estos encabezados para el control de acceso, para bloquear o permitir el acceso a mi sitio?

Definitivamente no debería ser un criterio para permitir el acceso, pero eso no significa que no sea un criterio válido para bloquear el acceso . Después de todo, es poco probable que alguien cuya intención es abusar de su sitio gane al actuar de una manera que le impida acceder a su sitio.

De hecho, si desea poder responder de manera efectiva a los ataques de denegación de servicio, el sistema a seguir es un sistema de retroalimentación basado en los atributos de los ataques sospechosos. Esto es lo que hace fail2ban.

    
respondido por el symcbean 09.11.2011 - 18:51
fuente
0

El valor del campo de encabezado X-Forwarded-For se puede establecer en el lado del cliente, lo que también se puede denominar como X-Forwarded-For spoofing. Sin embargo, cuando la solicitud web se realiza a través de un servidor proxy (un servidor proxy no elite con bajo nivel de anonimato), el servidor proxy modifica el campo X-Forwarded-For agregando la dirección IP del cliente (usuario). Esto dará como resultado 2 direcciones IP separadas por comas en el campo X-Forwarded-For. Por lo tanto, el servidor web, si es necesario, puede detectar el uso de un servidor proxy y lo más probable es que detecte la falsificación. El siguiente artículo ofrece una explicación de esto con un ejemplo de código de Python X-Forwarded-For Spoofing .

    
respondido por el Guest 14.01.2014 - 18:38
fuente

Lea otras preguntas en las etiquetas