Découverte sécurisée des voisins IPv6
Le protocole SEND (Secure Neighbor Discovery) pour le trafic IPv6 empêche un attaquant ayant accès au segment de diffusion d’abuser de NDP ou ARP pour inciter les hôtes à envoyer le trafic de l’attaquant à quelqu’un d’autre, une technique connue sous le nom d’empoisonnement ARP.
Présentation de la découverte sécurisée des voisins IPv6
L’une des fonctions du protocole NDP (Neighbor Discovery Protocol) IPv6 est de résoudre les adresses de couche réseau (IP) en adresses de couche de liaison (par exemple, Ethernet), une fonction exécutée dans IPv4 par le protocole ARP (Address Resolution Protocol). Le protocole SSEND (Secure Neighbor Discovery) empêche un attaquant ayant accès au segment de diffusion d’abuser de NDP ou ARP pour inciter les hôtes à envoyer à l’attaquant le trafic destiné à quelqu’un d’autre, une technique connue sous le nom d’empoisonnement ARP.
Pour se protéger contre l’empoisonnement ARP et d’autres attaques contre les fonctions NDP, SEND doit être déployé là où il n’est pas possible d’empêcher l’accès au segment de diffusion.
SEND utilise des paires de clés RSA pour produire des adresses générées cryptographiquement, telles que définies dans la RFC 3972, Adresses générées par chiffrement (CGA). Cela permet de s’assurer que la source revendiquée d’un message NDP est bien le propriétaire de l’adresse revendiquée.
Exemple : configuration de la découverte de voisinage IPv6 sécurisée
Cet exemple montre comment configurer IPv6 Secure Neighbor Discovery (SEND).
Exigences
Les exigences de cet exemple sont les suivantes :
Junos OS version 9.3 ou ultérieure
IPv6 déployé sur votre réseau
Si vous ne l’avez pas déjà fait, vous devez générer ou installer une paire de clés RSA.
Pour générer une nouvelle paire de clés RSA, entrez la commande suivante :
user@host> request security pki generate-key-pair type rsa certificate-id certificate-id-name size size
Aperçu
Pour configurer SEND, incluez les instructions suivantes :
protocols {
neighbor-discovery {
onlink-subnet-only;
secure {
security-level {
(default | secure-messages-only);
}
cryptographic-address {
key-length number;
key-pair pathname;
}
timestamp {
clock-drift number;
known-peer-window seconds;
new-peer-window seconds;
}
traceoptions {
file filename <files number> <match regular-expression> <size size> <world-readable | no-world-readable>;
flag flag;
no-remote-trace;
}
}
}
}
Spécifiez la valeur par défaut pour envoyer et recevoir des paquets NDP (Neighbor Discovery Protocol) sécurisés et non sécurisés. Pour configurer SEND afin d’accepter uniquement les messages NDP sécurisés et d’abandonner les messages non sécurisés. Spécifiez des messages sécurisés uniquement.
Tous les noeuds du segment doivent être configurés avec SEND si l’option messages sécurisés uniquement est utilisée, ce qui est recommandé sauf si seul un petit sous-ensemble d’équipements nécessite une protection accrue. L’échec de la configuration de l’option SEND pour tous les nœuds peut entraîner une perte de connectivité.
Topologie
Configuration
Procédure
Configuration rapide de la CLI
Pour configurer rapidement cet exemple, copiez les commandes suivantes, collez-les dans un fichier texte, supprimez les sauts de ligne, modifiez tous les détails nécessaires pour qu’ils correspondent à votre configuration réseau, puis copiez et collez les commandes dans l’interface de ligne de commande au niveau de la [edit] hiérarchie.
set protocols neighbor-discovery secure security-level secure-messages-only set protocols neighbor-discovery secure cryptographic-address key-length 1024 set protocols neighbor-discovery secure cryptographic-address key-pair /var/etc/rsa_key set protocols neighbor-discovery secure timestamp
Procédure étape par étape
L’exemple suivant vous oblige à naviguer à différents niveaux dans la hiérarchie de configuration. Pour plus d’informations sur la navigation dans l’interface de ligne de commande, reportez-vous à la section Utilisation de l’éditeur CLI en mode de configuration dans le Guide de l’utilisateur de l’interface de ligne de commande.
Pour configurer une découverte de voisinage IPv6 sécurisée :
Configurez le niveau de sécurité.
[edit protocols neighbor-discovery secure] user@host# set security-level secure-messages-only
(Facultatif) Activez la longueur de la clé.
La longueur de clé par défaut est 1024.
[edit protocols neighbor-discovery secure] user@host# set cryptographic-address key-length 1024
(Facultatif) Spécifiez le chemin d’accès au répertoire du fichier de clé publique-privée généré pour l’adresse cryptographique.
L’emplacement par défaut du fichier est le répertoire /var/etc/rsa_key .
[edit protocols neighbor-discovery secure] user@host# set cryptographic-address key-pair /var/etc/rsa_key
(Facultatif) Configurez un horodatage pour vous assurer que les messages de sollicitation et de redirection ne sont pas relus.
[edit protocols neighbor-discovery secure] user@host# set timestamp
Résultats
À partir du mode configuration, confirmez votre configuration en entrant la show protocols commande. Si la sortie n’affiche pas la configuration prévue, répétez les instructions de configuration de cet exemple pour la corriger.
user@host# show protocols
neighbor-discovery {
secure {
security-level {
secure-messages-only;
}
cryptographic-address {
key-length 1024;
key-pair /var/etc/rsa_key;
}
timestamp;
}
}
Si vous avez terminé de configurer l’appareil, entrez commit à partir du mode de configuration.
Vérification
Vérifiez que la configuration fonctionne correctement.
Vérification du cache de voisinage IPv6
But
Affichez des informations sur les voisins IPv6.
Action
À partir du mode opérationnel, entrez la show ipv6 neighbors commande.
Signification
Dans IPv6, le protocole ARP (Address Resolution Protocol) a été remplacé par le NDP. La commande show arp IPv4 est remplacée par la commande show ipv6 neighborsIPv6 . Les informations clés affichées par cette commande sont l’adresse IP, l’adresse MAC (Link Layer) et l’interface.
Événements de découverte du traçage des voisins
But
Effectuez une validation supplémentaire en traçant SEND.
Action
Configurez les opérations de traçage.
[edit protocols neighbor-discovery secure] user@host# set traceoptions file send-log user@host# set traceoptions flag all
Exécutez la
show logcommande.user@host> show log send-log Apr 11 06:21:26 proto: outgoing pkt on idx 68 does not have CGA (fe80::2a0:a514:0:14c), dropping pkt Apr 11 06:26:44 proto: sendd_msg_handler: recv outgoing 96 bytes on idx 70 with offset 40 Apr 11 06:26:44 dbg: sendd_proto_handler: Modifier (16) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Apr 11 06:26:44 cga: snd_is_lcl_cga: BEFORE overriding cc, cc:0, ws->col:0 Apr 11 06:26:44 proto: outgoing pkt on idx 70 does not have CGA (fe80::2a0:a514:0:24c), dropping pkt Apr 11 06:26:47 proto: sendd_msg_handler: recv outgoing 96 bytes on idx 68 with offset 40 Apr 11 06:26:47 dbg: sendd_proto_handler: Modifier (16) 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Signification
La sortie montre qu’étant donné que le paquet n’a pas d’adresse générée cryptographiquement, le paquet est abandonné.