La sécurité

Dans un environnement, et plus particulièrement sur un même lien local, où cohabitent des personnes coopérant ensemble et des personnes extérieures, il est nécessaire que les participants qui se connaissent utilisent des signatures IPSEC* et/ou DNSSEC* afin de distinguer les messages mDNS provenant des personnes qu'ils connaissent (qu'ils procèdent normalement) des messages provenant de participants non fiables (qu'ils ignorent).

Quand des requêtes DNS "globales" sont envoyées à l'adresse multicast mDNS (dans le cas de problèmes de communication avec l'Internet), il est très important d'utiliser DNSSEC. En effet, l'utilisateur peut avoir l'impression qu'il communique avec un hôte authentifié, alors qu'en fait, il communique avec un hôte local qui masque son nom réel.

Le mDNS étant un protocole résolvant les noms de machines locales, il faut tout d'abord définir le périmètre d'utilisation de ce protocole pour qu'il ne gère que la partie locale des noms de domaines. Par défaut le mDNS ne s'occupe que des noms de domaines se terminant par .local(.) ou les noms de domaines comme www.test.com, sans point final et dont la résolution DNS a échouée.

Etendre le domaine de travail du mDNS à d'autres domaines que .local. peut être une faille dans le sens où il serait facile pour une personne mal intentionnée d'intercepter et rediriger les requêtes vers ce qu'elle le souhaite.

Par exemple:
Une personne souhaitant se connecter à www.test.com (sans point final) envoie une requête mDNS au lieu de DNS, une personne ayant dans sa base de données mDNS ou comme identité www.test.com.local correspondra à la requête et pourra ainsi recevoir ou rediriger le traffic destiné à www.test.com.

De plus, un autre problème de sécurité est que, en autorisant le mDNS, des applications de découvertes de services mDNS telles que avahi-discover ou autres, permettent de récupérer en quelques secondes de nombreuses informations sur le réseau, les machines connectées, les services disponibles etc...
Une machine dont l'accés n'est pas sécurisé peut ainsi être accédée facilement par une personne n'ayant aucune connaissances du réseau. Le mDNS, dont le but est justement de découvrir ces machines facilement est donc une faille pour les réseaux ou aucune règle de sécurité, blocage ou filtrage n'est appliquée.




*DNSSEC:
L'une des solutions pour protéger les échanges mDNS est donc de se baser sur la version sécurisée du protocole DNS : DNSSEC.

DNSSEC, qui est l'abbréviation de "Domain Name Service Security Extensions" est un protocole permettant de sécuriser les échanges DNS, qui sont particulièrement sensibles. La sécurité est assurée de bout en bout de la communication et s'applique sur les donnés transmises. DNSSEC se base sur le principe de signatures cryptographiques pour protéger les échanges. Néanmoins, pour que le client puisse comprendre le message, il doit posséder la clé du serveur DNS.

Appliqué au mDNS, il est donc important que les différents participants du réseau local soient de confiance afin que la clé permettant de déchiffrer la signature des messages ne soit pas transmise à n'importe qui.

*IPSEC:
Contrairement au DNSSEC, IPSEC n'est pas un protocole spécifique aux échanges DNS mais à tout type d'échanges, il peut être utilisé pour la sécurisation d'un Lan to Lan (mode tunnel) ou pour l'échange d'information Host to Host (mode Transport).

IPSEC (Internet Protocole Security) est un ensemble de protocoles de niveau 3 du modèle OSI qui permettent le transfert d'informations sur le réseau ip (d'abord v6 puis adapté v4) de manière sécurisée. Il permet d'authentifier et de chiffrer les données qui transfèrent, seul le destinataire pourra comprendre les messages envoyés.



© Alexandre Cusin-Panit et Nicolas Duthilleul