Retourner sur le site

Durcissement kernel (sysctl)

Appliquez des paramètres sysctl de durcissement réseau et noyau sur VPS HolyCloud : anti-spoofing, SYN flood, redirects ICMP et persistance.

Durcissement kernel (sysctl)

Les paramètres sysctl modifient le comportement du noyau Linux sans recompiler : filtrage réseau, redirections ICMP, protection SYN, contrôle des core dumps. Sur un VPS Linux HolyCloud exposé Internet, un profil sysctl raisonnable réduit la surface d'attaque — en complément d'UFW, Fail2ban et SSH durci.

Prérequis

  • VPS HolyCloud Ubuntu/Debian, accès root ou sudo
  • Compréhension des impacts : certains réglages cassent le routage, le forwarding ou le diagnostic (traceroute)
  • Console HolyCloud ou second canal SSH avant application — erreur = perte d'accès rare mais possible sur stacks exotiques
  • Sauvegarde de /etc/sysctl.conf et tests après reboot

Attention : si ce VPS fait office de routeur, VPN (WireGuard) ou bridge Docker, adaptez ip_forward et les règles liées — ne copiez pas aveuglément un profil « serveur web ».

Étape 1 : état actuel

sysctl -a 2>/dev/null | wc -l
sysctl net.ipv4.ip_forward
sysctl net.ipv4.conf.all.rp_filter
ls /etc/sysctl.d/

Sauvegarde :

sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak.$(date +%F)

Étape 2 : fichier de durcissement réseau IPv4

sudo nano /etc/sysctl.d/99-holycloud-hardening.conf
# Reverse path filtering (anti-spoofing) — OK si une seule interface route par défaut
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignorer les redirections ICMP (évite les attaques de redirection)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0

# Ne pas envoyer de redirections
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Ignorer les paquets ICMP broadcast
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Journaliser les paquets martiens
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# SYN cookies (mitigation SYN flood)
net.ipv4.tcp_syncookies = 1

# Désactiver source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0

Étape 3 : limites noyau et mémoire

sudo nano /etc/sysctl.d/98-holycloud-limits.conf
# Pas de core dumps pour les processus setuid (fuite d'infos)
fs.suid_dumpable = 0

# Adresses aléatoires (ASLR) — généralement déjà à 2
kernel.randomize_va_space = 2

# Restreindre dmesg aux privilèges
kernel.dmesg_restrict = 1

# Empêcher l'écriture de nouveaux modules noyau par utilisateurs non privilégiés (si modules utilisés)
kernel.modules_disabled = 0

# Augmenter les descripteurs si serveur à fort trafic
fs.file-max = 2097152

Pour un serveur web très chargé, ajustez aussi (dans le même fichier ou séparé) :

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.ip_local_port_range = 1024 65535

Étape 4 : IPv6 (optionnel)

Si vous n'utilisez pas IPv6 :

sudo nano /etc/sysctl.d/97-disable-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Sinon, appliquez les mêmes règles accept_redirects que pour IPv4 (déjà dans le fichier §2).

Étape 5 : appliquer et persister

sudo sysctl --system
sysctl net.ipv4.tcp_syncookies
sysctl net.ipv4.conf.all.rp_filter

Vérifier les conflits (dernier fichier gagne selon l'ordre lexicographique) :

grep -r . /etc/sysctl.d/ /etc/sysctl.conf 2>/dev/null | grep -v '^#'

Étape 6 : cas particuliers HolyCloud

WireGuard / NAT : conservez :

net.ipv4.ip_forward = 1

Docker : Docker réécrit souvent iptables et ip_forward ; testez les conteneurs après durcissement.

Serveur web seul : ip_forward = 0 (défaut) est correct.

Étape 7 : audit après reboot

sudo reboot

Après reconnexion :

sysctl net.ipv4.tcp_syncookies net.ipv4.conf.all.rp_filter
sudo dmesg | grep -i martian | tail -10
curl -I https://exemple.fr
ssh -v localhost 2>&1 | tail -5

Vérification

sudo sysctl --system 2>&1 | tail -5
for key in net.ipv4.tcp_syncookies net.ipv4.conf.all.accept_redirects kernel.randomize_va_space; do
  echo "$key=$(sysctl -n $key)"
done

Valeurs attendues : tcp_syncookies=1, accept_redirects=0, randomize_va_space=2.

Besoin d'aide HolyCloud

  • Perte de connectivité VPN après sysctl : réactivez ip_forward, vérifiez rp_filter sur l'interface tunnel
  • Applications qui écoutent peu de connexions : réduisez somaxconn ou augmentez selon ss -s
  • Logs martiens nombreux : attaque ou mauvaise route — ip route, config réseau HolyCloud
  • Support HolyCloud : fichiers /etc/sysctl.d/*.conf, sortie sysctl -a | grep -E 'forward|rp_filter|syncookies', rôle du VPS (web/VPN/Docker)