¿Puedo confiar en la IP de origen de una solicitud HTTP?

35

Por lo que he entendido, si intenta emitir una solicitud HTTP con una dirección IP falsificada, el protocolo TCP falla, por lo que no es posible completar la solicitud HTTP, ya que SYN / ACK del servidor no No alcances al malvado cliente ...

... en la mayoría de los casos . Pero ahora ignoremos en su mayoría estos cuatro casos:
- El hombre en el medio (MITM) ataca
- El caso cuando el malvado cliente controla la red del servidor web
- El caso cuando el malvado cliente falsifica otra IP en su propia red local
- ataques de BGP

¿Entonces puedo confiar en la dirección IP de una solicitud HTTP?

Antecedentes: Estoy pensando en crear un mapa de direcciones IP y en el uso de recursos, y bloquear las direcciones IP que consumen demasiados recursos. Pero me pregunto si hay, por ejemplo, alguna manera de falsificar un número infinito de direcciones IP (emitiendo solicitudes HTTP exitosas con IP falsas), de modo que los búferes de uso de recursos por IP del servidor web crece enormemente y causa errores de memoria insuficiente.

(Hmm, quizás un malvado enrutador de Internet podría falsificar muchas solicitudes. Pero no son malvados, ¿no? (¿esto sería un ataque MITM? Es por eso que dije en su mayoría ignorar, arriba) )

    
pregunta KajMagnus 02.05.2012 - 09:58
fuente

3 respuestas

20

Sí (con sus suposiciones de descuidar que el cliente sea capaz de interceptar el retorno del protocolo de enlace en una IP falsa) si hace las cosas correctamente. Las solicitudes HTTP se realizan a través de TCP; hasta que se complete el protocolo de enlace, el servidor web no comienza a procesar la solicitud HTTP. Por supuesto, un usuario aleatorio podría intentar falsificar el final de un apretón de manos; pero como tienen que adivinar el ACK generado por el servidor, solo deberían tener una posibilidad de 1 en 2 ^ 32 (~ 4 billones) de hacerlo con éxito cada vez.

Como comentó Ladadadada, asegúrese de que no está recogiendo el valor incorrecto de la dirección IP remota en su aplicación web. Desea la dirección IP de encabezado del datagrama IP (específicamente, la dirección IP de origen). No desea valores como X-Forwarded-For / X-Real-IP que se pueden falsificar de forma trivial como se establecen en el encabezado HTTP. Definitivamente pruebe probando algunas direcciones IP; digamos un complemento del navegador o manualmente con telnet yourserver.com 80 .

El propósito de estos campos es que los proxies web (que pueden decir contenido de caché para servirlo más rápido) puedan comunicar a los servidores web la dirección IP real del usuario en lugar de la dirección IP proxies (que puede ser para cientos de usuarios). Sin embargo, dado que cualquiera puede configurar este campo, no se debe confiar.

    
respondido por el dr jimbob 02.05.2012 - 19:18
fuente
2
  

¿Puedo confiar en la IP de origen de una solicitud HTTP?

Puede estar razonablemente seguro de que la dirección IP de origen de una solicitud HTTP es la dirección de origen de la conexión TCP que generó la solicitud.

Cuando confiar en una dirección IP es una pregunta complicada, específica del contexto, pero en realidad no es lo que estás preguntando.

  
    

¿Le preocupa el impacto de usar / implementar los límites de velocidad por IP en la capa de aplicación y cualquier vulnerabilidad adicional a los ataques de denegación de servicio?

  
     

Me pregunto si al hacer eso, en la capa de la aplicación, se introducen vulnerabilidades adicionales, sí.

Depende completamente de su implementación, tanto de la política como de la tecnología.

  • ¿De qué tipo de recurso desea calificar el consumo límite?
  • ¿Qué desea lograr al crear este límite de tasa?
  • ¿En qué período de tiempo desea realizar la contabilidad?
  • ¿Dónde desea aplicar el límite?
  • ¿Es la dirección IP la mejor clave para el límite de velocidad?
  • ¿Cuáles son las posibles razones para el consumo excesivo?
  • ¿Cuál debería ser la experiencia del usuario en caso de consumo excesivo?

Dependiendo de las respuestas a estas preguntas, el límite de tasa puede ubicarse mejor en otra parte de la infraestructura del servicio, por ejemplo. firewall dedicado, firewall local. O si se autentica el acceso, entonces la credencial autenticada puede ser una mejor clave para la contabilidad de tasas y se definirán sus límites.

    
respondido por el MattH 02.05.2012 - 18:10
fuente
1

¿Cuál sería el punto de emitir SYN falsificado a un servidor HTTP si no tiene la intención de continuar el protocolo de enlace TCP? Su servidor web no verá la solicitud HTTP a menos que el cliente (posiblemente falso) obtenga el SYN / ACK, continúe estableciendo la sesión TCP y envíe una solicitud HTTP.

Almacene la base de datos en el disco, organícela inteligentemente (como un árbol) para búsquedas rápidas.

Si el cliente es falso o no, ¿realmente eso hace una diferencia para usted? Si se portan mal, se portan mal, no importa si son falsos o no.

Desde el punto de vista de un servidor web, consideraría que la IP remota es la verdadera IP remota.

    
respondido por el MattBianco 02.05.2012 - 10:25
fuente

Lea otras preguntas en las etiquetas