# Sysctl

# Documentation des variables sysctl (Linux)

Ce document recense les paramètres `sysctl` les plus importants et les plus couramment modifiés sur un système Linux, organisés par sous‑système (`kernel.*`, `vm.*`, `fs.*`, `net.*`, `user.*`, `abi.*`). Il s'appuie sur la documentation officielle du noyau Linux ([kernel.org — admin-guide/sysctl](https://www.kernel.org/doc/html/latest/admin-guide/sysctl/index.html) et [networking/ip-sysctl](https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html)).

<div class="warn" id="bkmrk-les-noms%2C-valeurs-pa">Les noms, valeurs par défaut et disponibilité de certains paramètres varient selon la version du noyau et la distribution. Avant de modifier quoi que ce soit en production, vérifie la valeur actuelle avec `sysctl <nom>` ou `cat /proc/sys/<chemin>`.</div>## 1. Généralités : lire, modifier, persister

<table id="bkmrk-action-commande-list"><tbody><tr><th>Action</th><th>Commande</th></tr><tr><td>Lister toutes les variables courantes</td><td>`sysctl -a`</td></tr><tr><td>Lire une variable précise</td><td>`sysctl net.ipv4.ip_forward` ou `cat /proc/sys/net/ipv4/ip_forward`</td></tr><tr><td>Modifier temporairement (perdu au redémarrage)</td><td>`sysctl -w net.ipv4.ip_forward=1` ou `echo 1 > /proc/sys/net/ipv4/ip_forward`</td></tr><tr><td>Rendre le changement permanent</td><td>Ajouter la ligne `net.ipv4.ip_forward = 1` dans `/etc/sysctl.conf` ou un fichier dédié sous `/etc/sysctl.d/99-perso.conf`</td></tr><tr><td>Recharger la configuration persistante</td><td>`sysctl -p` (fichier unique) ou `sysctl --system` (tous les fichiers de `/etc/sysctl.d/`, `/run/sysctl.d/`, `/usr/lib/sysctl.d/`, dans l'ordre)</td></tr></tbody></table>

La correspondance est directe entre le nom sysctl et le chemin sous `/proc/sys` : les points deviennent des slashs, par exemple `net.ipv4.tcp_syncookies` ↔ `/proc/sys/net/ipv4/tcp_syncookies`.

## 2. Sommaire

- [kernel.\*](#bkmrk-3.-kernel.%2A-%E2%80%94-noyau) — comportement du noyau, sécurité, limites IPC
- [vm.\*](#bkmrk-4.-vm.%2A-%E2%80%94-gestion-m%C3%A9) — gestion mémoire, cache, swap
- [fs.\*](#bkmrk-5.-fs.%2A-%E2%80%94-fichiers-e) — descripteurs de fichiers, limites FS, protections
- [net.core.\*](#bkmrk-6.-net.core.%2A-%E2%80%94-pile) — pile réseau générique
- [net.ipv4.\*](#bkmrk-7.-net.ipv4.%2A-%E2%80%94-ipv4) — IPv4, TCP, ICMP, ARP
- [net.ipv6.\*](#bkmrk-8.-net.ipv6.%2A-%E2%80%94-ipv6) — IPv6
- [net.netfilter.\* / conntrack](#bkmrk-9.-net.netfilter.%2A-e)
- [net.unix.\*](#bkmrk-10.-net.unix.%2A-%E2%80%94-soc) — sockets Unix
- [user.\*](#bkmrk-11.-user.%2A-%E2%80%94-quotas-) — quotas de namespaces
- [abi.\*](#bkmrk-12.-abi.%2A-et-divers-) — compatibilité binaire
- [Sélection durcissement sécurité](#bkmrk-13.-s%C3%A9lection-%C2%AB-durc)

## 3. kernel.\* — noyau

### 3.1 Sécurité et confinement

<table id="bkmrk-variable-description"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`kernel.dmesg_restrict`</td><td>Restreint la lecture du buffer `dmesg` aux utilisateurs privilégiés (`CAP_SYSLOG`)</td><td>0 = non restreint · 1 = restreint (recommandé)</td></tr><tr><td>`kernel.kptr_restrict`</td><td>Masque les adresses mémoire du noyau exposées via `/proc`</td><td>0 = affichées · 1 = masquées pour non‑privilégiés · 2 = toujours masquées (recommandé)</td></tr><tr><td>`kernel.randomize_va_space`</td><td>Active l'ASLR (Address Space Layout Randomization)</td><td>0 = désactivé · 1 = mmap/stack/VDSO · 2 = + tas (heap), défaut et recommandé</td></tr><tr><td>`kernel.yama.ptrace_scope`</td><td>Restreint qui peut tracer (`ptrace`) un autre processus</td><td>0 = classique · 1 = enfants uniquement (recommandé) · 2 = admin seulement · 3 = personne (irréversible)</td></tr><tr><td>`kernel.unprivileged_bpf_disabled`</td><td>Interdit les appels `bpf()` aux utilisateurs non privilégiés</td><td>0 = autorisé · 1 = désactivé de façon permanente · 2 = désactivé mais modifiable (recommandé : 1 ou 2)</td></tr><tr><td>`kernel.modules_disabled`</td><td>Bloque tout chargement/déchargement de module noyau (irréversible une fois activé)</td><td>0 = autorisé · 1 = bloqué</td></tr><tr><td>`kernel.kexec_load_disabled`</td><td>Désactive les appels système `kexec` (charge d'un autre noyau en mémoire)</td><td>0 = autorisé · 1 = désactivé (irréversible)</td></tr><tr><td>`kernel.perf_event_paranoid`</td><td>Restreint l'accès aux événements de performance (perf) pouvant fuiter des infos noyau</td><td>-1 = tout autorisé · 2 = accès le plus restreint (recommandé sur serveur)</td></tr><tr><td>`kernel.sysrq`</td><td>Active/désactive et filtre les combinaisons Magic SysRq</td><td>0 = désactivé · 1 = tout activé · bitmask = activation sélective</td></tr><tr><td>`kernel.core_pattern` / `kernel.core_uses_pid`</td><td>Modèle de nom de fichier core dump et ajout du PID</td><td>défaut : `core`</td></tr><tr><td>`kernel.suid_dumpable`</td><td>(alias historique, voir `fs.suid_dumpable`) Autorise/interdit le core dump des binaires setuid</td><td>0 = interdit (recommandé) · 1 = debug · 2 = suidsafe</td></tr><tr><td>`kernel.io_uring_disabled`</td><td>Restreint la création d'instances io\_uring (surface d'attaque récente)</td><td>0 = autorisé · 1 = bloqué pour non‑privilégiés · 2 = bloqué pour tous</td></tr></tbody></table>

### 3.2 Comportement système, panique, watchdogs

<table id="bkmrk-variable-description-1"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`kernel.panic`</td><td>Délai (s) avant redémarrage auto après une panique noyau</td><td>0 = boucle infinie (défaut) · N = redémarre après N s</td></tr><tr><td>`kernel.panic_on_oops`</td><td>Force une panique dès qu'un « oops » survient</td><td>0 = continue (défaut) · 1 = panique</td></tr><tr><td>`kernel.panic_on_warn`</td><td>Force une panique sur tout `WARN()`</td><td>0 = défaut · 1 = panique</td></tr><tr><td>`kernel.watchdog` / `kernel.nmi_watchdog` / `kernel.soft_watchdog`</td><td>Active les détecteurs de blocage matériel/logiciel (lockup)</td><td>0 = désactivé · 1 = activé</td></tr><tr><td>`kernel.watchdog_thresh`</td><td>Seuil (s) de détection d'un lockup</td><td>défaut : 10</td></tr><tr><td>`kernel.hung_task_timeout_secs`</td><td>Délai avant qu'une tâche bloquée en état D soit signalée</td><td>0 = désactivé</td></tr><tr><td>`kernel.ctrl-alt-del`</td><td>Comportement de Ctrl+Alt+Suppr</td><td>0 = envoi SIGINT à init (propre) · &gt;0 = redémarrage immédiat</td></tr><tr><td>`kernel.printk`</td><td>4 niveaux de verbosité des logs noyau (console, défaut message, min console, défaut console)</td><td>ex. `4 4 1 7`</td></tr><tr><td>`kernel.printk_ratelimit` / `kernel.printk_ratelimit_burst`</td><td>Anti‑flood des messages noyau répétés</td><td>défaut : 5 s / 10 messages</td></tr></tbody></table>

### 3.3 Limites processus, PID, threads, IPC

<table id="bkmrk-variable-description-2"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`kernel.pid_max`</td><td>PID maximal attribuable avant réutilisation</td><td>défaut souvent 32768 ou 4194304 selon distro/arch</td></tr><tr><td>`kernel.threads-max`</td><td>Nombre maximal de threads que le système peut créer</td><td>calculé selon la RAM disponible</td></tr><tr><td>`kernel.ngroups_max`</td><td>Nombre maximal de groupes supplémentaires par utilisateur</td><td>défaut : 65536</td></tr><tr><td>`kernel.msgmax` / `kernel.msgmnb` / `kernel.msgmni`</td><td>Limites des files de messages IPC System V (taille max message, taille max file, nb de files)</td><td>défauts : 8192 / 16384 / 32000</td></tr><tr><td>`kernel.shmmax` / `kernel.shmall` / `kernel.shmmni`</td><td>Taille max d'un segment de mémoire partagée, total de pages partagées, nombre max de segments</td><td>shmmni défaut : 4096</td></tr><tr><td>`kernel.sem`</td><td>Limites des sémaphores System V (4 valeurs : SEMMSL, SEMMNS, SEMOPM, SEMMNI)</td><td>ex. `250 32000 32 128`</td></tr><tr><td>`kernel.overflowuid` / `kernel.overflowgid`</td><td>UID/GID de repli pour les appels 16‑bit historiques</td><td>défaut : 65534</td></tr></tbody></table>

### 3.4 Entropie / aléatoire

<table id="bkmrk-variable-description-3"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`kernel.random.entropy_avail`</td><td>Entropie actuellement disponible (lecture seule, indicatif)</td><td>—</td></tr><tr><td>`kernel.random.poolsize`</td><td>Taille du pool d'entropie</td><td>—</td></tr><tr><td>`kernel.random.urandom_min_reseed_secs`</td><td>Intervalle minimal de réamorçage de `/dev/urandom`</td><td>—</td></tr></tbody></table>

## 4. vm.\* — gestion mémoire

<table id="bkmrk-variable-description-4"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`vm.swappiness`</td><td>Tendance du noyau à utiliser le swap plutôt que le cache page/inode</td><td>0–200, défaut 60 · serveurs/BDD : souvent abaissé à 1–10</td></tr><tr><td>`vm.overcommit_memory`</td><td>Politique de sur‑allocation mémoire</td><td>0 = heuristique (défaut) · 1 = toujours autoriser · 2 = strict selon `overcommit_ratio`</td></tr><tr><td>`vm.overcommit_ratio`</td><td>% de RAM autorisé au‑delà du swap quand `overcommit_memory=2`</td><td>défaut : 50</td></tr><tr><td>`vm.dirty_ratio`</td><td>% de mémoire « sale » déclenchant une écriture disque bloquante par le process</td><td>défaut : 20</td></tr><tr><td>`vm.dirty_background_ratio`</td><td>% de mémoire sale déclenchant une écriture asynchrone en arrière‑plan</td><td>défaut : 10</td></tr><tr><td>`vm.dirty_expire_centisecs`</td><td>Âge (centisecondes) au‑delà duquel une donnée sale doit être écrite</td><td>défaut : 3000 (30 s)</td></tr><tr><td>`vm.dirty_writeback_centisecs`</td><td>Intervalle de réveil du thread d'écriture différée</td><td>défaut : 500 (5 s)</td></tr><tr><td>`vm.vfs_cache_pressure`</td><td>Tendance à récupérer la mémoire des caches dentry/inode</td><td>défaut : 100 (baisser conserve plus de cache FS)</td></tr><tr><td>`vm.min_free_kbytes`</td><td>Quantité de RAM libre que le noyau tente toujours de garder disponible</td><td>calculé automatiquement, ajustable</td></tr><tr><td>`vm.max_map_count`</td><td>Nombre maximal de zones mémoire (VMA) par processus — critique pour Elasticsearch/JVM</td><td>défaut : 65530</td></tr><tr><td>`vm.mmap_min_addr`</td><td>Adresse minimale qu'un utilisateur non privilégié peut mapper (mitigation exploits NULL‑deref)</td><td>défaut souvent 65536</td></tr><tr><td>`vm.mmap_rnd_bits` / `vm.mmap_rnd_compat_bits`</td><td>Nombre de bits de hasard pour l'ASLR des adresses mmap</td><td>plus élevé = ASLR plus fort</td></tr><tr><td>`vm.panic_on_oom`</td><td>Déclenche une panique noyau au lieu de tuer un processus lors d'un OOM</td><td>0 = défaut · 1/2 = panique</td></tr><tr><td>`vm.oom_kill_allocating_task`</td><td>Tue directement le processus demandeur plutôt que de choisir la meilleure victime</td><td>0 = défaut</td></tr><tr><td>`vm.zone_reclaim_mode`</td><td>Stratégie de récupération mémoire NUMA locale avant d'aller sur un autre nœud</td><td>défaut : 0</td></tr><tr><td>`vm.nr_hugepages`</td><td>Taille du pool de hugepages réservées</td><td>défaut : 0</td></tr><tr><td>`vm.drop_caches`</td><td>Vide manuellement les caches (écriture seule, diagnostic)</td><td>1 = pagecache · 2 = dentries/inodes · 3 = les deux</td></tr><tr><td>`vm.user_reserve_kbytes` / `vm.admin_reserve_kbytes`</td><td>Mémoire réservée pour éviter qu'un process ne bloque tout le système / pour l'admin</td><td>calculés selon la RAM</td></tr><tr><td>`vm.watermark_scale_factor`</td><td>Agressivité de `kswapd` pour libérer de la mémoire en avance</td><td>défaut : 10 (max 3000)</td></tr><tr><td>`vm.unprivileged_userfaultfd`</td><td>Autorise `userfaultfd()` aux utilisateurs non privilégiés (surface d'attaque)</td><td>0 = interdit (recommandé) · 1 = autorisé</td></tr></tbody></table>

## 5. fs.\* — fichiers et filesystem

<table id="bkmrk-variable-description-5"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`fs.file-max`</td><td>Nombre maximal de descripteurs de fichiers ouverts pour tout le système</td><td>calculé selon la RAM, souvent augmenté sur serveurs (ex. 2097152)</td></tr><tr><td>`fs.file-nr`</td><td>Lecture seule : handles alloués / libres / max actuels</td><td>—</td></tr><tr><td>`fs.nr_open`</td><td>Nombre maximal de descripteurs qu'un seul processus peut ouvrir</td><td>défaut : 1048576</td></tr><tr><td>`fs.aio-max-nr`</td><td>Nombre maximal de requêtes d'I/O asynchrone système (utile pour bases de données)</td><td>défaut : 65536</td></tr><tr><td>`fs.inotify.max_user_watches`</td><td>Nombre maximal de fichiers surveillés par `inotify` et par utilisateur (IDE, Docker, etc.)</td><td>souvent augmenté (ex. 524288)</td></tr><tr><td>`fs.inotify.max_user_instances`</td><td>Nombre maximal d'instances `inotify` par utilisateur</td><td>défaut : 128</td></tr><tr><td>`fs.epoll.max_user_watches`</td><td>Limite de « watches » epoll par utilisateur</td><td>calculé selon la mémoire</td></tr><tr><td>`fs.suid_dumpable`</td><td>Autorise le core dump des binaires setuid/setgid (sensible côté sécurité)</td><td>0 = interdit (recommandé) · 1 = debug · 2 = suidsafe</td></tr><tr><td>`fs.protected_symlinks`</td><td>Empêche de suivre un symlink dans un dossier world‑writable si le propriétaire diffère (anti TOCTOU)</td><td>0 = désactivé · 1 = activé (recommandé, souvent défaut)</td></tr><tr><td>`fs.protected_hardlinks`</td><td>Empêche de créer un hardlink vers un fichier qu'on ne possède pas déjà (anti élévation de privilèges)</td><td>0 = désactivé · 1 = activé (recommandé)</td></tr><tr><td>`fs.protected_fifos`</td><td>Restreint l'écriture dans des FIFOs situées dans des dossiers world‑writable</td><td>0 = désactivé · 1/2 = restreint (recommandé ≥1)</td></tr><tr><td>`fs.protected_regular`</td><td>Même principe pour les fichiers réguliers dans des dossiers « sticky » world‑writable</td><td>0 = désactivé · 1/2 = restreint (recommandé ≥1)</td></tr><tr><td>`fs.mount-max`</td><td>Nombre maximal de montages dans un namespace de montage</td><td>défaut : 100000</td></tr><tr><td>`fs.pipe-user-pages-soft` / `fs.pipe-user-pages-hard`</td><td>Limites de pages allouées aux pipes par utilisateur non privilégié</td><td>0 = illimité (hard)</td></tr><tr><td>`fs.mqueue.msg_max` / `msgsize_max` / `queues_max`</td><td>Limites des files de messages POSIX (`mqueue`)</td><td>variables selon distro</td></tr><tr><td>`fs.leases-enable`</td><td>Active les baux de fichiers (file leases)</td><td>défaut : 1</td></tr><tr><td>`fs.dentry-state` / `fs.inode-nr`</td><td>Statistiques lecture seule sur les caches dentry/inode</td><td>—</td></tr></tbody></table>

## 6. net.core.\* — pile réseau générique

<table id="bkmrk-variable-description-6"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut typiques</th></tr><tr><td>`net.core.somaxconn`</td><td>Taille max de la file d'attente des connexions en attente d'`accept()` pour un socket en écoute</td><td>défaut historique 128, souvent relevé à 1024–4096 sur serveurs</td></tr><tr><td>`net.core.netdev_max_backlog`</td><td>Nombre max de paquets en file d'attente avant traitement par le noyau quand une interface reçoit plus vite qu'il ne traite</td><td>défaut : 1000, souvent monté à 5000+ en haut débit</td></tr><tr><td>`net.core.rmem_default` / `net.core.rmem_max`</td><td>Taille par défaut / maximale du buffer de réception socket</td><td>ex. 212992 / augmenté selon besoins réseau</td></tr><tr><td>`net.core.wmem_default` / `net.core.wmem_max`</td><td>Taille par défaut / maximale du buffer d'émission socket</td><td>idem</td></tr><tr><td>`net.core.optmem_max`</td><td>Mémoire tampon max pour les options de socket ancillaires</td><td>défaut : 20480</td></tr><tr><td>`net.core.netdev_budget`</td><td>Nombre de paquets qu'un cœur peut traiter par cycle NAPI avant de rendre la main</td><td>défaut : 300</td></tr><tr><td>`net.core.default_qdisc`</td><td>Discipline de mise en file d'attente par défaut des interfaces (ex. `fq_codel`, `fq`)</td><td>varie selon distro</td></tr><tr><td>`net.core.busy_poll` / `net.core.busy_read`</td><td>Durée (µs) de scrutation active avant de repasser en mode interruption — réduit la latence au prix du CPU</td><td>défaut : 0 (désactivé)</td></tr><tr><td>`net.core.message_cost` / `net.core.message_burst`</td><td>Anti‑flood des messages d'avertissement réseau du noyau</td><td>—</td></tr></tbody></table>

## 7. net.ipv4.\* — IPv4, TCP, ICMP, ARP

### 7.1 Routage et transfert

<table id="bkmrk-variable-description-7"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`net.ipv4.ip_forward`</td><td>Active le routage de paquets entre interfaces (obligatoire pour un routeur/passerelle/NAT)</td><td>0 = désactivé (défaut station) · 1 = activé</td></tr><tr><td>`net.ipv4.conf.all.forwarding`</td><td>Équivalent par interface du transfert IPv4</td><td>0/1</td></tr><tr><td>`net.ipv4.conf.*.rp_filter`</td><td>Filtrage par chemin inverse (RFC 3704), anti IP‑spoofing</td><td>0 = désactivé · 1 = strict (recommandé) · 2 = souple</td></tr><tr><td>`net.ipv4.conf.*.accept_source_route`</td><td>Accepte les paquets avec option de routage source (souvent utilisée en attaque)</td><td>0 = refusé (recommandé)</td></tr><tr><td>`net.ipv4.conf.*.accept_redirects`</td><td>Accepte les redirections ICMP (peuvent détourner le routage)</td><td>0 = refusé (recommandé sur serveur) · 1 = accepté (défaut hôte)</td></tr><tr><td>`net.ipv4.conf.*.secure_redirects`</td><td>N'accepte les redirections ICMP que depuis des passerelles connues</td><td>1 = défaut</td></tr><tr><td>`net.ipv4.conf.*.send_redirects`</td><td>Autorise l'envoi de redirections ICMP (pertinent seulement pour un routeur)</td><td>0 = désactivé (recommandé si pas routeur)</td></tr><tr><td>`net.ipv4.conf.*.log_martians`</td><td>Journalise les paquets à adresse source/destination impossible (détection de spoofing)</td><td>1 = recommandé</td></tr><tr><td>`net.ipv4.conf.*.accept_local`</td><td>Accepte les paquets dont l'adresse source semble locale, arrivant sur une interface externe</td><td>0 = défaut</td></tr></tbody></table>

### 7.2 ICMP

<table id="bkmrk-variable-description-8"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`net.ipv4.icmp_echo_ignore_broadcasts`</td><td>Ignore les requêtes ICMP echo/timestamp envoyées en broadcast/multicast (anti Smurf)</td><td>1 = recommandé (souvent défaut)</td></tr><tr><td>`net.ipv4.icmp_echo_ignore_all`</td><td>Ignore tous les pings entrants</td><td>0 = défaut · 1 = ignore tout</td></tr><tr><td>`net.ipv4.icmp_ignore_bogus_error_responses`</td><td>Supprime les logs d'erreurs ICMP non conformes émises par des routeurs bogués</td><td>1 = recommandé</td></tr><tr><td>`net.ipv4.icmp_ratelimit` / `icmp_ratemask`</td><td>Limite le débit d'envoi de certains types de messages ICMP (anti déni de service)</td><td>défaut : 1000 ms</td></tr></tbody></table>

### 7.3 ARP

<table id="bkmrk-variable-description-9"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`net.ipv4.conf.*.arp_ignore`</td><td>Contrôle les conditions de réponse à une requête ARP (utile en multi‑interfaces)</td><td>0 = défaut (répond toujours) · 1‑8 = filtrage croissant</td></tr><tr><td>`net.ipv4.conf.*.arp_announce`</td><td>Contrôle quelle adresse source annoncer dans les requêtes ARP émises</td><td>0 = défaut · 2 = le plus restrictif</td></tr><tr><td>`net.ipv4.conf.*.proxy_arp`</td><td>Active le proxy ARP sur l'interface (répond à la place d'un autre hôte)</td><td>0 = désactivé (défaut)</td></tr></tbody></table>

### 7.4 TCP

<table id="bkmrk-variable-description-10"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`net.ipv4.tcp_syncookies`</td><td>Envoie des « syncookies » quand la file SYN déborde — protection anti SYN flood</td><td>1 = activé (recommandé, souvent défaut)</td></tr><tr><td>`net.ipv4.tcp_max_syn_backlog`</td><td>Nombre max de connexions en attente à l'état SYN\_RECV</td><td>défaut variable, souvent 1024‑4096</td></tr><tr><td>`net.ipv4.tcp_fin_timeout`</td><td>Durée avant fermeture d'une connexion orpheline en FIN\_WAIT\_2</td><td>défaut : 60 s</td></tr><tr><td>`net.ipv4.tcp_tw_reuse`</td><td>Autorise la réutilisation rapide des sockets en TIME‑WAIT pour de nouvelles connexions sortantes</td><td>0 = désactivé · 1 = global · 2 = loopback (défaut souvent 2)</td></tr><tr><td>`net.ipv4.tcp_keepalive_time`</td><td>Délai d'inactivité avant l'envoi du premier paquet keepalive</td><td>défaut : 7200 s (2 h)</td></tr><tr><td>`net.ipv4.tcp_keepalive_intvl` / `tcp_keepalive_probes`</td><td>Intervalle entre sondes keepalive / nombre de sondes avant coupure</td><td>défauts : 75 s / 9</td></tr><tr><td>`net.ipv4.tcp_rmem` / `net.ipv4.tcp_wmem`</td><td>Triplet min/défaut/max des buffers TCP de réception/émission (auto‑tuning)</td><td>ex. `4096 87380 6291456`</td></tr><tr><td>`net.ipv4.tcp_window_scaling`</td><td>Active la mise à l'échelle de fenêtre TCP (nécessaire au haut débit/latence)</td><td>1 = défaut</td></tr><tr><td>`net.ipv4.tcp_sack`</td><td>Active les accusés de réception sélectifs (SACK)</td><td>1 = défaut</td></tr><tr><td>`net.ipv4.tcp_timestamps`</td><td>Active les timestamps TCP (RTT précis, protection anti rejeu) — peut exposer l'uptime de la machine</td><td>1 = défaut · 0 = pour limiter le fingerprinting</td></tr><tr><td>`net.ipv4.tcp_mtu_probing`</td><td>Active la découverte de MTU par sondage (contourne les blocages ICMP « Fragmentation Needed »)</td><td>0 = défaut · 1/2 = activé</td></tr><tr><td>`net.ipv4.tcp_congestion_control`</td><td>Algorithme de contrôle de congestion TCP (ex. `cubic`, `bbr`)</td><td>défaut : `cubic`</td></tr><tr><td>`net.ipv4.tcp_rfc1337`</td><td>Protège contre les attaques TIME‑WAIT assassination</td><td>0 = défaut · 1 = recommandé</td></tr><tr><td>`net.ipv4.tcp_syn_retries` / `tcp_synack_retries`</td><td>Nombre de retransmissions SYN / SYN‑ACK avant abandon</td><td>défauts : 6 / 5</td></tr><tr><td>`net.ipv4.tcp_no_metrics_save`</td><td>Empêche la mise en cache des métriques de connexion entre connexions</td><td>0 = défaut</td></tr></tbody></table>

### 7.5 Divers IPv4

<table id="bkmrk-variable-description-11"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`net.ipv4.ip_local_port_range`</td><td>Plage de ports éphémères utilisée pour les connexions sortantes</td><td>ex. `32768 60999`</td></tr><tr><td>`net.ipv4.ip_no_pmtu_disc`</td><td>Désactive la découverte de MTU du chemin (Path MTU Discovery)</td><td>0 = défaut (PMTUD actif)</td></tr><tr><td>`net.ipv4.igmp_max_memberships`</td><td>Nombre max de groupes multicast qu'un socket peut rejoindre</td><td>défaut : 20</td></tr></tbody></table>

## 8. net.ipv6.\* — IPv6

La plupart des paramètres IPv4 ont un équivalent IPv6 sous `net.ipv6.conf.*` (par exemple `accept_redirects`, `accept_source_route`). Les principaux paramètres spécifiques à IPv6 :

<table id="bkmrk-variable-description-12"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`net.ipv6.conf.all.disable_ipv6`</td><td>Désactive complètement IPv6 sur toutes les interfaces</td><td>0 = activé (défaut) · 1 = désactivé</td></tr><tr><td>`net.ipv6.conf.*.accept_ra`</td><td>Accepte les annonces de routeur (Router Advertisement) — utile de désactiver sur un serveur non‑hôte de confiance</td><td>1 = défaut sur la plupart des hôtes</td></tr><tr><td>`net.ipv6.conf.*.accept_redirects`</td><td>Équivalent IPv6 des redirections ICMP</td><td>1 = défaut · 0 = recommandé sur serveur</td></tr><tr><td>`net.ipv6.conf.*.autoconf`</td><td>Active l'auto‑configuration d'adresse sans état (SLAAC)</td><td>1 = défaut</td></tr><tr><td>`net.ipv6.conf.*.use_tempaddr`</td><td>Utilise des adresses temporaires (RFC 4941) pour limiter le traçage d'un hôte</td><td>0 = désactivé · 2 = activé et préféré (recommandé côté client)</td></tr><tr><td>`net.ipv6.conf.all.forwarding`</td><td>Active le routage IPv6</td><td>0 = défaut</td></tr></tbody></table>

## 9. net.netfilter.\* et conntrack

<table id="bkmrk-variable-description-13"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`net.netfilter.nf_conntrack_max`</td><td>Nombre maximal d'entrées de suivi de connexion (conntrack) simultanées — critique pour pare‑feu/NAT très sollicités</td><td>calculé selon la RAM, souvent 262144 ou plus</td></tr><tr><td>`net.netfilter.nf_conntrack_tcp_timeout_established`</td><td>Délai avant expiration d'une entrée conntrack TCP à l'état établi</td><td>défaut : 432000 s (5 j), souvent réduit sur pare‑feu chargés</td></tr><tr><td>`net.netfilter.nf_conntrack_tcp_timeout_time_wait`</td><td>Délai d'expiration conntrack pour l'état TIME\_WAIT</td><td>défaut : 120 s</td></tr><tr><td>`net.netfilter.nf_conntrack_udp_timeout` / `_stream`</td><td>Délais d'expiration conntrack pour les flux UDP</td><td>défauts : 30 s / 180 s</td></tr><tr><td>`net.netfilter.nf_conntrack_log_invalid`</td><td>Journalise les paquets considérés invalides par conntrack</td><td>0 = défaut</td></tr></tbody></table>

## 10. net.unix.\* — sockets Unix

<table id="bkmrk-variable-description-14"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`net.unix.max_dgram_qlen`</td><td>Longueur maximale de la file d'attente des sockets Unix de type datagramme</td><td>défaut : 10 (souvent augmenté pour syslog/journald)</td></tr></tbody></table>

## 11. user.\* — quotas de namespaces

Limitent, par utilisateur dans le namespace utilisateur courant, le nombre de namespaces qu'il peut créer (pertinent pour la sécurité des conteneurs / usage non privilégié).

<table id="bkmrk-variable-description-15"><tbody><tr><th>Variable</th><th>Description</th></tr><tr><td>`user.max_user_namespaces`</td><td>Nombre max de namespaces utilisateur créables</td></tr><tr><td>`user.max_pid_namespaces`</td><td>Nombre max de namespaces PID créables</td></tr><tr><td>`user.max_net_namespaces`</td><td>Nombre max de namespaces réseau créables</td></tr><tr><td>`user.max_mnt_namespaces`</td><td>Nombre max de namespaces de montage créables</td></tr><tr><td>`user.max_ipc_namespaces`</td><td>Nombre max de namespaces IPC créables</td></tr><tr><td>`user.max_uts_namespaces`</td><td>Nombre max de namespaces UTS (hostname) créables</td></tr><tr><td>`user.max_cgroup_namespaces`</td><td>Nombre max de namespaces cgroup créables</td></tr><tr><td>`user.max_time_namespaces`</td><td>Nombre max de namespaces de temps créables</td></tr></tbody></table>

Mettre l'une de ces valeurs à `0` désactive la création de ce type de namespace pour les utilisateurs non privilégiés — utilisé par exemple pour réduire la surface d'attaque des conteneurs non privilégiés.

## 12. abi.\* et divers (dev.\*, debug.\*)

<table id="bkmrk-variable-description-16"><tbody><tr><th>Variable</th><th>Description</th><th>Valeurs / défaut</th></tr><tr><td>`abi.vsyscall32`</td><td>Autorise le mappage vDSO 32 bits pour les processus 32 bits sur une machine x86\_64 (surface d'attaque historique, ex. CVE liés au vsyscall)</td><td>1 = défaut · 0 = plus restrictif</td></tr></tbody></table>

`dev.*` (paramètres spécifiques aux périphériques : cdrom, scsi, raid, tty…) et `debug.*` (options de débogage noyau, ex. exception‑trace) existent aussi mais sont propres au matériel/à la configuration du noyau installé — inspecte‑les avec `sysctl dev` et `sysctl debug` sur la machine concernée plutôt que de te fier à une liste générique.

## 13. Sélection « durcissement sécurité » (résumé pratique)

Extrait des variables ci‑dessus les plus citées dans les guides de durcissement serveur (CIS Benchmark, ANSSI, etc.), à valider selon le rôle de la machine :

<table id="bkmrk-variable-valeur-reco"><tbody><tr><th>Variable</th><th>Valeur recommandée (serveur générique, non‑routeur)</th><th>Pourquoi</th></tr><tr><td>`net.ipv4.ip_forward`</td><td>0</td><td>Empêche la machine de router du trafic si ce n'est pas son rôle</td></tr><tr><td>`net.ipv4.conf.all.rp_filter`</td><td>1</td><td>Anti IP‑spoofing</td></tr><tr><td>`net.ipv4.conf.all.accept_source_route`</td><td>0</td><td>Bloque le routage source, souvent utilisé pour contourner un pare‑feu</td></tr><tr><td>`net.ipv4.conf.all.accept_redirects`</td><td>0</td><td>Empêche un tiers de modifier la table de routage locale via ICMP</td></tr><tr><td>`net.ipv4.conf.all.send_redirects`</td><td>0</td><td>La machine n'a pas à émettre de redirections si ce n'est pas un routeur</td></tr><tr><td>`net.ipv4.conf.all.log_martians`</td><td>1</td><td>Trace les paquets suspects pour détection d'intrusion</td></tr><tr><td>`net.ipv4.icmp_echo_ignore_broadcasts`</td><td>1</td><td>Anti attaque Smurf</td></tr><tr><td>`net.ipv4.tcp_syncookies`</td><td>1</td><td>Anti SYN flood</td></tr><tr><td>`kernel.dmesg_restrict`</td><td>1</td><td>Empêche un utilisateur non privilégié de lire les logs noyau</td></tr><tr><td>`kernel.kptr_restrict`</td><td>2</td><td>Empêche la fuite d'adresses noyau facilitant l'exploitation</td></tr><tr><td>`kernel.randomize_va_space`</td><td>2</td><td>ASLR complet</td></tr><tr><td>`kernel.yama.ptrace_scope`</td><td>1 ou 2</td><td>Limite le traçage de processus par d'autres processus du même utilisateur</td></tr><tr><td>`kernel.unprivileged_bpf_disabled`</td><td>1</td><td>Réduit la surface d'attaque eBPF</td></tr><tr><td>`fs.protected_hardlinks`</td><td>1</td><td>Anti élévation de privilèges par hardlink</td></tr><tr><td>`fs.protected_symlinks`</td><td>1</td><td>Anti attaque TOCTOU par symlink</td></tr><tr><td>`fs.suid_dumpable`</td><td>0</td><td>Empêche la fuite de mémoire d'un binaire setuid via un core dump</td></tr></tbody></table>

<div class="danger" id="bkmrk-ce-dernier-tableau-e">Ce dernier tableau est un point de départ, pas une checklist à appliquer aveuglément : certaines valeurs (par ex. `ip_forward=1`, `accept_ra`) sont légitimes et nécessaires sur des routeurs, hyperviseurs, nœuds Docker/Kubernetes ou passerelles VPN. Adapte toujours au rôle réel de la machine et teste en environnement non critique avant un déploiement en masse.</div>## 14. Sources

- [kernel.org — admin-guide/sysctl/kernel](https://www.kernel.org/doc/html/latest/admin-guide/sysctl/kernel.html)
- [kernel.org — admin-guide/sysctl/vm](https://www.kernel.org/doc/html/latest/admin-guide/sysctl/vm.html)
- [kernel.org — admin-guide/sysctl/fs](https://www.kernel.org/doc/html/latest/admin-guide/sysctl/fs.html)
- [kernel.org — admin-guide/sysctl/abi](https://www.kernel.org/doc/html/latest/admin-guide/sysctl/abi.html)
- [kernel.org — admin-guide/sysctl/user](https://docs.kernel.org/admin-guide/sysctl/user.html)
- [kernel.org — networking/ip-sysctl](https://www.kernel.org/doc/html/latest/networking/ip-sysctl.html)
- [kernel.org — security/Yama.txt (ptrace\_scope)](https://www.kernel.org/doc/Documentation/security/Yama.txt)