Projet individuel 2 - Analyse d`un site web

publicité
1
Projet individuel 2 - Analyse d’un site web
Alexandre Hauet - SINF10PM
C
I.
I NTRODUCTION
E présent document rapporte l’analyse d’un site
web dans le cadre du cours LINGI1341 - Réseaux
informatiques de l’Université catholique de Louvain.
Cette étude porte sur le site www.imdb.com et comprend
trois parties qui analysent premièrement les requêtes
Http reçues et envoyées, deuxièmement son DNS et
finalement, l’impact de TCP sur les performances de ce
site.
Le site Internet Movie Database est une base de données
en ligne sur le cinéma mondial, sur la télévision, et
secondairement sur les jeux vidéo. Il a été acheté en
1998 par Amazon. Cette information pourrait expliquer
certains résultats obtenus.
D
II.
R EQU ÊTES H TTP
ANS cette section, les différentes analyses seront
basées sur deux scénarios :
l’accès à la page principale du site
l’accès à la fiche d’un film
Chacun des scénarios a été répété 10 fois pour
les navigateurs web suivants : Google Chrome,
Firefox et Internet Explorer1 , afin de pouvoir comparer
les différentes données obtenues pour chaque navigateur
mais également pour observer s’il est possible d’obtenir
des résultats différents concernant un même navigateur.
•
•
A. Requêtes et domaines
Nous pouvons remarquer, comme indiqué dans le
tableau ci-dessous, que le nombre de requêtes varie à
chaque fois et entre chaque navigateur.
1
2
3
4
5
6
7
8
9
Chrome 146 161 148 149 154 149 148 149 152
Firefox 145 142 150 145 144 143 150 148 140
IE
163 163 166 165 165 160 164 165 165
10
144
155
164
supplémentaire : cache.btrll.com, différent des deux
autres navigateurs. D’autre part, Firefox, Chrome et
Internet Explorer accède respectivement 53, 56 et 68 fois
au domaine ia.media-imdb.com mais il est difficile de
justifier concrètement cette différence.
En ce qui concerne la différence du nombre de
requêtes au sein d’un même navigateur, celle-ci est
principalement expliquée par l’accès au domaine fls-na.
amazon.com. En général la requête suivante http://fls-na.
amazon.com/1/batch/1/OP est appelée deux ou sept fois.
Cependant, il arrive parfois que le service http://fls-na.
amazon.com/1/display-ads-cx/1/OP soit, quant à lui, appelé cinq fois, il semble agir comme un parseur mais son
rôle reste très obscur.
B. Différents fichiers téléchargés
Différents types de fichier sont téléchargés. Voici les
types répertoriés :
1) application/javascript
2) application/x-javascript
3) image/gif
4) image/jpeg
5) image/png
6) text/css
7) text/html
8) text/javascript
9) text/plain
En observant la liste précédente, nous remarquons que
les fichiers javascript envoyés peuvent être de trois types
différents. Selon les normes RFC2 , l’utilisation correcte
est application/javascript, text/javascript étant obsolète.
La notation application/x-javascript jusqu’au moment où
elle est normalisée, comme dans le cas présent, peut être
aussi considérée comme obsolète.
moy.
151.1
145.1
164
TABLE I: Nombre de requête pour accéder à www.imdb.
com
Les différentes variations peuvent être expliquées
par le fait qu’Internet Explorer accède à un domaine
Fig. 1: Graphique représentant les différents types de
contenus téléchargés
1
Google Chrome Version 39.0.2171.95 m, Mozilla Firefox 34.0.5
& Internet Explorer 11 Version : 11.096000.17498
2
http://www.rfc-editor.org/rfc/rfc4329.txt
2
Quand on observe le graphique précédent représentant
la proportion respective des différents types de fichiers
téléchargés, la plupart d’entre eux sont des images. Ce
qui semble tout à fait normal car ce site utilise beaucoup
d’images. Mais en regardant plus attentivement, nous
remarquons que certaines d’entre elles sont simplement
des images d’un 1x1 pixel. Elles sont appelés les pixels
espions et permettent de collecter de l’information sur
les utilisateurs.
Un pixel espion est une image numérique transparente
de petite taille qui rassemble des informations sur les activités de l’utilisateur. Il permet à un service de collecter
des données lorsque l’image est téléchargée.
En pratique sur le site, les données sont collectées via
l’en-tête des requêtes grâce aux champs Cookie, Referer
par exemple comme semble le faire le service fls-na.
amazon.com abordé précédemment.
C. HTTP request headers
Au sein des en-têtes des requêtes HTTP, il existe des
différences selon le navigateur utilisé :
1) Chrome:
Nous observons pour certaines requêtes l’apparition du
champs X-Client-Data. Il ne contient aucune information
personnelle et ne fait que strictement décrire l’état de
l’installation du navigateur lui-même3
On aperçoit également que Chrome accepte une
troisième méthode de compréhension des paquets http
: SDCH (nldr : les deux autres étant gzip et deflate).
Google propose donc un codage supplémentaire pour
HTTP qui s’appelle SDCH, et qui peut s’ajouter avant
gzip ou deflate.
2) User-Agent:
Le user agent est un code envoyé par chaque navigateur
web lors d’une connexion à un serveur. Le code permet
à un site web de savoir, entres autres, quel navigateur
et quel système d’exploitation sont utilisés par un internaute.
Nous pouvons remarqué, comme indiqué dans le
tableau suivant, que les User-Agents des navigateurs sont
différents :
Chrome Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Firefox Mozilla/5.0 (Windows NT 6.3; WOW64; rv:34.0) Gecko/20100101
Firefox/34.0
I.E. Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like
Gecko
Ces résultats sont assez intriguants car on observe que
les différents navigateurs semblent se faire passer pour
Mozilla.
3
Selon le Livre blanc sur la confidentialité dans Google Chrome
Il apparait que pour des raisons historiques, les navigateurs aient été contraints de mentir dans leurs User
Agents4 .
D. HTTP reponse headers
De nombreux champs dans les requêtes ne sont pas
standards. Voici une liste avec une brève description de
ceux-ci :
a) x-amz-cf-id: Contient une chaı̂ne cryptée qui
identifie une demande d’aide ou de dépannage. Elle est
utilisée pour les requêtes venant du serveur Amazon
Cloudfront.
b) x-amzn-RequestId:
Valeur
créée
par
ADM(Amazon Device Messaging) qui identifie la
requête. En cas de problème avec ADM, Amazon ne
peut utiliser cette valeur pour retrouver la requête.
c) x-fb-debug: Identifiant qui permet à Facebook de
retrouver plus simplement une requête lors d’un rapport
de bug.
d) x-cache: Indique si la cache provient d’un proxy
: Hit pour oui et Miss pour non.
e) x-cache-hits: Indique si l’objet demandé se
trouve dans le cache.
f) x-connection-hash: Remplace X-Transaction
g) x-content-type-options: Empêche le navigateur
de faire MINE sniffing. MIME-type sniffing permet au
navigateur de déduire les types des fichiers. La valeur de
cette en-tête est toujours à nosniff
h) x-frame-options: Ce champ pour but d’empêcher
le navigateur d’ouvrir une page web dans une iframe.
Il peut prendre les valeurs : DENY, SAMEORIGIN et
ALLOW-FROM.
i) x-response-time: Permet d’afficher la durée de la
réponse en millisecondes.
j) X-N: Permet d’augmenter la taille de l’en-tête
HTTP afin d’éviter certains bugs.
k) x-Served-By: Indique quel serveur a alimenté
Varnish. Varnish est un serveur de cache HTTP utilisé
par exemple par Twitter.
l) x-timer: Fournit des informations sur le voyage
d’une requête du début à la fin. La valeur attribuée à cette
en-tête est constituée de trois parties. Une première partie
qui commence par s, représente un Unix timestamp du
début de la requête. La seconde section commence par
vs, pour varnish start, qui représente le début du voyage
de la requête ; cette valeur doit être toujours égale à 0.
Et finalement, la dernière partie commence par ve, pour
varnish end, qui représente la longueur des sommes du
trajet.
4
Pour plus d’information, je vous invite à visiter le site suivant
http://letrainde13h37.fr/28/les-user-agents-cest-le-mal/
3
m)x-transaction: Indique le numéro de la transaction
n) x-xss-protection: ” Xss Protection ” est une protection coté client présente dans la plupart des navigateurs récents. Il s’agit en fait d’un composant, appelé
filtre XSS, chargé d’analyser les réponses HTTP afin
de détecter des comportements suspects typiques d’une
attaque par XSS réfléchi. Le filtre peut prendre la valeur 0
et 1 qui indique respectivement que celui-ci est désactivé
ou activé. Lorsque le filtre est actif, il existe le mode
“block” qui en cas de détection affichera uniquement
# comme rendu. Ce dernier en-tête protège d’autres
anomalies, telles que des valeurs de input très longue
et des liens très long anormalement formé.
E. Les cookies
De nombreux cookies sont utilisés à travers le site et
pour des utilisations bien différentes. Ils servent principalement à identifier l’utilisateur. Les cookies sont
utilisés par différents services :
a) Services propres au site:
L’historique des dix dernières pages visités sur le site
(acteurs, films) sont visibles sur la page d’accueil du
site. Cette fonctionnalité utilise les cookies. Lorsqu’une
page est visitée par l’utilisateur, le site va enregistrer
la référence de la page donc de l’acteur ou du film en
mémoire et la lier à l’identifiant attribué au cookie. Il faut
ajouter que ces enregistrements de données sont réalisés
via le domaine i.imdb.com
Il est également possible de gérer cet historique via
l’option ”Manage your history” du site. L’information
souhaitée est supprimée via une requête qui prend
en paramètre l’identifiant du film ou de l’acteur
mais également le cookie afin de pouvoir identifier
l’utilisateur. Nous pouvons voir que la ”suppression” des
données est réalisée par le domaine www.imdb.com
b) Services liés au commerce:
Les cookies peuvent être également utilisés pour collecter
des informations sur l’utilisateur. Lorsqu’il se connecte
au site, un cookie est créé et va permettre d’enregistrer
des informations sur lui. Lorsque l’utilisateur accèdera
à un autre site, ce cookie pourrait être réutilisé afin de
pouvoir mettre en évidence certaines informations.
III.
D
D OMAINE NAME S YSTEM
ANS cette partie de l’analyse, nous allons étudier
le DNS des noms de domaine les plus important utilisés sur le site. L’analyse est réalisée suite aux
résultats obtenus grâce à la commande dig.
A. www.imdb.com
Le serveur du site se trouve à Seattle. Il utilise un
CNAME, en réalité www.imdb.com est un alias vers
us.dd.imdb.com. Il utilise seulement des A records qui
correspondent donc à des adresses IPV4. Le Time to Live
du DNS qui indique le temps que l’information peut être
conservé en cache, est de 10800 secondes. Ce temps est
relativement court car, en général, le TTL est de l’ordre
d’un jour (TTL = 86400 secondes).
Nous pouvons également observer que le site utilise
le load balancing, c’est à dire que la charge de travail
est répartie entre les différents serveurs d’imdb. Par
exemple, lors de l’appel du web service http://www.
imdb.com/profile/recently-viewed/ ajax/deleteItem il va
utiliser l’adresse distante 72.21.203.211 et pour un second appel, il utilisera l’adresse 207.171.162.180.
B. ia.media-imdb.com
C’est à partir de ce domaine que sont téléchargées
les images du site. Le domaine est un alias (CNAME)
pour ia.imdb.com.edgesuite.net qui est lui-même un alias
pour a1886.g.akamai.net. Nous pouvons conclure donc
qu’imdb utilise des serveurs de la société Akamai qui
est une société américaine spécialisée dans la mise à
disposition de serveurs de cache pour les entreprises.
L’utilisation de ce type de serveur pour des images a
tout son sens.
Akamai est un service de content delivery network(CDN) commercial. Un CDN est un réseau
d’ordinateurs reliés à travers internet qui permet un gain
de rapidité grâce à une optimisation du mécanisme de
transmission / livraison des requêtes.
Le TTL du DNS est de 900 secondes ce qui est
encore plus court que le premier domaine. Le domaine
ne semble posséder que des adresses de type A records
(IPv4).
C. g-ecx.images-amazon.com
Le domaine est en réalité un alias(CNAME) pour
d1ge0kk1l5kmd0.cloudfront.ne. Amazon CloudFront est
un CDN tout comme Akamai. Nous pouvons également
le remarquer grâce à l’attribut x-cache de l’entête de la
réponse HTTP :
X-Cache:Hit from cloudfront
On peut observer que le domaine i.imdb.com utilise
le CDN CloudFront.
Le TTL du DNS, d’autre part, est de 60 secondes ce
qui est encore plus court que le premier domaine. Le
domaine ne semble posséder que des adresses de type A
records (IPv4).
4
D. www.facebook.com
Le domaine www.facebook.com est en réalité un
alias pour star.facebook.com qui est lui le CNAME de
star.c10r.facebook.com.
Il est accessible via IPv4 et IPv6. Lorsque nous le
contactons en IPv4, le serveur joint est situé aux ÉtatsUnis et en IPv6, celui-ci se trouve en Irlande.
Le TTL est de 60 secondes, ce qui est relativement
court.
IV. T RANSMISSION C ONTROL P ROTOCOL
URANT cette partie, nous allons utiliser
l’application Wireshark pour nos différentes
analyses.
D
A. Nombre de connexions TCP
Le nombre de connexions TPC établies est différent
pour les navigateurs testés.
Navigateur Nb. connexion
Chrome
6
Firefox
2
I.E.
8
Pour trouver ces données, il faut regarder le nombre
de SYN envoyés lors du chargement de la page.
B. Three way handshake
Durant le three-way handshake, les options négociées
sont la window scale et le MSS (Maximum Segment
Size).
Le client précise dans les options du paquet [SYN]
qu’il souhaite une MSS de 1460 octets et un window
scale de 8.
Le serveur précise dans les options du paquet [ACK,
SYN] qu’il souhaite une MSS de 1440 octets et un
window scale de 6.
C. La fenêtre de congestion
Le Round-trip delay time(RTT) est de 155ms. Le
premier paquet de données (indiqué par [TCP segment
of a reassembled PDU]) arrive à 751ms. Donc entre
751ms et 906ms, 17 paquets de données sont reçus; ce
qui montre que la taille de la fenêtre de congestion est
initialisée à 17.
D. Terminaison d’une connexion
Lors de la terminaison de la connexion TCP avec le
WEB-Serveur du site, nous observons un échange d’une
paire de segments FIN et ACK. La terminaison a lieu
quand plus aucune donnée n’est envoyée.
P
V.
C ONCLUSIONS
OUR conclure cette analyse, le site www.imdb.com
est hébergé sur plusieurs serveurs : un serveur
principal à Seattle où se trouve les web services (les
fonctionnalités du site), les différentes images du site
sont sur le CDN Akamai et la collecte d’informations
est réalisée par i.imdb.com qui est hébergé sur un CDN
Amazon CloudFront.
De nombreuses fonctionnalités Amazon sont présentes
sur le site, ce qui confirme notre intuition exposée dans
l’introduction, via des services comme Amazon Device Messaging, Amazon CloudFront... Amazon utilise
également les cookies d’IMDB.
D’un point de vue personnel, la réalisation de cette
analyse m’a fait découvrir la face cachée des pages d’un
site web. Elle m’a permis de ne plus être un surfeur passif
mais actif et attentif aux données échangées via les sites
visités.
R EFERENCES
[1]
[2]
[3]
[4]
[5]
[6]
[7]
Olivier Bonaventure, Computer Networking : Principles, Protocols and Practice, 2nd edition, 2013.
Amazon CloudFront, http://aws.amazon.com/fr/cloudfront/
HTTP cookie, http://en.wikipedia.org/wiki/HTTP cookie
How to test initcwnd? http://www.cdnplanet.com/blog/
tune-tcp-initcwnd-for-optimum-performance/#howtotest
Internet Movie Database, http://en.wikipedia.org/wiki/Internet
Movie Database
Livre blanc sur la confidentialité dans Google Chrome, https:
//www.google.fr/chrome/browser/privacy/whitepaper.html
Varnish
(software),
http://en.wikipedia.org/wiki/Varnish
(software)
Téléchargement