Désactiver le transfert IPv4 (forwarding) sur toutes les interfaces IPv4
Définit net.ipv4.conf.all.forwarding=0 pour qu'un hôte non routeur ne route pas les paquets entre ses interfaces.
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
Le transfert IP permet au noyau de router des paquets d'une interface à une autre, transformant l'hôte en routeur. Sur un système qui n'est pas censé router, laisser le transfert activé permet à un attaquant ayant pris pied d'utiliser l'hôte comme pivot pour atteindre les réseaux qu'il relie, contournant la segmentation et les pare-feux. Définir net.ipv4.conf.all.forwarding=0 garantit que l'hôte ne traite que le trafic qui lui est destiné. Le transfert ne doit être activé que sur les machines dont le rôle explicite est le routage (passerelles, boîtiers NAT, hôtes de conteneurs/VM).
Ce que vérifie Pavois
Pavois lit la valeur noyau effective via kernel_parameter('net.ipv4.conf.all.forwarding') et vérifie qu'elle vaut 0. Le fait que l'hôte transfère réellement le trafic dépend de la valeur noyau effective, et des outils comme Docker, libvirt ou un VPN démarré l'activent souvent à l'exécution, indépendamment de ce qu'indiquent les fichiers de sysctl.d. Lire la valeur effective détecte cette dérive ; un scanner basé sur les fichiers qui n'inspecte que la configuration rapporterait à tort le transfert comme désactivé.
describe kernel_parameter('net.ipv4.conf.all.forwarding') do
its('value') { should cmp 0 }
end
describe command("grep -hsE '^[[:space:]]*net.ipv4.conf.all.forwarding[[: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.forwarding (équivalent à sysctl net.ipv4.ip_forward). Sortie attendue :
net.ipv4.conf.all.forwarding = 0
Inspecter et investiguer
sysctl net.ipv4.conf.all.forwardingaffiche la valeur courante.cat /proc/sys/net/ipv4/ip_forwardest le commutateur global brut.- Pour trouver ce qui l'a réactivé, vérifiez
systemctl status docker libvirtdainsi que toute unité VPN/masqueradefirewalld; beaucoup d'entre elles activent le transfert à leur démarrage.
Remédiation
Le plan de durcissement de Pavois utilise la ressource sysctl pour positionner net.ipv4.conf.all.forwarding à 0. Il écrit la clé dans un drop-in géré par Pavois puis le recharge, de sorte que le transfert soit désactivé immédiatement et durablement. Appliquez-le avec pavois harden apply. Remarque : un service nécessitant le routage peut le réactiver à l'exécution ; relancez donc un scan après le démarrage de tels services.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| key | net.ipv4.conf.all.forwarding |
|---|---|
| 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ésactiver le transfert casse tout rôle de routage. N'appliquez pas (ou excluez explicitement) les hôtes qui sont des passerelles, points de terminaison NAT/VPN, nœuds Kubernetes, ou hôtes Docker/libvirt, ceux-ci ont besoin du transfert pour le réseau des conteneurs/VM et leurs invités perdront la connectivité. Avant d'appliquer, vérifiez que le seul rôle de l'hôte est d'être un point de terminaison. Sur de tels serveurs terminaux, il n'y a aucun impact ni blocage d'accès distant, car leur propre SSH entrant/sortant ne nécessite pas le transfert.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 3.3.1.2 | direct | per OS, see the benchmark table | 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.