Validation de l’adresse MAC du client DHCPv6 pour empêcher le détournement de session
À partir de la version 18.2R1 de Junos OS, un mécanisme non configurable permet aux serveurs locaux et aux agents de relais DHCPv6 d’abandonner les paquets d’un client dont l’adresse MAC est inconnue pour empêcher un client malveillant de détourner une session. Lorsqu’un serveur local ou un agent relais DHCPv6 reçoit un message de sollicitation d’un client pour établir une session, il extrait l’adresse MAC du client (adresse de couche de liaison) du message et l’ajoute à une table locale qui mappe les adresses MAC aux adresses ou préfixes IPv6 du client. Le serveur ou l’agent relais utilise cette table pour comparer les adresses MAC reçues dans les messages suivants du client afin de vérifier si le client est connu ; si ce n’est pas le cas, il est supposé être malveillant et le paquet de contrôle est abandonné. Parce que le paquet a échoué à la validation MAC, le compteur de validation MAC du client est incrémenté.
L’hypothèse ici est que le client qui envoie le premier message de sollicitation est bénin. Dans ce cas, la validation de l’adresse MAC du client protège contre un client malveillant qui tente de détourner une session client déjà établie ou en cours d’établissement. La validation de l’adresse MAC du client ne protège pas contre un client malveillant qui envoie le message initial de sollicitation.
Lorsqu’aucun agent relais n’est présent ; le serveur local partage une liaison ou un nœud d’accès avec le client. Dans ce cas, le serveur local extrait l’adresse MAC du client directement de l’en-tête de couche 2 du paquet de contrôle DHCPv6 et valide l’adresse par rapport à la table.
Lorsqu’un agent relais est présent, la validation est effectuée par l’agent relais. RFC 6939, Option d’adresse de couche de liaison client dans DHCPv6, permet aux agents de relais DHCPv6 connectés à la même liaison qu’un client DHCPv6 d’extraire l’adresse MAC du client à partir de l’en-tête Ethernet (couche 2) du paquet de contrôle DHCPv6 reçu. Le paquet inclut l’adresse de la couche de liaison du client comme adresse MAC source dans son en-tête Ethernet. L’agent relais valide l’adresse MAC par rapport à la valeur de ce client stocké dans sa table locale. Si l’adresse ne correspond pas, il abandonne le paquet.
Si l’adresse est validée par l’agent de relais et que le paquet n’est pas abandonné, l’agent de relais inclut également cette adresse MAC dans l’option 79 (Adresse de couche de liaison client) dans l’en-tête du message de relais-transfert DHCPv6 que l’agent de relais envoie au serveur local. Lorsque le serveur local DHCPv6 reçoit un message de relais-transfert d’un agent relais, le serveur examine automatiquement le message pour détecter la présence de l’option 79. Lorsque l’option est présente, le serveur local extrait l’adresse MAC et la valide par rapport à la valeur stockée dans la table pour ce client. Si l’option 79 n’est pas présente, le serveur local ne peut pas effectuer la validation.
Toutefois, comme l’agent relais a déjà validé l’adresse, le serveur local ne doit pas détecter d’incompatibilités d’adresse.
Les scénarios suivants décrivent les configurations d’agents relais possibles et leurs implications pour la validation des serveurs :
Un seul agent de relais DHCPv6 léger (LDRA ; La couche 2) est connectée entre le client et le serveur. Si le LDRA n’a pas ajouté l’option 79 à l’en-tête, le serveur local extrait l’adresse MAC du client directement de l’en-tête de couche 2 du paquet de contrôle DHCPv6 et valide l’adresse par rapport à la table.
Un ou plusieurs agents relais DHCPv6 de couche 3 sont connectés entre le client et le serveur. Dans ce cas, le serveur vérifie l’option 79 dans l’en-tête du message de relais-transfert le plus interne envoyé par l’agent de relais. L’en-tête le plus interne est vu car il s’agit de l’en-tête modifié par le premier agent relais contacté par le client. D’autres en-têtes sont ajoutés par les agents relais suivants dans le chemin. Ces agents n’ajoutent pas l’option 79 et ils ne peuvent pas extraire l’adresse MAC de l’en-tête de couche 2 du premier agent relais, car cet agent change l’adresse à sa propre adresse, comme le fait chaque agent relais suivant.
Une combinaison d’un agent relais de couche 2 (LDRA) orienté client, suivi d’un ou plusieurs agents de relais DHCPv6 de couche 3, est connectée entre le client et le serveur. Le serveur vérifie l’option 79 dans l’en-tête le plus interne du message relais-transfert envoyé par l’agent de relais. Si le LDRA n’a pas ajouté l’option 79 à l’en-tête, il n’est probablement pas capable de changer l’adresse MAC de l’en-tête en la sienne. Par conséquent, le serveur vérifie ensuite l’option dans le deuxième en-tête le plus interne, car le premier agent de relais de couche 3 a peut-être extrait l’adresse MAC et ajouté l’option 79 pour transmettre l’adresse.
Aucune configuration n’est nécessaire pour valider les adresses MAC des clients. Vous pouvez voir combien de paquets de contrôle ont été supprimés en raison d’un échec de validation en émettant la show dhcpv6 server statistics
commande.
Avantages de la validation de l’adresse MAC du client
La validation de l’adresse MAC du client vous permet d’empêcher un client DHCPv6 dont l’adresse MAC est inconnue de détourner une session établie par un client connu. L’utilisation des adresses MAC des clients DHCPv6 est susceptible d’augmenter, car il est pratique de corréner les clients DHCPv4 et DHCPv6 dans un environnement à double pile.