Désactiver l'acceptation des paquets routés entre interfaces locales
Définit net.ipv4.conf.all.accept_local=0 pour que le noyau rejette les paquets entrants usurpant l'une des adresses sources locales de l'hôte.
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 net.ipv4.conf.all.accept_local=1, le noyau accepte les paquets arrivant sur une interface dont l'adresse source est l'une des adresses locales de l'hôte (y compris le bloc de bouclage 127.0.0.0/8). Un attaquant sur le réseau peut forger de tels paquets usurpés pour faire passer l'hôte pour lui-même et contourner des filtres qui font confiance aux adresses sources locales. Le mettre à 0 fait que le noyau les considère comme des paquets invalides (martiens) et les rejette, fermant un vecteur d'usurpation d'adresse locale. Ce comportement est rarement nécessaire hors de configurations de routage spécifiques.
Ce que vérifie Pavois
Pavois lit la valeur noyau effective via kernel_parameter('net.ipv4.conf.all.accept_local') et vérifie qu'elle vaut 0. La clé all fixe la valeur par défaut effective appliquée par le noyau ; lire la valeur effective détecte un drop-in écrit mais jamais rechargé, ou écrasé par un fichier ultérieur. Un balayage limité aux fichiers de sysctl.d ne peut pas prouver ce que le noyau applique réellement aux paquets entrants.
describe kernel_parameter('net.ipv4.conf.all.accept_local') do
its('value') { should cmp 0 }
end
describe command("grep -hsE '^[[:space:]]*net.ipv4.conf.all.accept_local[[: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.accept_local. Sortie attendue :
net.ipv4.conf.all.accept_local = 0
Inspecter et investiguer
sysctl net.ipv4.conf.all.accept_localaffiche la valeur courante.cat /proc/sys/net/ipv4/conf/all/accept_localest la valeur brute du noyau.- Les paquets rejetés comme martiens ne sont journalisés que si
log_martiansest activé, voir la règle associéesysctl-net-ipv4-conf-all-log_martians, après quoi les paquets usurpés rejetés apparaissent dansdmesg/journalctl -ksous forme d'entréesmartian source.
Remédiation
Le plan de durcissement de Pavois utilise la ressource sysctl pour positionner net.ipv4.conf.all.accept_local à 0. Il écrit la clé dans un drop-in géré par Pavois puis le recharge, de sorte que le réglage soit actif immédiatement et persistant après 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.accept_local |
|---|---|
| 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
Pour un hôte standard, c'est la valeur sûre par défaut et elle n'a aucun effet sur le trafic normal. L'exception est une topologie de niche où l'on route délibérément des paquets entre deux interfaces de l'hôte par le réseau (certaines conceptions de répartition de charge ou de routeur multi-rattaché reposent sur accept_local=1). Avant d'appliquer, vérifiez que l'hôte n'est pas un tel routeur ; si c'est le cas, cette règle cassera ce chemin et il faudra restreindre l'assouplissement à l'interface concernée plutôt que désactiver la protection globalement.
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.