Activer le paramètre noyau pour appliquer TCP RFC 1337 sur les interfaces IPv4
Active la protection RFC 1337 contre l'assassinat de TIME_WAIT en positionnant net.ipv4.tcp_rfc1337 à 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
La RFC 1337 décrit le risque d'assassinat de TIME_WAIT : lorsqu'il est désactivé, un RST reçu dans l'état TIME_WAIT ferme la socket immédiatement au lieu d'attendre la fin de la période TIME_WAIT, ce qui peut laisser des segments périmés ou usurpés corrompre une nouvelle connexion réutilisant la même socket. Activer le comportement RFC 1337 ignore ces RST et protège l'intégrité des connexions.
Ce que vérifie Pavois
Pavois lit la valeur effective via kernel_parameter('net.ipv4.tcp_rfc1337'), qui reflète le noyau en cours après fusion de tous les drop-ins sysctl.conf / /etc/sysctl.d/ et des surcharges runtime, et non ce qu'une lecture statique de /etc/sysctl.conf pourrait prétendre.
describe kernel_parameter('net.ipv4.tcp_rfc1337') do
its('value') { should cmp 1 }
end
describe command("grep -hsE '^[[:space:]]*net.ipv4.tcp_rfc1337[[: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.tcp_rfc1337 et attendre net.ipv4.tcp_rfc1337 = 1.
Inspecter et investiguer
Confirmer avec sysctl net.ipv4.tcp_rfc1337. Il n'y a pas de ligne de journal dédiée ; le comportement des états TCP s'observe avec ss -tan state time-wait et des captures de paquets (tcpdump -ni any 'tcp[tcpflags] & tcp-rst != 0').
Remédiation
Le plan de durcissement de Pavois positionne net.ipv4.tcp_rfc1337 = 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.tcp_rfc1337 |
|---|---|
| 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 inconvénient notable sur serveurs ou postes de travail, cela ne change que la gestion des RST en TIME_WAIT, renforçant l'intégrité des connexions. Précaution : dans de très rares scénarios à fort renouvellement qui recyclent agressivement les sockets TIME_WAIT, conserver ces sockets toute la durée consomme un peu plus de mémoire socket ; négligeable pour des charges normales.
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.