Activer le paramètre noyau de journalisation des paquets martiens sur toutes les interfaces IPv4 par défaut
Force net.ipv4.conf.default.log_martians à 1 afin que les interfaces IPv4 nouvellement créées journalisent par défaut les paquets à adresse source impossible ou usurpée.
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
Un paquet « martien » possède une adresse source qui ne peut légitimement apparaître sur l'interface où il est arrivé, adresses impossibles, usurpées ou à routage par la source. Les journaliser (log_martians=1) crée une trace forensique des tentatives d'usurpation, des voisins mal configurés et de la reconnaissance, transformant des rejets silencieux (par ex. issus de rp_filter) en événements exploitables. Le modèle default doit valoir 1 afin que chaque nouvelle interface hérite de cette visibilité.
Ce que vérifie Pavois
Pavois lit la valeur d'exécution en direct de net.ipv4.conf.default.log_martians depuis le noyau (ressource InSpec kernel_parameter, équivalente à sysctl), et non un fichier /etc/sysctl.d/. La clé default n'affecte que les interfaces créées après sa définition, donc la valeur en cours détermine si les futures interfaces journaliseront les martiens. Un fichier de configuration pourrait indiquer 1 alors qu'une surcharge ultérieure l'a laissé à 0 ; seul le paramètre effectif est fiable.
describe kernel_parameter('net.ipv4.conf.default.log_martians') do
its('value') { should cmp 1 }
end
describe command("grep -hsE '^[[:space:]]*net.ipv4.conf.default.log_martians[[:space:]]*=[[:space:]]*1([[: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.default.log_martians. Sortie attendue :
net.ipv4.conf.default.log_martians = 1
Inspecter et investiguer
Une fois activé, les entrées de paquets martiens apparaissent dans le journal noyau : dmesg | grep -i martian et journalctl -k | grep -i martian. Les lignes ressemblent à IPv4: martian source <ip> from <ip>, on dev <iface>. Inspectez l'état du paramètre avec sysctl net.ipv4.conf.default.log_martians.
Remédiation
Le plan de durcissement de Pavois utilise la ressource sysctl pour définir net.ipv4.conf.default.log_martians à 1, 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.default.log_martians |
|---|---|
| resource | sysctl |
| value | 1 |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Sûr à activer ; cela ajoute seulement de la journalisation et ne modifie aucun comportement de traitement des paquets, donc cela ne peut pas casser la connectivité ni l'accès distant. La seule considération est le volume de journaux : sur un réseau bruyant ou hostile, la journalisation des martiens peut être bavarde et risque d'inonder dmesg/le journal ; veillez à une rotation et une limitation de débit correctes. Associez-le aux règles all.log_martians et rp_filter afin que le trafic usurpé rejeté soit effectivement enregistré.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| CIS | 3.3.9, 3.3.1.17 | direct | per OS, see the benchmark table | haute |
| NIST | 3.1.20, CM-7(a), CM-7(b), SC-5(3)(a) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
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.