[Kamailio-Users-ES] Crear una transacción antes de autenticar, ¿sí o no?

Raúl Alexis Betancor Santana rabs at dimension-virtual.com
Mon Oct 13 13:16:18 CEST 2008


On Monday 13 October 2008 09:46:21 Iñaki Baz Castillo wrote:
> Hola, el RFC 3261 dice, en alguna parte que no recuerdo, que es
> aconsejable que un proxy/server no cree una transacción hasta que no
> se haya autenticado el request (si procede). El argumento es que una
> transacción consume recursos y que un atacante malicioso podría enviar
> una burrada de requests en paralelo para saturar el proxy/server. Es
> decir:
>
> 1 - Llega un request (req1).
> 2 - El proxy comprueba que no tiene cabecera de autenticación y lo
> rechaza, stateless, con un 401/407.
> 3 - El UAC repite el request con autenticación (req2).
> 4 - El proxy lo recibe y calcula el digest y tal y da por buena la
> autenticación.
> 5 - Entonces el proxy crea la transacción.
> 6 - Llega una retransmisión de req2 y el proxy responde lo último que
> se le respondió ("matchea" la transacción).
>
>
> Pero en un hilo en la lista de OpenSIPS, Bogdan me comenta que crear
> la transacción antes de autenticar puede ser positivo ya que evita el
> proceso de autenticación en retransmissiones del request. Es decir:
>
> 1 - Llega un request (req1).
> 2 - El proxy crea la transacción.
> 3 - El proxy comprueba que no tiene cabecera de autenticación y lo
> rechaza, stateful, con un 401/407.
> 4 - El UAC repite el request con autenticación (req2).
> 5 - El proxy lo recibe y se pone a calcular el digest, pero le lleva un
> rato. 6 - Llega una retransmisión de req2 y como ya existe la transacción
> no se procesa de nuevo la autenticación (BIEN).
> 7 - El proxy da por buena la autenticación previa.
> 6 - Llega una retransmisión de req2 y el proxy responde lo último que
> se le respondió ("matchea" la transacción).
>
> Ambas formas tienen sus inconvenientes, ¿cuál creéis que es mejor?
>
> Saludos.

Yo creo que es mejor la opción de no crear la transacción hasta que llegue 
autenticada, lo que comenta Bogan me parece una soberana estupidez.

En el escenario 1 es muy dificil (o directamente imposible) agotar los recursos 
del servidor, en el segundo caso es tremendamente fácil agotar los recursos 
del servidor, de hecho con el segundo escenario no se evita el potecial 
problema de DoS que per sé genera.

-- 
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.




More information about the Users-es mailing list