Configurer l'acceptation du routeur par défaut dans les annonces de routeur sur toutes les interfaces IPv6
Empêche l'hôte d'installer un routeur IPv6 par défaut appris via les annonces de routeur en positionnant net.ipv6.conf.all.accept_ra_defrtr à 0.
Vérifié sur l’état résolu en cours d’exécution (ex. sshd -T, sysctl, systemctl show), attrape les drop-ins et Include qu’une lecture de fichier raterait. Réserve : runtime ≠ persistance ; une valeur correcte maintenant peut ne pas survivre à un redémarrage.
Pavois vérifie la configuration effective, l’état résolu et réellement appliqué, pas un fichier. Les scanners basés fichier (OVAL/SCAP, Lynis) ratent les Include, drop-ins et défauts runtime ; ce check voit ce qui est réellement en vigueur.
Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.
Pourquoi cette règle
Lorsque accept_ra_defrtr est activé, l'hôte apprend son routeur IPv6 par défaut à partir des messages d'annonce de routeur (RA). Un attaquant sur le lien peut envoyer des RA illicites pour s'installer comme routeur par défaut et dérouter tout le trafic IPv6 de l'hôte à travers lui, un homme du milieu classique. Les hôtes au routage configuré statiquement ne devraient pas accepter de route par défaut issue des RA.
Ce que vérifie Pavois
Pavois lit la valeur effective via kernel_parameter('net.ipv6.conf.all.accept_ra_defrtr'), qui reflète le noyau en cours après fusion de tous les drop-ins sysctl.conf / /etc/sysctl.d/ et des surcharges runtime. Lire le seul /etc/sysctl.conf peut diverger de l'état effectif du noyau, d'autant que les valeurs par défaut RA IPv6 sont souvent surchargées par des drop-ins.
describe kernel_parameter('net.ipv6.conf.all.accept_ra_defrtr') do
its('value') { should cmp 0 }
end
describe command("grep -hsE '^[[:space:]]*net.ipv6.conf.all.accept_ra_defrtr[[:space:]]*=[[:space:]]*0([[:space:]]|$)' /etc/sysctl.conf /etc/sysctl.d/*.conf /run/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf 2>/dev/null") do
its('stdout') { should match(/\S/) }
endComment vérifier qu’elle est appliquée
Exécuter sysctl net.ipv6.conf.all.accept_ra_defrtr et attendre net.ipv6.conf.all.accept_ra_defrtr = 0.
Inspecter et investiguer
Confirmer avec sysctl net.ipv6.conf.all.accept_ra_defrtr (et par interface via sysctl -a | grep accept_ra_defrtr). Inspecter la table de routage IPv6 pour une route par défaut apprise par RA avec ip -6 route show default, et observer les RA sur le réseau avec tcpdump -ni any 'icmp6 && ip6[40] == 134'.
Remédiation
Le plan de durcissement de Pavois positionne net.ipv6.conf.all.accept_ra_defrtr = 0 via la ressource sysctl, en le persistant dans un drop-in géré par Pavois et en l'appliquant à chaud (sans redémarrage). À exécuter avec pavois harden apply.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| key | net.ipv6.conf.all.accept_ra_defrtr |
|---|---|
| resource | sysctl |
| value | 0 |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Peut casser la connectivité IPv6 si le réseau s'appuie sur SLAAC. De nombreux réseaux IPv6 ne diffusent la passerelle par défaut que via les annonces de routeur ; y désactiver accept_ra_defrtr laisse l'hôte sans route IPv6 par défaut et sans joignabilité IPv6 effective. Précaution : n'appliquer que sur des hôtes au routage IPv6 configuré statiquement (ou utilisant DHCPv6 pour la passerelle), ou là où IPv6 n'est pas utilisé. Vérifier avec ip -6 route show default avant et après, et disposer d'un accès console/IPv4 en cas de perte de l'accès IPv6 distant.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R13 | direct | 2.0 | haute |
Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.