Qu’est-ce que SYN ?

Dans le protocole TCP, SYN désigne le paquet envoyé par un client à un serveur pour établir une connexion. L’établissement d’une connexion TCP suit les étapes suivantes :

  1. Le client envoie d’abord un paquet SYN au serveur.
  2. Le serveur répond avec un paquet SYN/ACK, accusant réception de la requête. À ce stade, il réserve des ressources dans une table de connexions afin d’y stocker les informations de connexion, établissant ainsi un état de connexion semi-ouverte.
  3. À la réception du paquet SYN/ACK, le client répond par un paquet ACK.
  4. Lorsque le serveur reçoit le paquet ACK, la connexion est entièrement établie.

Ce processus de connexion, qui implique l’échange de trois paquets, est appelé « poignée de main en trois temps » (3-way handshake). Il permet au serveur de vérifier que ses paquets de réponse sont bien parvenus au client. Toutefois, des problèmes surviennent si le client usurpe l’adresse IP source, car le serveur ne reçoit alors aucune réponse à son paquet SYN/ACK. Dans ce cas, le serveur maintient la connexion à l’état semi-ouvert jusqu’à son expiration, ce qui consomme inutilement des ressources. Des acteurs malveillants exploitent cette vulnérabilité dans le cadre d’une attaque par inondation SYN, un type d’attaque DoS/DDoS.

La plateforme BIG-IP de F5 agit comme un proxy complet et empêche les attaques par inondation SYN en inspectant les paquets SYN avant de les transmettre au serveur. De plus, BIG-IP intègre une fonctionnalité appelée « SYN Cookies » pour se protéger contre de gros volumes de paquets SYN. Cette méthode consiste à intégrer un nombre généré par MD5 (appelé « cookie ») dans le numéro de séquence TCP du paquet SYN/ACK. Lorsque le paquet ACK suivant est reçu, le cookie est recalculé à partir de son contenu. Il n’est ainsi plus nécessaire de stocker les informations de connexion au moment de l’envoi du paquet SYN/ACK, ce qui évite l’épuisement de la mémoire, même lors d’une attaque par inondation SYN.