SYN cookie - Wikipédia
http://fr.wikipedia.org/wiki/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
1 Principe
2 Valeur de syncookie
3 Inconvénients
4 Paramétrage sous Linux
5 Notes
6 Articles connexes
7 Lien externe
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
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
égal à
le client répond par un paquet ACK de numéro de séquence
d'acquittement
Advertisement
et un numéro d'acquittement
et un numéro
et
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
| |
1 sur 3
23/10/2013 12:38
SYN cookie - Wikipédia
http://fr.wikipedia.org/wiki/SYN_cookie
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é
Advertisement
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 , les informations
2
envoyées au client sont restreintes, les informations conseillées sont les suivantes :
1
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 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.
Advertisement
3
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
2 sur 3
23/10/2013 12:38
SYN cookie - Wikipédia
http://fr.wikipedia.org/wiki/SYN_cookie
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.conf.
Notes
1.
Advertisement
2.
3.
Voir le format d'un paquet TCP.
(en) référence (http://cr.yp.to/syncookies.html)
Maximum Segment Size : taille maximale des données que peut contenir un paquet TCP
Articles connexes
Usurpation d'adresse IP
Ddos
Attaque de Mitnick
Lien externe
(en) référence (http://cr.yp.to/syncookies.html)
Ce document provient de « http://fr.wikipedia.org/w/index.php?title=SYN_cookie&
oldid=90061668 ».
Dernière modification de cette page le 14 mars 2013 à 02:44.
Droit d'auteur : les textes sont disponibles sous licence Creative Commons paternité
partage à l’identique ; d’autres conditions peuvent s’appliquer. Voyez les conditions
d’utilisation pour plus de détails, ainsi que les crédits graphiques. En cas de
réutilisation des textes de cette page, voyez comment citer les auteurs et mentionner la
licence.
Wikipedia® est une marque déposée de la Wikimedia Foundation, Inc., organisation de
bienfaisance régie par le paragraphe 501(c)(3) du code fiscal des États-Unis.
3 sur 3
23/10/2013 12:38