Configurer le mode de réponse aux requêtes ARP pour toutes les interfaces IPv4
Définit net.ipv4.conf.all.arp_ignore=2 pour que l'hôte ne réponde aux requêtes ARP que pour l'IP propre à l'interface de réception, depuis un émetteur du même sous-réseau.
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
net.ipv4.conf.all.arp_ignore détermine à quelles requêtes ARP l'hôte répond. Dans le mode par défaut (0), l'hôte répond à une requête ARP pour n'importe laquelle de ses adresses locales quelle que soit l'interface de réception, ce qui provoque sur un hôte multi-rattaché un flux ARP : un voisin peut apprendre l'IP de l'hôte derrière la mauvaise MAC/interface, et un attaquant peut exploiter cette ambiguïté pour cartographier et cibler l'hôte. Le mettre à 2 fait que l'hôte ne répond que lorsque l'IP cible est locale à l'interface de réception et que l'émetteur est sur le même sous-réseau, produisant un comportement ARP déterministe et plus difficile à détourner.
Ce que vérifie Pavois
Pavois lit la valeur noyau effective via kernel_parameter('net.ipv4.conf.all.arp_ignore') et vérifie qu'elle vaut 2. Le comportement de réponse ARP est régi par la valeur noyau effective ; une entrée de sysctl.d écrite mais non rechargée, ou écrasée par une clé d'interface, ferait que l'hôte répond aux requêtes ARP différemment de ce qu'indique le fichier. Seule la valeur effective confirme le mode de réponse ARP réellement en vigueur.
describe kernel_parameter('net.ipv4.conf.all.arp_ignore') do
its('value') { should cmp 2 }
end
describe command("grep -hsE '^[[:space:]]*net.ipv4.conf.all.arp_ignore[[:space:]]*=[[:space:]]*2([[: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.arp_ignore. Sortie attendue :
net.ipv4.conf.all.arp_ignore = 2
Inspecter et investiguer
sysctl net.ipv4.conf.all.arp_ignoreaffiche la valeur courante.cat /proc/sys/net/ipv4/conf/all/arp_ignoreest la valeur brute du noyau.- Observez la table des voisins/ARP réelle avec
ip neigh show, et utilisezsysctl -a | grep arp_ignorepour voir les valeursallet par interface, qui se combinent.
Remédiation
Le plan de durcissement de Pavois utilise la ressource sysctl pour positionner net.ipv4.conf.all.arp_ignore à 2. Il écrit la clé dans un drop-in géré par Pavois puis le recharge, de sorte que le mode de réponse ARP plus strict 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.arp_ignore |
|---|---|
| resource | sysctl |
| value | 2 |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Sur un hôte à interface unique, cette règle ne change rarement quoi que ce soit de visible. La réserve importante concerne les hôtes multi-rattachés, répartiteurs de charge et clusters : des technologies comme LVS/IPVS en routage direct, keepalived/VRRP et certaines configurations HA s'appuient délibérément sur l'ARP inter-interfaces et peuvent casser avec arp_ignore=2. Avant d'appliquer, auditez tout hôte possédant des IP partagées/virtuelles ou exécutant un répartiteur de charge L4. Il n'y a pas de risque de blocage SSH sur un serveur normal à interface unique, mais sur les nœuds en cluster, validez le basculement après application.
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.