Seguridad de Internet: ¿Cómo funciona ICE / STUN en el contexto de la penetración del firewall?

La compañía para la que trabajo, Eyeball Networks, tiene tecnologías que son fundamentales para los estándares STUN, TURN e ICE.

Para comprender ICE y STUN, debe conocer los conceptos básicos de NAT.

NAT significa traducción de direcciones de red. Funciona de manera similar a una centralita telefónica, pero para una red informática. Una red puede tener algunos números públicos (direcciones IP) que se transmiten a Internet público, y luego una pila completa de números privados dentro de la red (como extensiones, pero también direcciones IP), que no se publicitan. NAT actúa como mediador entre los dos, traduciendo entre IP públicas y las IP privadas dentro de la red.

Aquí hay un diagrama para ilustrar:

NAT proporciona una serie de beneficios, como ocultar la topología de su red de Internet pública y permitirle necesitar menos direcciones IP públicas, que generalmente han sido escasas (esa es otra historia).

Pero para las aplicaciones en tiempo real y de igual a igual, como el chat de video y VoIP, NAT es un verdadero problema. Los rompe horriblemente. Entonces, para superar este problema, se inventó el recorrido NAT, y hoy está estandarizado por los estándares IETF STUN, TURN e ICE. Voy a incluir TURN en esta respuesta, porque a menudo es parte de la solución transversal NAT completa.

Para que una persona que llama, o una aplicación, atraviese un NAT, debe seguir una serie de pasos. STUN lo inicia haciendo un ‘descubrimiento’ de la situación. ¿Cuál es mi dirección IP? ¿Cuál es la dirección IP pública de mi red? ¿Qué puertos están disponibles para mí?

A continuación, las asignaciones de TURN determinan si hay un servidor en la red pública que podría actuar como un punto de retransmisión para mis comunicaciones, si fuera necesario. Esto suele suceder cuando su NAT se encuentra en un firewall de nivel empresarial, o lo que se conoce como “NAT simétrica”. Estos NAT bloquean P2P.

Una vez que se recopila toda esta información, ICE interviene. Me gusta pensar en ICE como el quarterback: evaluar la situación, los recursos de la red y llamar a la jugada, o cómo se debe configurar la llamada.

Luego, todo se une y es de esperar que tenga conectividad, ya sea peer-2-peer, o retransmitir a través del servidor TURN.

Aquí hay un diagrama que uso para describir todo el proceso. Está ocupado, pero sucede mucho en los milisegundos después de hacer clic en “llamar”.

Leyenda: el azul oscuro es STUN y TURN, el azul claro es ICE y el verde es tu medio. El rojo es señalización SIP en este caso.

¡Espero que ayude!

Pasé mucho tiempo trabajando en pilas de VoIP, y el recorrido NAT causó uno de los mayores problemas.

ICE y STUN sirven para propósitos ligeramente diferentes, con el mismo objetivo: solucionar los problemas creados por los clientes ocultos detrás de un NAT o firewall que desean comunicarse con otros clientes fuera de su red de manera punto a punto, generalmente llamadas VoIP.

STUN esencialmente permite al cliente descubrir qué dirección pública expone a través de una serie de solicitudes / respuestas a un servidor STUN que reside fuera de la red del cliente.

ICE se basa en esto mediante la recopilación de todas las interfaces de dirección posibles que un cliente podría tener (además de una o varias interfaces de red físicas y cualquier dirección NAT descubierta mediante consultas STUN, también podría tener una dirección de retransmisión asignada proporcionada por un servidor TURN – otro mecanismo para sortear NATs y firewalls). Envía todos estos “candidatos” como parte del paquete de inicio de sesión. El otro cliente hace lo mismo desde su final. Ambos prueban todos los emparejamientos posibles de sus direcciones IP disponibles para ver cuáles funcionan.

Esto, en pocas palabras, es la operación básica. ICE en realidad fue diseñado para aprovechar lo que STUN y TURN tenían para ofrecer, y para superar sus limitaciones. Uno de sus principales objetivos era trabajar con las configuraciones existentes de NAT y firewall, sin requerir cambios en su implementación.

Tenga en cuenta que aquí uso “cortafuegos” y NAT de manera intercambiable porque me refiero a los comportamientos del servidor proxy NAT + de los cortafuegos. Para otros enfoques de firewall también, el enfoque descrito aquí funciona básicamente de la misma manera.