Empêcher le routage du trafic externe vers la boucle locale sur toutes les interfaces IPv4
Force net.ipv4.conf.all.route_localnet à 0 afin que le noyau refuse de router du trafic externe vers ou depuis la plage de boucle locale 127.0.0.0/8 sur chaque interface IPv4.
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
Par défaut, le noyau traite la plage de boucle locale 127.0.0.0/8 comme non routable (martian). Définir net.ipv4.conf.all.route_localnet=1 lève cette protection et autorise le noyau à router des paquets vers et depuis 127.0.0.0/8 sur de vraies interfaces. Un attaquant présent sur le segment local pourrait alors atteindre des services liés à 127.0.0.1, bases de données, sockets d'administration, endpoints de métriques, que l'opérateur n'exposait volontairement qu'à localhost. Maintenir la valeur à 0 préserve la boucle locale comme frontière de confiance.
Ce que vérifie Pavois
Pavois lit la valeur d'exécution en direct de net.ipv4.conf.all.route_localnet via le noyau (ressource InSpec kernel_parameter, équivalente à sysctl), et non le texte de /etc/sysctl.conf ou d'un drop-in. Un fichier sous /etc/sysctl.d/ peut déclarer 0 alors que le noyau en cours d'exécution conserve 1, car un drop-in ultérieur, un service au démarrage ou un sysctl -w manuel l'a écrasé. Auditer le paramètre effectif détecte cette dérive ; lire un fichier ne le ferait pas.
describe kernel_parameter('net.ipv4.conf.all.route_localnet') do
its('value') { should cmp 0 }
end
describe command("grep -hsE '^[[:space:]]*net.ipv4.conf.all.route_localnet[[: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écutez sysctl net.ipv4.conf.all.route_localnet. Sortie attendue :
net.ipv4.conf.all.route_localnet = 0
Inspecter et investiguer
Il s'agit d'un paramètre noyau ajustable, sans journal d'événements dédié. Inspectez son état avec sysctl net.ipv4.conf.all.route_localnet, listez les valeurs par interface avec sysctl -a | grep route_localnet, et confirmez la source persistée avec sysctl --system 2>&1 | grep route_localnet pour voir quel drop-in l'a défini en dernier.
Remédiation
Le plan de durcissement de Pavois utilise la ressource sysctl pour définir net.ipv4.conf.all.route_localnet à 0, en l'appliquant au noyau en cours d'exécution et en le persistant dans un drop-in géré par Pavois sous /etc/sysctl.d/ afin qu'il survive au redémarrage. Appliquez-le avec pavois harden apply.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| key | net.ipv4.conf.all.route_localnet |
|---|---|
| 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
Définir cette valeur à 0 correspond au défaut du noyau et est sûr pour la quasi-totalité des hôtes. Les seuls systèmes qui ont légitimement besoin de route_localnet=1 sont ceux exécutant des règles NAT/redirection qui acheminent le trafic vers un service sur 127.0.0.1 (certaines configurations de répartiteur de charge ou de proxy transparent, certains montages iptables/nftables DNAT vers la boucle locale). Avant d'appliquer, vérifiez qu'aucune règle de pare-feu ne dépend du routage de boucle locale (iptables-save | grep 127.0.0) ; si c'est le cas, ce service cesserait de recevoir du trafic. Ce changement ne présente aucun risque de perte d'accès distant.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R12 | 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.