![]()
Une attaque par déni de services SYN flood est une technique visant à saturer un serveur en envoyant une multitude de paquets TCP, avec le flag SYN. Les connexions sont alors établies vers la machine, mais restent à moitié ouvertes, car le client malveillant (hacker) ne renvoie pas de confirmation (ACK).
Le serveur attend pendant un certain délai la réponse et la connexion semi-ouverte consomme alors un certain nombre de ressources. En multipliant ce type de connexions, le hacker peut arriver à créer un déni de service qui rendra la machine inopérante.
1. Détection d'une l'attaque DDOS SYN flood
Pour détecter la présence de l'attaque, il faut utiliser la commande netstat et repérer la présence des connexions de type SYN_RECV :
# netstat -an | grep SYN
tcp 0 0 10.xxx.xxx.xxx 237.177.154.8:25882 SYN_RECV -
tcp 0 0 10.xxx.xxx.xxx 236.15.133.204:2577 SYN_RECV -
tcp 0 0 10.xxx.xxx.xxx 127.160.6.129:51748 SYN_RECV -
tcp 0 0 10.xxx.xxx.xxx 230.220.13.25:47393 SYN_RECV -
2. Contrer une attaque DDOS SYN flood
La dernière commande renvoie plusieurs dizaines de résultats. L'attaque par SYN flood est donc confirmée. Pour la contrer une solution consiste à modifier quelques paramètres du noyau Linux à chaud. Voici les commandes à utiliser en root uniquement :
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
echo "1024" > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
Quelques explications :
- La première ligne fait en sorte que la machine ne garde pas en mémoire les demandes de connexion semi-ouverte tant qu'elle n'a pas reçu la confirmation ACK
- La deuxième commande positionne à 1024 le nombre maximum de SYN_WAIT
- Enfin, la variable rp_filter permet de vérifier qu'un paquet arrive bien par l'interface sur laquelle il devrait arriver
Il est possible de paramétrer ses valeurs de façon permanente en modifiant le fichier /etc/sysctl.conf :
# Protection SYN flood
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_max_syn_backlog = 1024
On pourra ensuite recharger la configuration avec la commande :
sysctl -p /etc/sysctl.conf
Note : un grand merci à Korben et Stagueve pour avoir subi cette attaque sur leurs serveurs dédiés pendant toute la journée. Cela nous a fait un peu d'animation sur Twitter et m'a donné de l'inspiration pour écrire ce soir.





Créé en 2005, Tux-planet est un site qui a pour principale ambition de regrouper des articles simples sur Internet, Linux et le monde des logiciels libres.
15 Commentaires pour "Contrer une attaque DDOS de type SYN flood sous Linux"
Flux des commentaires de cet article Ajouter un commentaireEn fait avec Korben on avait décidé de s'auto flooder toute la journée histoire de t'inspirer, mission réussie ^^
Merci pour ces explications, j'ai du pain sur la planche! ^^
@Stagueve : mort de rire !
Merci pour ces précieux conseils...
Je m'en vais de ce pas contrôler la config de mes différents serveurs...
Encore merci de ton aide en tt cas...
@Boloms : ouais en cette période il vaut mieux faire attention visiblement.
@Korben : de rien l'ami.
C'est sympa de voir la bonne ambiance et l'entraide régner entre blogeur !
Et puis très instructif ce pitit tuto !!
Bien le bonjour,
Un moyen simple et efficace pour se protéger des attaques du web est de mettre en place mod-security
En plus l'interface web (non-opensource), mais tolérant la supervision de 3 machines gratuitement tout de même est vraiment bien faite est permet de gérer les faux positifs et avoir des stats sur ses attaques
En tous cas merci pour le tuto
Petit coquille au niveau du fichier sysctl.conf c'est:
net.ipv4.tcp_max_syn_backlog = 1024
et pas:
net.ipv4.tcp_max_syn_backlog = 102
Sinon rien à dire c'est du bon boulot réactif
@Nicolargo : j'ai corrigé.
Super conseil je note ces commandes.
Par contre la machine reste évidemment toujours victime possible du SYN flood, ce serait intéressant de savoir à quel point ca réduit sa vulnérabilité. Vous avez pensé faire des tests ?
@Etienne : oui la machine reste sous le coup de l'attaque mais c'est limitée. Pour contrer complètement le DDOS, à part changer d'adresse IP, je ne vois pas trop comment faire.
Je pense pas qu'il y ait encore de moyen de bloquer complètement une attaque DOS, mais ce serait intéressant de chiffrer à quel point ca réduit l'ampleur de l'attaque. Une idée ? Votre machine résiste à combien de SYN par seconde ?
Bonjour à tous,
Je rencontre un problème lorsque j'essaye d'appliquer cette commande "sysctl -p /etc/sysctl.conf":
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
error: "kernel.sysrq" is an unknown key
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_max_syn_backlog = 1024
À votre avis l'error mentionnée risque d'affection quelque chose au serveur ?
Merci pour cet excellent article
@lo0w : d'après ton commentaire l'erreur est "error: "kernel.sysrq" is an unknown key". A première vue, sysrq désigne le système qui permet de débloquer Linux avec des touches spéciales. Tu trouveras des infos là dessus ici.
Sysrq est par défaut désactivé sur les systèmes Linux. Personnellement je pense que cette erreur n'est pas grâve, au pire elle n'a aucun lien avec les attaques DDOS cité ici.
Normalement la bonne syntaxe est :
Si cela ne marche pas, tu peux soit ignorer le message, soit mettre la ligne en commentaire ...
Merci pour ces précieux conseils !