Renforcement du noyau Linux via sysctl.conf. Protection contre les attaques par inondation SYN et réglage TCP. | INTROSERV
EUR
european

EUR

usa

USD

French Fr
Ex. VAT Ex. VAT 0%

Renforcement du noyau Linux via sysctl.conf. Protection contre les attaques par inondation SYN et réglage TCP.

Introduction

Dans ce tutoriel, vous allez renforcer le noyau Linux en utilisant sysctl.conf, protéger votre serveur contre les attaques par inondation SYN et optimiser le comportement de la pile TCP. L'ajustement au niveau du noyau améliore la résilience contre les attaques par déni de service (DoS) basées sur le réseau et améliore les performances TCP globales. Vous simulerez également une attaque par inondation SYN dans un environnement contrôlé et vérifierez que vos mécanismes de protection fonctionnent correctement.

Prérequis

Public cible : Administrateurs système intermédiaires
Temps estimé : 45–60 minutes

Exigences du système

  • Système d'exploitation : Ubuntu 24.04 LTS (testé) ; compatible avec Debian 12/13 et d'autres distributions Linux modernes
  • Version du noyau : 5.x ou ultérieure
  • Minimum 1 Go de RAM
  • Privilèges root ou sudo
  • Accès réseau entre les machines de test

Outils requis

Installez les utilitaires suivants :

sudo apt update

sudo apt install -y hping3 net-tools procps iproute2

Vérifiez l'installation : hping3 --version
Sortie attendue : informations de version confirmant une installation réussie.

Tip

Effectuez la simulation d'inondation SYN uniquement dans un environnement de laboratoire contrôlé. Ne testez jamais sur des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas l'autorisation de tester.

Étape 1 : Sauvegarder la configuration actuelle de sysctl

Avant de faire des modifications, créez une sauvegarde.

sudo cp /etc/sysctl.conf /etc/sysctl.conf.backup

Résultat : Un fichier de sauvegarde /etc/sysctl.conf.backup est créé.

Étape 2 : Configurer les paramètres du noyau pour la protection contre les inondations SYN

Ouvrez le fichier de configuration :

sudo nano /etc/sysctl.conf

Ajoutez ou modifiez les paramètres suivants.

Activer les cookies SYN

net.ipv4.tcp_syncookies = 1

Objectif : Active les cookies SYN lorsque la file d'attente de backlog SYN déborde.
Valeurs :

  • 0 – Désactivé
  • 1 – Activé lorsque le débordement de backlog SYN se produit (recommandé)
  • 2 – Toujours activé (rarement utilisé)

Pourquoi : Les cookies SYN empêchent l'épuisement de la mémoire en évitant l'allocation de ressources jusqu'à la fin de la poignée de main.

Tip

Dans les distributions modernes, cette option est activée par défaut. Vous pouvez la vérifier avec la commande suivante : sysctl -a | grep net.ipv4.tcp_syncookies

Augmenter la file d'attente de backlog SYN

net.ipv4.tcp_max_syn_backlog = 4096

Objectif : Nombre maximum de demandes de connexion en file d'attente en attente d'accusé de réception.
Pourquoi : Un backlog plus grand permet plus de connexions à moitié ouvertes avant que le noyau ne commence à les abandonner.

Réduire les tentatives de retransmission SYN-ACK

net.ipv4.tcp_synack_retries = 3

Objectif : Nombre de retransmissions pour les paquets SYN-ACK.
Pourquoi : Réduire cela diminue le temps passé à attendre des connexions à moitié ouvertes malveillantes.

Activer la réutilisation du temps d'attente TCP

net.ipv4.tcp_tw_reuse = 1

Objectif : Permet la réutilisation des sockets TIME-WAIT pour de nouvelles connexions sortantes.
Valeurs :

  • 0 – Désactivé
  • 1 – Activé

Pourquoi : Réduit l'épuisement des sockets sous forte charge.

Réduire le délai d'attente FIN

net.ipv4.tcp_fin_timeout = 15

Objectif : Temps pendant lequel un socket reste dans l'état FIN-WAIT-2.
Pourquoi : Réduit l'utilisation des ressources par les connexions obsolètes.

Activer le filtrage de chemin inverse

net.ipv4.conf.all.rp_filter = 1

Objectif : Valide les adresses IP source par rapport à la table de routage.
Valeurs :

  • 0 – Désactivé
  • 1 – Mode strict
  • 2 – Mode lâche

Pourquoi : Aide à atténuer les attaques de spoofing IP.

Augmenter le nombre maximum de fichiers ouverts

fs.file-max = 2097152

Objectif : Nombre maximum de descripteurs de fichiers à l'échelle du système.
Pourquoi : Empêche l'épuisement des descripteurs de fichiers lors d'une charge de connexion élevée.

Étape 3 : Appliquer les modifications de sysctl

Appliquez les modifications sans redémarrer :

sudo sysctl -p

Sortie attendue : chaque paramètre affiché avec sa nouvelle valeur.
Vérifiez un paramètre spécifique : sysctl net.ipv4.tcp_syncookies
Sortie attendue : net.ipv4.tcp_syncookies = 1

Résultat : Les paramètres du noyau sont actifs.

Étape 4 : Simuler une attaque par inondation SYN

Info

Important : Effectuez cela uniquement dans un environnement de laboratoire.

Depuis une machine de test distincte, exécutez :

sudo hping3 -S --flood -V <YOUR_SERVER_IP> -p 80

Explication :

  • -S envoie des paquets SYN
  • --flood envoie des paquets aussi vite que possible
  • -p 80 cible le port HTTP

Résultat : Un volume élevé de paquets SYN est envoyé au serveur.

Étape 5 : Surveiller le serveur pendant l'attaque

Sur le serveur cible, surveillez les connexions :

netstat -ant | grep SYN_RECV | wc -l

Résultat : Affiche le nombre de connexions à moitié ouvertes.

Vérifiez le compteur de cookies SYN :

nstat -az | grep Syncookies

Vous devriez observer des compteurs croissants tels que TcpExtSyncookiesSent. Cela confirme que les cookies SYN sont utilisés.

Étape 6 : Comparer le comportement avant et après le renforcement

Si vous testez sans renforcement :

  • Le nombre de SYN_RECV augmente rapidement
  • Le serveur peut devenir non réactif
  • La file d'attente de connexion déborde

Après renforcement :

  • Les cookies SYN s'activent
  • Moins de connexions abandonnées
  • Le serveur reste réactif

Installez un serveur web sur le serveur cible :

sudo apt install nginx

Pour tester la réactivité :

curl http://localhost

Résultat : Le serveur répond normalement même pendant l'attaque simulée.

Étape 7 : Optimisation des performances TCP (Optimisation avancée optionnelle)

Ajoutez des paramètres de réglage supplémentaires au fichier de configuration sysctl. Exécutez nano /etc/sysctl.conf et ajoutez :

net.core.somaxconn = 8192

net.core.netdev_max_backlog = 5000

net.ipv4.tcp_max_tw_buckets = 2000000

Explication :

  • net.core.somaxconn – longueur maximale de la file d'attente d'écoute pour les applications.
  • net.core.netdev_max_backlog – nombre maximum de paquets en file d'attente sur le côté entrée avant traitement.
  • net.ipv4.tcp_max_tw_buckets – nombre maximum de sockets TIME-WAIT. Cette option est pertinente pour les serveurs avec une charge élevée et suffisamment de RAM.

Ces paramètres améliorent les performances sous un trafic intense.

Appliquez les modifications :

sudo sysctl -p

Liste de vérification de la vérification

  • sysctl -p s'exécute sans erreurs
  • tcp_syncookies est égal à 1
  • Le compteur SyncookiesSent augmente pendant l'attaque
  • Le serveur reste réactif
  • Aucun avertissement du noyau dans les journaux : dmesg | grep -i syn

Rétablir les modifications

Restaurez la configuration d'origine :

sudo cp /etc/sysctl.conf.backup /etc/sysctl.conf

sudo sysctl -p

Résultat : Le système revient aux paramètres du noyau d'origine.

Optionnellement, supprimez les outils de test :

sudo apt remove hping3 -y

Dépannage

Les cookies SYN n'augmentent pas

Vérifiez : sysctl net.ipv4.tcp_syncookies
Si la valeur est 0, réappliquez la configuration.

Le serveur abandonne toujours les connexions

Augmentez le backlog : net.ipv4.tcp_max_syn_backlog = 8192
Puis appliquez les modifications :

sudo sysctl -p

Conclusion

Vous avez renforcé le noyau Linux en utilisant sysctl.conf, activé les mécanismes de protection contre les inondations SYN, optimisé le comportement de la pile TCP et vérifié les protections par une simulation d'attaque contrôlée. Ces modifications améliorent la résilience contre les attaques par inondation SYN et augmentent la stabilité globale du réseau.

Étapes suivantes

  • Combinez avec une limitation de débit de pare-feu (iptables ou nftables)
  • Implémentez des limites de suivi des connexions
  • Déployez des systèmes de détection d'intrusion (IDS)
  • Surveillez les métriques à l'aide de Prometheus et Grafana

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA