Solution pour les clients situés derrières un NAT symétrique

Solution de la RFC 3581

Le client a besoin de connaître l’adresse IP et numéro de port que le routeur NAT lui a attribué pour établir une communication. La RFC 3581 propose d’insérer un nouveau paramètre au sommet du champ en-tête Via. Ce paramètre est nommé rport.
Dans le cas ou le client qui est soit un UAC ou un Proxy, souhaite établir une connexion, va envoyer une requête sur le protocole UDP à un serveur. Cette requête contient dans le champ Via le paramètre "rport" avec une valeur nulle pour déclarer que ce paramètre est nécessaire pour la transaction. Le fait d'utiliser le protocole UDP indique que le client est disposé à recevoir la réponse sur l'adresse IP et numéro de port source et le numéro de port du paramètre "sent-by" de Via.

Le serveur va recevoir cette requête et l'analyser. Il détecte le paramètre rport dans le champ Via sans aucune valeur. Le fait que "rport" soit vide, indique au serveur qu'il doit ajuter le numéro de port source de la requête. Il doit également ajouter l'adresse IP dans le paramètre "received". Pour l'envoi de la réponse sur le protocole UDP, le serveur va insérer l'adresse IP dans le paramètre "received" et le numéro de port dans le paramètre "rport". La réponse est envoyée sur l'adresse IP et nu

Les serveurs écoutant sur plusieurs ports, ils doivent se souvenir sur quel port a eu lieu la réception de la requête. Tandis qu'un Proxy plein état ce qui signifie qu'il mémorise la transaction n'aura pas de difficulté à insérer le numéro de port, un Proxy sans état, c'est à dire qu'il ne sauvegarde pas la transaction va chiffrer, l'adresse et le numéro de port de la destination. Une fois la réponse parvenue, le Proxy va utiliser cette information pour transmettre la réponse.

Syntaxe

La syntaxe suivante est celle de la RFC 3581 qui est utilisée en incluant le paramètre rport pour récupérer le numéro de port assigné par le routeur NAT.

reponse-port = « rport » [ÉGAL à 1*DIGIT]
BNF :
via-params = via-ttl / via-maddr
/ via-received / via-branch
/ response-port / via-extension

Beaucoup de paramètres sont utilisés dans les différents champs du protocole SIP. Ci-dessous sont présentés les paramètres de la syntaxe de la RFC 3581 qui sont insérés dans le champ via (Le champ via permet de "mapper" le chemin de la requête).

via-params = via-ttl / via-maddr / via-received / via-branch / via-extension

via-ttl : correspond à ttl Time To Live qui détermine la durée d'un paquet transmis dans le réseau.

via-maddr : correspond à Host (Hôte) qui est un serveur sur lequel l'utilisateur se connecte pour accéder au reste d'un réseau.

via-received : correspond à l'adresse IP reçue en V4 ou V6.

via-branch : au numéro de la transaction

via-extension : correspond au paramètre générique

Sécurité

Dans le cadre d’une solution VoIP, bien des éléments peuvent être attaqués : le téléphone, le réseau, le système d’exploitation, l’application, etc…
Un nombre trop important de message SIP INVITE peut créer une situation de service non rendu. En effet, cela ouvre la possibilité à des intrusions et à des interceptions de communications par l’intermédiaire du réseau de données.
Les techniques bien connues d’écoute de réseau tel que l’homme du milieu «man in the middle» (MITM) s’appliquent à l’interception. La seule solution pour limiter l’interception est l’usage de mécanismes cryptographiques pour les flux de signalisation et de données (voix encodées).
Les informations reçues et retransmises par le serveur Proxy se trouvent être des informations sensibles. En effet, les requêtes et les réponses incluent dans les champs «via» comportent les informations telles que l’adresse IP et le port source. Cette vulnérabilité entraîne la mise en place d’une solution pour sécuriser les communications VoIP à savoir SIP over TLS sur TCP. Dans le cas de fonctionnement particulier de la RFC 3581, aucune fonction de cheminement de réponse n’est assurée sur TCP. Seul les informations sur le port source sont fournit comme vu précédemment au niveau du serveur Proxy avec la valorisation du paramètre «rport». Il est possible qu'un hacker puisse essayer de perturber le service pour un client SIP en agissant en tant que MITM, modifiant le paramètre de «rport» dans l’en-tête «via» dans une requête envoyée par un client. La modification de ce paramètre empêchera des clients derrière un routeur NAT de recevoir l’appel.

haut de page