Activer le paramètre noyau pour ignorer les réponses d'erreur ICMP invalides sur les interfaces IPv4
Demande au noyau d'ignorer les réponses d'erreur ICMP invalides (par ex. aux trames broadcast) en positionnant net.ipv4.icmp_ignore_bogus_error_responses à 1.
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
Certains routeurs violent la RFC 1122 en envoyant des réponses d'erreur ICMP invalides en réaction à des trames broadcast. Ignorer ces réponses empêche un attaquant (ou un équipement défaillant) d'inonder le journal du noyau de fausses erreurs ICMP et garde les journaux centrés sur les événements réels. En contrepartie, une petite part d'activité légitime ne serait pas journalisée.
Ce que vérifie Pavois
Pavois lit la valeur effective via kernel_parameter('net.ipv4.icmp_ignore_bogus_error_responses'), qui reflète le noyau en cours une fois fusionnés tous les drop-ins sysctl.conf / /etc/sysctl.d/ et les surcharges runtime. Un simple grep dans /etc/sysctl.conf peut diverger de ce que le noyau applique réellement.
describe kernel_parameter('net.ipv4.icmp_ignore_bogus_error_responses') do
its('value') { should cmp 1 }
end
describe command("grep -hsE '^[[:space:]]*net.ipv4.icmp_ignore_bogus_error_responses[[: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écuter sysctl net.ipv4.icmp_ignore_bogus_error_responses et attendre net.ipv4.icmp_ignore_bogus_error_responses = 1.
Inspecter et investiguer
Confirmer la valeur avec sysctl net.ipv4.icmp_ignore_bogus_error_responses. L'effet se traduit par l'absence de messages ICMP invalides dans le tampon noyau, à vérifier avec journalctl -k ou dmesg.
Remédiation
Le plan de durcissement de Pavois positionne net.ipv4.icmp_ignore_bogus_error_responses = 1 via la ressource sysctl, en le persistant dans un drop-in géré par Pavois et en l'appliquant à chaud (sans redémarrage). À exécuter avec pavois harden apply.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| key | net.ipv4.icmp_ignore_bogus_error_responses |
|---|---|
| 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
Aucun impact opérationnel notable : seules les réponses d'erreur ICMP malformées/invalides sont supprimées, la gestion normale des erreurs ICMP (découverte de MTU de chemin, destination injoignable, etc.) reste intacte. Précaution : si vous diagnostiquez activement un routeur capricieux qui émet ces erreurs, vous perdrez le bruit de journal correspondant, ne réactiver temporairement que si ce diagnostic est nécessaire.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| ANSSI BP-028 | R12 | direct | 2.0 | haute |
| CIS | 1.4.2, 3.3.3, 3.3.1.6 | direct | per OS, see the benchmark table | haute |
| NIST | 3.1.20, CM-7(a), CM-7(b), SC-5 | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| PCI DSS | 1.4.2 | support | 4.0.1 | 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.