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 et networking/ip-sysctl).
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>.
1. Généralités : lire, modifier, persister
| Action |
Commande |
| Lister toutes les variables courantes |
sysctl -a |
| Lire une variable précise |
sysctl net.ipv4.ip_forward ou cat /proc/sys/net/ipv4/ip_forward |
| Modifier temporairement (perdu au redémarrage) |
sysctl -w net.ipv4.ip_forward=1 ou echo 1 > /proc/sys/net/ipv4/ip_forward |
| Rendre le changement permanent |
Ajouter la ligne net.ipv4.ip_forward = 1 dans /etc/sysctl.conf ou un fichier dédié sous /etc/sysctl.d/99-perso.conf |
| Recharger la configuration persistante |
sysctl -p (fichier unique) ou sysctl --system (tous les fichiers de /etc/sysctl.d/, /run/sysctl.d/, /usr/lib/sysctl.d/, dans l'ordre) |
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
3. kernel.* — noyau
3.1 Sécurité et confinement
| Variable |
Description |
Valeurs / défaut |
kernel.dmesg_restrict |
Restreint la lecture du buffer dmesg aux utilisateurs privilégiés (CAP_SYSLOG) |
0 = non restreint · 1 = restreint (recommandé) |
kernel.kptr_restrict |
Masque les adresses mémoire du noyau exposées via /proc |
0 = affichées · 1 = masquées pour non‑privilégiés · 2 = toujours masquées (recommandé) |
kernel.randomize_va_space |
Active l'ASLR (Address Space Layout Randomization) |
0 = désactivé · 1 = mmap/stack/VDSO · 2 = + tas (heap), défaut et recommandé |
kernel.yama.ptrace_scope |
Restreint qui peut tracer (ptrace) un autre processus |
0 = classique · 1 = enfants uniquement (recommandé) · 2 = admin seulement · 3 = personne (irréversible) |
kernel.unprivileged_bpf_disabled |
Interdit les appels bpf() aux utilisateurs non privilégiés |
0 = autorisé · 1 = désactivé de façon permanente · 2 = désactivé mais modifiable (recommandé : 1 ou 2) |
kernel.modules_disabled |
Bloque tout chargement/déchargement de module noyau (irréversible une fois activé) |
0 = autorisé · 1 = bloqué |
kernel.kexec_load_disabled |
Désactive les appels système kexec (charge d'un autre noyau en mémoire) |
0 = autorisé · 1 = désactivé (irréversible) |
kernel.perf_event_paranoid |
Restreint l'accès aux événements de performance (perf) pouvant fuiter des infos noyau |
-1 = tout autorisé · 2 = accès le plus restreint (recommandé sur serveur) |
kernel.sysrq |
Active/désactive et filtre les combinaisons Magic SysRq |
0 = désactivé · 1 = tout activé · bitmask = activation sélective |
kernel.core_pattern / kernel.core_uses_pid |
Modèle de nom de fichier core dump et ajout du PID |
défaut : core |
kernel.suid_dumpable |
(alias historique, voir fs.suid_dumpable) Autorise/interdit le core dump des binaires setuid |
0 = interdit (recommandé) · 1 = debug · 2 = suidsafe |
kernel.io_uring_disabled |
Restreint la création d'instances io_uring (surface d'attaque récente) |
0 = autorisé · 1 = bloqué pour non‑privilégiés · 2 = bloqué pour tous |
3.2 Comportement système, panique, watchdogs
| Variable |
Description |
Valeurs / défaut |
kernel.panic |
Délai (s) avant redémarrage auto après une panique noyau |
0 = boucle infinie (défaut) · N = redémarre après N s |
kernel.panic_on_oops |
Force une panique dès qu'un « oops » survient |
0 = continue (défaut) · 1 = panique |
kernel.panic_on_warn |
Force une panique sur tout WARN() |
0 = défaut · 1 = panique |
kernel.watchdog / kernel.nmi_watchdog / kernel.soft_watchdog |
Active les détecteurs de blocage matériel/logiciel (lockup) |
0 = désactivé · 1 = activé |
kernel.watchdog_thresh |
Seuil (s) de détection d'un lockup |
défaut : 10 |
kernel.hung_task_timeout_secs |
Délai avant qu'une tâche bloquée en état D soit signalée |
0 = désactivé |
kernel.ctrl-alt-del |
Comportement de Ctrl+Alt+Suppr |
0 = envoi SIGINT à init (propre) · >0 = redémarrage immédiat |
kernel.printk |
4 niveaux de verbosité des logs noyau (console, défaut message, min console, défaut console) |
ex. 4 4 1 7 |
kernel.printk_ratelimit / kernel.printk_ratelimit_burst |
Anti‑flood des messages noyau répétés |
défaut : 5 s / 10 messages |
3.3 Limites processus, PID, threads, IPC
| Variable |
Description |
Valeurs / défaut |
kernel.pid_max |
PID maximal attribuable avant réutilisation |
défaut souvent 32768 ou 4194304 selon distro/arch |
kernel.threads-max |
Nombre maximal de threads que le système peut créer |
calculé selon la RAM disponible |
kernel.ngroups_max |
Nombre maximal de groupes supplémentaires par utilisateur |
défaut : 65536 |
kernel.msgmax / kernel.msgmnb / kernel.msgmni |
Limites des files de messages IPC System V (taille max message, taille max file, nb de files) |
défauts : 8192 / 16384 / 32000 |
kernel.shmmax / kernel.shmall / kernel.shmmni |
Taille max d'un segment de mémoire partagée, total de pages partagées, nombre max de segments |
shmmni défaut : 4096 |
kernel.sem |
Limites des sémaphores System V (4 valeurs : SEMMSL, SEMMNS, SEMOPM, SEMMNI) |
ex. 250 32000 32 128 |
kernel.overflowuid / kernel.overflowgid |
UID/GID de repli pour les appels 16‑bit historiques |
défaut : 65534 |
3.4 Entropie / aléatoire
| Variable |
Description |
Valeurs / défaut |
kernel.random.entropy_avail |
Entropie actuellement disponible (lecture seule, indicatif) |
— |
kernel.random.poolsize |
Taille du pool d'entropie |
— |
kernel.random.urandom_min_reseed_secs |
Intervalle minimal de réamorçage de /dev/urandom |
— |
4. vm.* — gestion mémoire
| Variable |
Description |
Valeurs / défaut |
vm.swappiness |
Tendance du noyau à utiliser le swap plutôt que le cache page/inode |
0–200, défaut 60 · serveurs/BDD : souvent abaissé à 1–10 |
vm.overcommit_memory |
Politique de sur‑allocation mémoire |
0 = heuristique (défaut) · 1 = toujours autoriser · 2 = strict selon overcommit_ratio |
vm.overcommit_ratio |
% de RAM autorisé au‑delà du swap quand overcommit_memory=2 |
défaut : 50 |
vm.dirty_ratio |
% de mémoire « sale » déclenchant une écriture disque bloquante par le process |
défaut : 20 |
vm.dirty_background_ratio |
% de mémoire sale déclenchant une écriture asynchrone en arrière‑plan |
défaut : 10 |
vm.dirty_expire_centisecs |
Âge (centisecondes) au‑delà duquel une donnée sale doit être écrite |
défaut : 3000 (30 s) |
vm.dirty_writeback_centisecs |
Intervalle de réveil du thread d'écriture différée |
défaut : 500 (5 s) |
vm.vfs_cache_pressure |
Tendance à récupérer la mémoire des caches dentry/inode |
défaut : 100 (baisser conserve plus de cache FS) |
vm.min_free_kbytes |
Quantité de RAM libre que le noyau tente toujours de garder disponible |
calculé automatiquement, ajustable |
vm.max_map_count |
Nombre maximal de zones mémoire (VMA) par processus — critique pour Elasticsearch/JVM |
défaut : 65530 |
vm.mmap_min_addr |
Adresse minimale qu'un utilisateur non privilégié peut mapper (mitigation exploits NULL‑deref) |
défaut souvent 65536 |
vm.mmap_rnd_bits / vm.mmap_rnd_compat_bits |
Nombre de bits de hasard pour l'ASLR des adresses mmap |
plus élevé = ASLR plus fort |
vm.panic_on_oom |
Déclenche une panique noyau au lieu de tuer un processus lors d'un OOM |
0 = défaut · 1/2 = panique |
vm.oom_kill_allocating_task |
Tue directement le processus demandeur plutôt que de choisir la meilleure victime |
0 = défaut |
vm.zone_reclaim_mode |
Stratégie de récupération mémoire NUMA locale avant d'aller sur un autre nœud |
défaut : 0 |
vm.nr_hugepages |
Taille du pool de hugepages réservées |
défaut : 0 |
vm.drop_caches |
Vide manuellement les caches (écriture seule, diagnostic) |
1 = pagecache · 2 = dentries/inodes · 3 = les deux |
vm.user_reserve_kbytes / vm.admin_reserve_kbytes |
Mémoire réservée pour éviter qu'un process ne bloque tout le système / pour l'admin |
calculés selon la RAM |
vm.watermark_scale_factor |
Agressivité de kswapd pour libérer de la mémoire en avance |
défaut : 10 (max 3000) |
vm.unprivileged_userfaultfd |
Autorise userfaultfd() aux utilisateurs non privilégiés (surface d'attaque) |
0 = interdit (recommandé) · 1 = autorisé |
5. fs.* — fichiers et filesystem
| Variable |
Description |
Valeurs / défaut |
fs.file-max |
Nombre maximal de descripteurs de fichiers ouverts pour tout le système |
calculé selon la RAM, souvent augmenté sur serveurs (ex. 2097152) |
fs.file-nr |
Lecture seule : handles alloués / libres / max actuels |
— |
fs.nr_open |
Nombre maximal de descripteurs qu'un seul processus peut ouvrir |
défaut : 1048576 |
fs.aio-max-nr |
Nombre maximal de requêtes d'I/O asynchrone système (utile pour bases de données) |
défaut : 65536 |
fs.inotify.max_user_watches |
Nombre maximal de fichiers surveillés par inotify et par utilisateur (IDE, Docker, etc.) |
souvent augmenté (ex. 524288) |
fs.inotify.max_user_instances |
Nombre maximal d'instances inotify par utilisateur |
défaut : 128 |
fs.epoll.max_user_watches |
Limite de « watches » epoll par utilisateur |
calculé selon la mémoire |
fs.suid_dumpable |
Autorise le core dump des binaires setuid/setgid (sensible côté sécurité) |
0 = interdit (recommandé) · 1 = debug · 2 = suidsafe |
fs.protected_symlinks |
Empêche de suivre un symlink dans un dossier world‑writable si le propriétaire diffère (anti TOCTOU) |
0 = désactivé · 1 = activé (recommandé, souvent défaut) |
fs.protected_hardlinks |
Empêche de créer un hardlink vers un fichier qu'on ne possède pas déjà (anti élévation de privilèges) |
0 = désactivé · 1 = activé (recommandé) |
fs.protected_fifos |
Restreint l'écriture dans des FIFOs situées dans des dossiers world‑writable |
0 = désactivé · 1/2 = restreint (recommandé ≥1) |
fs.protected_regular |
Même principe pour les fichiers réguliers dans des dossiers « sticky » world‑writable |
0 = désactivé · 1/2 = restreint (recommandé ≥1) |
fs.mount-max |
Nombre maximal de montages dans un namespace de montage |
défaut : 100000 |
fs.pipe-user-pages-soft / fs.pipe-user-pages-hard |
Limites de pages allouées aux pipes par utilisateur non privilégié |
0 = illimité (hard) |
fs.mqueue.msg_max / msgsize_max / queues_max |
Limites des files de messages POSIX (mqueue) |
variables selon distro |
fs.leases-enable |
Active les baux de fichiers (file leases) |
défaut : 1 |
fs.dentry-state / fs.inode-nr |
Statistiques lecture seule sur les caches dentry/inode |
— |
6. net.core.* — pile réseau générique
| Variable |
Description |
Valeurs / défaut typiques |
net.core.somaxconn |
Taille max de la file d'attente des connexions en attente d'accept() pour un socket en écoute |
défaut historique 128, souvent relevé à 1024–4096 sur serveurs |
net.core.netdev_max_backlog |
Nombre max de paquets en file d'attente avant traitement par le noyau quand une interface reçoit plus vite qu'il ne traite |
défaut : 1000, souvent monté à 5000+ en haut débit |
net.core.rmem_default / net.core.rmem_max |
Taille par défaut / maximale du buffer de réception socket |
ex. 212992 / augmenté selon besoins réseau |
net.core.wmem_default / net.core.wmem_max |
Taille par défaut / maximale du buffer d'émission socket |
idem |
net.core.optmem_max |
Mémoire tampon max pour les options de socket ancillaires |
défaut : 20480 |
net.core.netdev_budget |
Nombre de paquets qu'un cœur peut traiter par cycle NAPI avant de rendre la main |
défaut : 300 |
net.core.default_qdisc |
Discipline de mise en file d'attente par défaut des interfaces (ex. fq_codel, fq) |
varie selon distro |
net.core.busy_poll / net.core.busy_read |
Durée (µs) de scrutation active avant de repasser en mode interruption — réduit la latence au prix du CPU |
défaut : 0 (désactivé) |
net.core.message_cost / net.core.message_burst |
Anti‑flood des messages d'avertissement réseau du noyau |
— |
7. net.ipv4.* — IPv4, TCP, ICMP, ARP
7.1 Routage et transfert
| Variable |
Description |
Valeurs / défaut |
net.ipv4.ip_forward |
Active le routage de paquets entre interfaces (obligatoire pour un routeur/passerelle/NAT) |
0 = désactivé (défaut station) · 1 = activé |
net.ipv4.conf.all.forwarding |
Équivalent par interface du transfert IPv4 |
0/1 |
net.ipv4.conf.*.rp_filter |
Filtrage par chemin inverse (RFC 3704), anti IP‑spoofing |
0 = désactivé · 1 = strict (recommandé) · 2 = souple |
net.ipv4.conf.*.accept_source_route |
Accepte les paquets avec option de routage source (souvent utilisée en attaque) |
0 = refusé (recommandé) |
net.ipv4.conf.*.accept_redirects |
Accepte les redirections ICMP (peuvent détourner le routage) |
0 = refusé (recommandé sur serveur) · 1 = accepté (défaut hôte) |
net.ipv4.conf.*.secure_redirects |
N'accepte les redirections ICMP que depuis des passerelles connues |
1 = défaut |
net.ipv4.conf.*.send_redirects |
Autorise l'envoi de redirections ICMP (pertinent seulement pour un routeur) |
0 = désactivé (recommandé si pas routeur) |
net.ipv4.conf.*.log_martians |
Journalise les paquets à adresse source/destination impossible (détection de spoofing) |
1 = recommandé |
net.ipv4.conf.*.accept_local |
Accepte les paquets dont l'adresse source semble locale, arrivant sur une interface externe |
0 = défaut |
7.2 ICMP
| Variable |
Description |
Valeurs / défaut |
net.ipv4.icmp_echo_ignore_broadcasts |
Ignore les requêtes ICMP echo/timestamp envoyées en broadcast/multicast (anti Smurf) |
1 = recommandé (souvent défaut) |
net.ipv4.icmp_echo_ignore_all |
Ignore tous les pings entrants |
0 = défaut · 1 = ignore tout |
net.ipv4.icmp_ignore_bogus_error_responses |
Supprime les logs d'erreurs ICMP non conformes émises par des routeurs bogués |
1 = recommandé |
net.ipv4.icmp_ratelimit / icmp_ratemask |
Limite le débit d'envoi de certains types de messages ICMP (anti déni de service) |
défaut : 1000 ms |
7.3 ARP
| Variable |
Description |
Valeurs / défaut |
net.ipv4.conf.*.arp_ignore |
Contrôle les conditions de réponse à une requête ARP (utile en multi‑interfaces) |
0 = défaut (répond toujours) · 1‑8 = filtrage croissant |
net.ipv4.conf.*.arp_announce |
Contrôle quelle adresse source annoncer dans les requêtes ARP émises |
0 = défaut · 2 = le plus restrictif |
net.ipv4.conf.*.proxy_arp |
Active le proxy ARP sur l'interface (répond à la place d'un autre hôte) |
0 = désactivé (défaut) |
7.4 TCP
| Variable |
Description |
Valeurs / défaut |
net.ipv4.tcp_syncookies |
Envoie des « syncookies » quand la file SYN déborde — protection anti SYN flood |
1 = activé (recommandé, souvent défaut) |
net.ipv4.tcp_max_syn_backlog |
Nombre max de connexions en attente à l'état SYN_RECV |
défaut variable, souvent 1024‑4096 |
net.ipv4.tcp_fin_timeout |
Durée avant fermeture d'une connexion orpheline en FIN_WAIT_2 |
défaut : 60 s |
net.ipv4.tcp_tw_reuse |
Autorise la réutilisation rapide des sockets en TIME‑WAIT pour de nouvelles connexions sortantes |
0 = désactivé · 1 = global · 2 = loopback (défaut souvent 2) |
net.ipv4.tcp_keepalive_time |
Délai d'inactivité avant l'envoi du premier paquet keepalive |
défaut : 7200 s (2 h) |
net.ipv4.tcp_keepalive_intvl / tcp_keepalive_probes |
Intervalle entre sondes keepalive / nombre de sondes avant coupure |
défauts : 75 s / 9 |
net.ipv4.tcp_rmem / net.ipv4.tcp_wmem |
Triplet min/défaut/max des buffers TCP de réception/émission (auto‑tuning) |
ex. 4096 87380 6291456 |
net.ipv4.tcp_window_scaling |
Active la mise à l'échelle de fenêtre TCP (nécessaire au haut débit/latence) |
1 = défaut |
net.ipv4.tcp_sack |
Active les accusés de réception sélectifs (SACK) |
1 = défaut |
net.ipv4.tcp_timestamps |
Active les timestamps TCP (RTT précis, protection anti rejeu) — peut exposer l'uptime de la machine |
1 = défaut · 0 = pour limiter le fingerprinting |
net.ipv4.tcp_mtu_probing |
Active la découverte de MTU par sondage (contourne les blocages ICMP « Fragmentation Needed ») |
0 = défaut · 1/2 = activé |
net.ipv4.tcp_congestion_control |
Algorithme de contrôle de congestion TCP (ex. cubic, bbr) |
défaut : cubic |
net.ipv4.tcp_rfc1337 |
Protège contre les attaques TIME‑WAIT assassination |
0 = défaut · 1 = recommandé |
net.ipv4.tcp_syn_retries / tcp_synack_retries |
Nombre de retransmissions SYN / SYN‑ACK avant abandon |
défauts : 6 / 5 |
net.ipv4.tcp_no_metrics_save |
Empêche la mise en cache des métriques de connexion entre connexions |
0 = défaut |
7.5 Divers IPv4
| Variable |
Description |
Valeurs / défaut |
net.ipv4.ip_local_port_range |
Plage de ports éphémères utilisée pour les connexions sortantes |
ex. 32768 60999 |
net.ipv4.ip_no_pmtu_disc |
Désactive la découverte de MTU du chemin (Path MTU Discovery) |
0 = défaut (PMTUD actif) |
net.ipv4.igmp_max_memberships |
Nombre max de groupes multicast qu'un socket peut rejoindre |
défaut : 20 |
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 :
| Variable |
Description |
Valeurs / défaut |
net.ipv6.conf.all.disable_ipv6 |
Désactive complètement IPv6 sur toutes les interfaces |
0 = activé (défaut) · 1 = désactivé |
net.ipv6.conf.*.accept_ra |
Accepte les annonces de routeur (Router Advertisement) — utile de désactiver sur un serveur non‑hôte de confiance |
1 = défaut sur la plupart des hôtes |
net.ipv6.conf.*.accept_redirects |
Équivalent IPv6 des redirections ICMP |
1 = défaut · 0 = recommandé sur serveur |
net.ipv6.conf.*.autoconf |
Active l'auto‑configuration d'adresse sans état (SLAAC) |
1 = défaut |
net.ipv6.conf.*.use_tempaddr |
Utilise des adresses temporaires (RFC 4941) pour limiter le traçage d'un hôte |
0 = désactivé · 2 = activé et préféré (recommandé côté client) |
net.ipv6.conf.all.forwarding |
Active le routage IPv6 |
0 = défaut |
9. net.netfilter.* et conntrack
| Variable |
Description |
Valeurs / défaut |
net.netfilter.nf_conntrack_max |
Nombre maximal d'entrées de suivi de connexion (conntrack) simultanées — critique pour pare‑feu/NAT très sollicités |
calculé selon la RAM, souvent 262144 ou plus |
net.netfilter.nf_conntrack_tcp_timeout_established |
Délai avant expiration d'une entrée conntrack TCP à l'état établi |
défaut : 432000 s (5 j), souvent réduit sur pare‑feu chargés |
net.netfilter.nf_conntrack_tcp_timeout_time_wait |
Délai d'expiration conntrack pour l'état TIME_WAIT |
défaut : 120 s |
net.netfilter.nf_conntrack_udp_timeout / _stream |
Délais d'expiration conntrack pour les flux UDP |
défauts : 30 s / 180 s |
net.netfilter.nf_conntrack_log_invalid |
Journalise les paquets considérés invalides par conntrack |
0 = défaut |
10. net.unix.* — sockets Unix
| Variable |
Description |
Valeurs / défaut |
net.unix.max_dgram_qlen |
Longueur maximale de la file d'attente des sockets Unix de type datagramme |
défaut : 10 (souvent augmenté pour syslog/journald) |
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é).
| Variable |
Description |
user.max_user_namespaces |
Nombre max de namespaces utilisateur créables |
user.max_pid_namespaces |
Nombre max de namespaces PID créables |
user.max_net_namespaces |
Nombre max de namespaces réseau créables |
user.max_mnt_namespaces |
Nombre max de namespaces de montage créables |
user.max_ipc_namespaces |
Nombre max de namespaces IPC créables |
user.max_uts_namespaces |
Nombre max de namespaces UTS (hostname) créables |
user.max_cgroup_namespaces |
Nombre max de namespaces cgroup créables |
user.max_time_namespaces |
Nombre max de namespaces de temps créables |
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.*)
| Variable |
Description |
Valeurs / défaut |
abi.vsyscall32 |
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) |
1 = défaut · 0 = plus restrictif |
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)
| Variable |
Valeur recommandée (serveur générique, non‑routeur) |
Pourquoi |
net.ipv4.ip_forward |
0 |
Empêche la machine de router du trafic si ce n'est pas son rôle |
net.ipv4.conf.all.rp_filter |
1 |
Anti IP‑spoofing |
net.ipv4.conf.all.accept_source_route |
0 |
Bloque le routage source, souvent utilisé pour contourner un pare‑feu |
net.ipv4.conf.all.accept_redirects |
0 |
Empêche un tiers de modifier la table de routage locale via ICMP |
net.ipv4.conf.all.send_redirects |
0 |
La machine n'a pas à émettre de redirections si ce n'est pas un routeur |
net.ipv4.conf.all.log_martians |
1 |
Trace les paquets suspects pour détection d'intrusion |
net.ipv4.icmp_echo_ignore_broadcasts |
1 |
Anti attaque Smurf |
net.ipv4.tcp_syncookies |
1 |
Anti SYN flood |
kernel.dmesg_restrict |
1 |
Empêche un utilisateur non privilégié de lire les logs noyau |
kernel.kptr_restrict |
2 |
Empêche la fuite d'adresses noyau facilitant l'exploitation |
kernel.randomize_va_space |
2 |
ASLR complet |
kernel.yama.ptrace_scope |
1 ou 2 |
Limite le traçage de processus par d'autres processus du même utilisateur |
kernel.unprivileged_bpf_disabled |
1 |
Réduit la surface d'attaque eBPF |
fs.protected_hardlinks |
1 |
Anti élévation de privilèges par hardlink |
fs.protected_symlinks |
1 |
Anti attaque TOCTOU par symlink |
fs.suid_dumpable |
0 |
Empêche la fuite de mémoire d'un binaire setuid via un core dump |
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.
14. Sources