Syn cookie

Syn cookie

SYN cookie

Les SYN cookies (syncookies) sont des valeurs particulières des numéros de séquences initiales générés par un serveur (ISN: Initial Sequence Number) lors d'une demande de connexion TCP. La technique mise en œuvre permet notamment de se défendre contre les attaques par inondation de requêtes SYN et accessoirement par IP spoofing.

Sommaire

Principe

Une demande de session TCP se fait en trois étapes:

  • le client envoie au serveur un paquet SYN avec un numéro de séquence initial N_{client}\, et un numéro d'acquittement nul
  • le serveur place alors cette requête dans sa file d'attente de connexion et renvoie au client un paquet SYN|ACK de numéro de séquence N_{serveur}\, et un numéro d'acquittement égal à N_{client}+1\,
  • le client répond par un paquet ACK de numéro de séquence N_{client}+1\, et un numéro d'acquittement N_{serveur}+1\,

La connexion est alors établie et le client et le serveur peuvent commencer à échanger des données.

               client                                serveur
                 | flags: SYN=1,ACK=0    SN:56          |
                 |----------------->>-------------------|
                 | flags: SYN=1,ACK=1    SN:90 ACK:57   | création d'un contexte          
                 |-------------------<<-----------------|
                 | flags: SYN=0,ACK=1    SN:57 ACK:91   |
                 |-------------------->>----------------|
                 |                                      | connexion établie
                 |                                      |

Même si la procédure de connexion n'est pas encore terminée, le serveur a quand même alloué une ressource pour enregistrer la demande de session du client. Cette propriété est justement exploitée dans les attaques par SYN flooding. En utilisant un SYN cookie, le serveur va se servir du réseau comme zone mémoire. Au lieu de créer directement un contexte localement, il va envoyer au client les informations dont il a besoin pour établir la connexion. Le client les lui retournera, puis il vérifiera si le numéro d'acquittement du paquet envoyé par le client passe un test de sécurité spécifique pour créer enfin un contexte et établir la connexion. La procédure de demande de session se passe alors comme suit.

               client                    serveur
                 |       SYN:56 ACK:0       |
                 |------------->>-----------|
                 |   SYN:syncookie ACK:57   |          
                 |------------<<------------|
                 |   SYN:57 ACK:syncookie+1 |
                 |------------>>------------|
                 |                          |création d'un contexte
                 |                          |connexion établie   

Valeur de syncookie

Étant donné que le champ d'acquittement ne contient que 32 bits[1], les informations envoyées au client sont restreintes, les informations conseillées sont les suivantes[2] :

  • les cinq premiers bits contiennent la valeur modulo 32 d'un compteur incrémenté toutes les 64 secondes. Ce champ permet de garantir que la valeur contenue dans le champ SYN sera croissante
  • les trois bits suivant contiennent la valeur codée du MSS[3] négocié (aucun contexte n'a été créé chez le serveur donc le réseau est utilisé pour stocker cette valeur)
  • les 24 derniers bits contiennent la valeur d'une fonction gardée secrète par le serveur et qui prend en compte les adresses des deux sites, les numéros de ports utilisés et la valeur du compteur de temps précédent. Ce champ est donc une sorte de signature cryptographique qui permet d'authentifier chaque demande de connexion.

Inconvénients

L'utilisation des syncookies présente quelques désavantages. En effet, comme les options de TCP ne sont pas sauvegardées lors de la demande de connexion, certaines ne seront pas prises en compte. Par exemple, dans l'exemple ci-dessus, la taille de la fenêtre d'émission et le temps de temporisation ne sont pas traités. Ce qui peut entraîner un faible rendement du réseau.

D'un autre côté, les administrateurs soucieux de la sécurité de leur réseau doivent tenir compte de quelques risques qui peuvent subvenir. Étant donné que l'authentification de la connexion est basée uniquement sur la valeur du champ d'acquittement du paquet ACK envoyé par le client, si un attaquant arrive à deviner le protocole d'authentification utilisé par le serveur, il peut se faire passer pour n'importe qui. De plus il peut également inonder de paquets ACK le serveur pour tenter de créer une connexion. Et enfin, un serveur utilisant des syncookies ne pourra pas effectuer un filtrage de paquets ACK, ce qui peut permettre éventuellement à un attaquant de passer à travers un pare-feu qui filtre les paquets SYN de demande de connexion.

Paramétrage sous Linux

Sous linux, le paramétrage de ce mécanisme de protection est fait par le paramètre tcp_syncookies du fichier sysctl[4].conf.

Notes

  1. Voir le format d'un paquet TCP.
  2. (en) référence
  3. Maximum Segment Size : taille maximale des données que peut contenir un paquet TCP
  4. (en) Sysctl

Articles connexes

Lien externe

  • Portail de la sécurité informatique Portail de la sécurité informatique
Ce document provient de « SYN cookie ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Syn cookie de Wikipédia en français (auteurs)

Игры ⚽ Нужно сделать НИР?

Regardez d'autres dictionnaires:

  • SYN-Cookie — Unter SYN Cookies versteht man einen im Jahr 1996 von Daniel J. Bernstein entwickelten Mechanismus zum Schutz vor Denial of Service Angriffen, genauer: SYN Flood Angriffen. Beim Herstellen einer herkömmlichen TCP Verbindung, dem sogenannten Drei… …   Deutsch Wikipedia

  • SYN cookie — Les SYN cookies (syncookies) sont des valeurs particulières des numéros de séquences initiales générés par un serveur (ISN: Initial Sequence Number) lors d une demande de connexion TCP. La technique mise en œuvre permet notamment de se défendre… …   Wikipédia en Français

  • SYN cookies — are the key element of a technique used to guard against SYN flood attacks. Daniel J. Bernstein, the technique s primary inventor, defines SYN Cookies as particular choices of initial TCP sequence numbers by TCP servers. In particular, the use of …   Wikipedia

  • SYN-флуд — SYN флуд  одна из разновидностей сетевых атак типа отказ от обслуживания, которая заключается в отправке большого количества SYN запросов (запросов на подключение по протоколу TCP) в достаточно короткий срок (RFC 4987). Согласно процессу… …   Википедия

  • cookie — I (New American Roget s College Thesaurus) n. wafer, biscuit; shortbread, sugar cookie, gingersnap, etc. See food. II (Roget s IV) n. Syn. small cake, wafer, biscuit (British), biscotto (Italian). Common varieties of cookies include: cream,… …   English dictionary for students

  • cookie jar — noun a jar in which cookies are kept (and sometimes money is hidden) • Syn: ↑cooky jar • Hypernyms: ↑jar * * * ˈcookie jar 7 [cookie jar] noun ( …   Useful english dictionary

  • cookie sheet — noun a cooking utensil consisting of a flat rectangular metal sheet used for baking cookies or biscuits • Syn: ↑baking tray • Usage Domain: ↑Britain (for: ↑baking tray) • Hypernyms: ↑cooking utensil, ↑ …   Useful english dictionary

  • syn·tax — /ˈsınˌtæks/ noun [noncount] linguistics : the way in which words are put together to form phrases, clauses, or sentences “I saw that she a cookie ate” is an example of incorrect syntax …   Useful english dictionary

  • magic cookie — noun A token or short packet of data passed between communicating programs, used to identify a particular event or transaction; the data is typically not meaningful to the recipient program and not usually interpreted until the recipient passes… …   Wiktionary

  • HTTP cookie — noun A packet of information sent by a server to a World Wide Web browser and then returned by the browser each time it accesses that server, used to maintain state between otherwise stateless HTTP transactions, for example, to identify the user …   Wiktionary

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”