Vous êtes sur la page 1sur 5

WPAD [L'internet rapide et permanent]

http://irp.nain-t.net/doku.php/220squid:050_wpad

WPAD
Qu'est-ce ?
Web Proxy Auto-Discovery. Dcouverte automatique du proxy. Il s'agit d'un protocole imagin par Microsoft, qui permet d'effectuer automatiquement le paramtrage d'accs l'internet de son navigateur. Ce protocole n'est bien sr pas exempt de failles de scurit, soyez-en conscients si vous dcidez de le mettre en application. Bien que peu sre, cette mthode reste tout de mme tellement pratique qu'elle est souvent utilise, et que les navigateurs modernes, aussi bien Internet Explorer que Mozilla Firefox ou Konqueror savent l'exploiter. Puisque nous devrons configurer les clients HTTP pour passer par notre proxy, une mthode automatique simplifiera grandement nos rapports avec les utilisateurs du rseau.

L'objectif atteindre
Voyons un peu les diverses possibilits que propose Mozilla Firefox 2.x :

Par dfaut, bien sr, le butineur est configur pour un accs direct l'internet, mais plusieurs autres possibilits sont offertes :

Connexion manuelle
C'est probablement le meilleur moyen et aussi le plus sr pour qui sait faire, mais allez expliquer la manip quelques dizaines (centaines ?) d'utilisateurs dbutants

Adresse de configuration automatique du proxy


Commenons par cette mthode. Il faut crer un fichier nomm (par convention) proxy.pac la racine d'un site de votre intranet. Ce fichier doit contenir un script (javascript) qui dfinit une fonction bien particulire (et une seule), qui pourra par exemple ressembler ceci :
function FindProxyForURL(url, host) { if(isPlainHostName(host) || dnsDomainIs(host, ".domaine.mrs" )) { return "DIRECT"; } else

1 sur 5

29/01/2012 18:25

WPAD [L'internet rapide et permanent]

http://irp.nain-t.net/doku.php/220squid:050_wpad

{ return "PROXY wpad.domaine.mrs:3128"; } }

Ce qui, traduit en franais, veut dire :


fonction TrouveLeProxyPourUrl(url, host) { si il s'agit du nom de la machine locale ou de la machine dont le nom est "tests.domaine.mrs" ou de toutes les machines du domaine ".maison.mrs" nous voulons une connexion directe (sans proxy) sinon, nous utilisons le proxy "wpad.domaine.mrs" sur le port 3128 }

Bien entendu, il est possible de faire beaucoup plus compliqu, mais ce type de scnario devrait rpondre la plupart des besoins. Normalement, le serveur http doit disposer du type mime qui correspond l'extension .pac. C'est le cas du serveur apache fourni dans les distributions Debian :
application/x-ns-proxy-autoconfig pac

C'est mieux, mais ce n'est pas encore assez simple. L'tape ultime serait de se contenter de cliquer sur Dtection automatique des paramtres proxy du rseau . Pour y arriver, nous devons nous plonger un peu dans le protocole WPAD. Les diffrentes documentations que l'on peut trouver sur le sujet voquent la ncessit de disposer des structures suivantes : un serveur http nomm wpad.<votre domaine.tld> (wpad.domaine.mrs dans l'exemple), qui soit en mesure de fournir un fichier ; l'information pour que le client trouve ce fichier doit quant elle tre donne par l'une de ces voies : une option spcifique envoye au client DHCP, ce qui ncessite l'emploi d'un serveur dhcp ; une rsolution DNS, ce qui ncessite de disposer d'un serveur DNS ou, dfaut, de renseigner manuellement le fichier client. de chaque ou

Exprience instructive
Souvent, dans la vie, rien ne vaut l'exprience. V oyons donc avec notre sniffeur favori, ce qu'il se passe lorsque nous demandons notre navigateur de rechercher une configuration de proxy de faon automatique. Nous disposons d'un rseau local, avec un serveur DNS et un domaine en bois : domaine.mrs. Tous nos clients sont configurs pour effectuer leurs rsolutions de noms avec ce serveur DNS (192.168.0.250).

2 sur 5

29/01/2012 18:25

WPAD [L'internet rapide et permanent]

http://irp.nain-t.net/doku.php/220squid:050_wpad

Le principe de la manip est simple : le sniffeur va capturer ce qu'il se passe lorsque nous configurons notre navigateur pour qu'il fasse une recherche automatique du proxy. Mozilla Firefox 2.x (Windows comme GNU/Linux)
No. Time 1 0.000000 2 0.001591 Source 192.168.0.10 192.168.0.250 Destination 192.168.0.250 192.168.0.10 Protocol Info DNS Standard query A wpad.domaine.mrs DNS Standard query response, No such name

Firefox cherche trouver l'adresse IP d'un hte qui s'appellerait wpad.domaine.mrs. La solution DNS devrait donc pouvoir fonctionner, si ce serveur existait sur le rseau. Internet Explorer 6 et 7 (Windows)
No. Time 1 0.000000 2 0.001591 Source 192.168.0.10 192.168.0.250 Destination 192.168.0.250 192.168.0.10 Protocol Info DNS Standard query A wpad.domaine.mrs DNS Standard query response, No such name

Mme chose. Pour une fois, les deux navigateurs auraient ils le mme comportement ? C'est plutt une bonne nouvelle. Konqueror (GNU/Linux)
No. Time 1 0.000000 2 0.001591 Source 192.168.0.10 192.168.0.250 Destination 192.168.0.250 192.168.0.10 Protocol Info DNS Standard query A wpad.localdomain DNS Standard query response, No such name

Quand mme, tout n'est pas si simple, ce qui a quelque chose de rconfortant dans le dur monde de l'informatique. Konqueror recherche , alors que Firefox, sur la mme machine (GNU/Linux Ubuntu 7.04), recherchait bien . Pourquoi donc ? Analyse du fichier /etc/resolv.conf :
# cat /etc/resolv.conf # generated by NetworkManager, do not edit! search maison.mrs nameserver 192.168.0.250

Analyse du fichier /etc/hosts :


# cat /etc/hosts 127.0.0.1 localhost.localdomain localhost

ubuntu

Si nous modifions ce fichier comme suit :


# cat /etc/hosts 127.0.0.1 localhost.domaine.mrs localhost ubuntu

Konqueror va adopter un fonctionnement normal :


No. Time 1 0.000000 2 0.001591 Source 192.168.0.10 192.168.0.250 Destination 192.168.0.250 192.168.0.10 Protocol Info DNS Standard query A wpad.domaine.mrs DNS Standard query response, No such name

Il n'est pas interdit de se demander pourquoi Konqueror adopte une mthode aussi tordue pour dduire le nom de domaine de la machine hte, alors que le paramtre du fichier resolv.conf est justement l pour donner cette information. Bref, moyennant un minimum de prcautions, les trois navigateurs adoptent le mme comportement, savoir chercher via DNS un serveur nomm wpad.maison.mrs. Donnons leur ce qu'ils demandent, en agissant sur notre DNS (ou sur nos fichiers ). Comme il est dit dans les docs que l'on risque d'avoir besoin d'un fichier wpad.dat sur le serveur http, autant le crer tout de suite :
ln -s /var/www/proxy.pac /var/www/wpad.dat

Nous mettons en route notre sniffeur, nous ouvrons par exemple IE7, et le configurons pour qu'il rcupre sa configuration proxy de faon automatique, puis nous allons visiter, toujours par exemple, www.grenouille.com [http://www.grenouille.com] :
No. 1 2 3 4 ... 8 ... 10 ... 16 ... Time 0.000000 0.001852 0.003192 0.004410 0.008375 0.009706 0.021575 Source 192.168.0.10 192.168.0.250 192.168.0.10 192.168.0.250 192.168.0.10 192.168.0.128 192.168.0.10 Destination 192.168.0.250 192.168.0.10 192.168.0.250 192.168.0.10 192.168.0.128 192.168.0.10 192.168.0.128 Protocol DNS DNS DNS DNS HTTP HTTP HTTP Info Standard Standard Standard Standard

query query query query

A wpad.domaine.mrs response CNAME tests.domaine.mrs A 192.168.0.128 A tests.domaine.mrs response A 192.168.0.128

GET /wpad.dat HTTP/1.1 HTTP/1.1 200 OK (chemical/x-mopac-input) GET http://www.grenouille.com/ HTTP/1.1

3 sur 5

29/01/2012 18:25

WPAD [L'internet rapide et permanent]

http://irp.nain-t.net/doku.php/220squid:050_wpad

19 0.025318 ... 29 8.091195

192.168.0.128 192.168.0.10

192.168.0.10 192.168.0.128

HTTP HTTP

HTTP/1.0 407 Proxy Authentication Required (text/html) GET http://www.grenouille.com/ HTTP/1.1

IE7 commence par chercher l'adresse IP de wpad.domaine.mrs (1, 2, 3 et 4), puis il cherche rcuprer dessus le fichier wpad.dat, comme annonc (8). Le serveur lui rpond (10) :
Frame 10 (519 bytes on wire, 519 bytes captured) ... Hypertext Transfer Protocol HTTP/1.1 200 OK\r\n Request Version: HTTP/1.1 Response Code: 200 Date: Sat, 02 Jun 2007 13:24:49 GMT\r\n Server: Apache/2.2.3 (Debian) PHP/5.2.0-10+lenny1\r\n Last-Modified: Sat, 02 Jun 2007 13:05:52 GMT\r\n ETag: "a00a61-cb-fdcd2c00"\r\n Accept-Ranges: bytes\r\n Content-Length: 203 Content-Type: chemical/x-mopac-input\r\n \r\n Media Type Media Type: chemical/x-mopac-input (203 bytes) 0000 0010 0020 0030 0040 0050 0060 0070 0080 0090 00a0 00b0 00c0 00d0 00e0 00f0 0100 0110 0120 0130 0140 0150 0160 0170 0180 0190 01a0 01b0 01c0 01d0 01e0 01f0 0200 00 01 00 16 30 2c 3a 65 20 32 61 74 33 67 63 52 6f 30 3a 61 74 72 7b 48 7c 73 22 20 54 0a 22 6f 20 05 f9 0a d0 30 20 32 72 28 2e 73 2c 3a 3a 64 61 6e 33 20 63 69 55 0a 6f 20 74 20 20 22 20 50 6e 20 5d 34 00 7f 20 30 34 3a 44 30 74 20 30 20 32 6e 74 0d 63 2d 6f 52 20 73 64 2c 29 20 3b 20 52 2e 7d 47 78 50 dc 4f 32 3a 20 65 2d 2d 30 35 22 63 67 65 0a 68 69 6e 4c 20 74 6e 20 29 72 0a 20 4f 6d 0a f5 40 06 00 4b 20 34 41 62 31 4d 32 3a 61 30 65 6e 43 65 6e 20 28 20 4e 73 22 0a 65 20 20 58 72 7d c5 00 6f 00 0d 4a 39 70 69 30 6f 20 35 30 30 73 74 6f 6d 70 46 75 20 61 44 2e 20 74 20 20 59 73 0a 00 40 50 48 0a 75 20 61 61 2b 64 4a 32 30 22 3a 2d 6e 69 75 69 72 69 6d 6f 6d 20 75 20 20 20 3a 0a 30 06 84 54 44 6e 47 63 6e 6c 69 75 20 61 0d 20 4c 74 63 74 6e 6c 66 65 6d 61 20 72 20 20 77 33 84 82 34 54 61 20 4d 68 29 65 66 6e 47 36 0a 62 65 65 61 0d 64 2c 28 28 61 69 20 6e 7d 20 70 31 3a ac 63 50 74 32 54 65 20 6e 69 20 4d 31 41 79 6e 6e 6c 0a 50 20 69 68 69 73 7b 20 20 72 61 32 8c c0 29 2f 65 30 0d 2f 50 6e 65 32 54 2d 63 74 67 74 2f 0d 72 68 73 6f 6e 6f 0a 22 65 65 64 38 cd a8 a2 31 3a 30 0a 32 48 79 64 30 0d 63 63 65 74 2d 78 0a 6f 6f 50 73 49 6e 20 44 6c 74 2e 22 08 00 04 2e 20 37 53 2e 50 31 3a 30 0a 62 65 73 68 54 2d 66 78 73 6c 74 73 2e 20 49 73 75 6d 3b 00 80 4d 31 53 20 65 32 2f 0d 20 37 45 2d 70 0d 3a 79 6d 75 79 74 61 29 28 6d 20 52 65 72 61 0a 45 c0 50 20 61 31 72 2e 35 0a 53 20 54 66 74 0a 20 70 6f 6e 46 29 69 20 68 72 20 45 20 6e 69 20 00 a8 18 32 74 33 76 33 2e 4c 61 31 61 64 2d 43 32 65 70 63 6f 0a 6e 7c 6f 73 20 43 7b 20 73 20 ..]G...0.:....E. ..4x@.@......... ...P.oP.4c)..MP. ......HTTP/1.1 2 00 OK..Date: Sat , 02 Jun 2007 13 :24:49 GMT..Serv er: Apache/2.2.3 (Debian) PHP/5. 2.0-10+lenny1..L ast-Modified: Sa t, 02 Jun 2007 1 3:05:52 GMT..ETa g: "a00a61-cb-fd cd2c00"..AcceptRanges: bytes..C ontent-Length: 2 03..Content-Type : chemical/x-mop ac-input....func tion FindProxyFo rURL(url, host). {. if(isPlain HostName(host) | | dnsDomainIs(ho st, ".maison.mrs " )). {. return "DIREC T";. } else { . return "PROXY wpad.mais on.mrs:3128";. }.}..

Nous retrouvons bien notre javascript dans la rponse. Notez le vilain mime.types par dfaut du systme :
# cat /etc/mime.types | grep -e ' dat ' chemical/x-mopac-input

qui est d aux

mop mopcrt mpc dat zmt

Ce dfaut ne semble pas affecter la configuration automatique qui fonctionne bien, puisque IE7 va maintenant transmettre notre requte au serveur proxy (16) :
Frame 16 (457 bytes on wire, 457 bytes captured) ... Hypertext Transfer Protocol GET http://www.grenouille.com/ HTTP/1.1\r\n ...

Frame 19 (1128 bytes on wire, 1128 bytes captured) ... Hypertext Transfer Protocol HTTP/1.0 407 Proxy Authentication Required\r\n ... Line-based text data: text/html ... <H1>ERROR</H1> >H2>Cache Access Denied</H2> ... While trying to retrieve the URL: <A HREF="http://www.grenouille.com/">http://www.grenouille.com/</A> <P> The following error was encountered: <UL> <LI> <STRONG> Cache Access Denied.

4 sur 5

29/01/2012 18:25

WPAD [L'internet rapide et permanent]

http://irp.nain-t.net/doku.php/220squid:050_wpad

... <P>Sorry, you are not currently allowed to request: <PRE> http://www.grenouille.com/</PRE> from this cache until you have authenticated yourself. ... You need to use Netscape version 2.0 or greater, or Microsoft Internet Explorer 3.0, or an HTTP/1.1 compliant browser for this to work. ...

Comme nous avons requis une identification, c'est le moment de s'excuter. Notez au passage, dans la trame 29, que le login/password est trs facilement lisible :
Frame 29 (506 bytes on wire, 506 bytes captured) ... Hypertext Transfer Protocol GET http://www.grenouille.com/ HTTP/1.1\r\n Request Method: GET Request URI: http://www.grenouille.com/ Request Version: HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*\r\n Accept-Language: fr\r\n UA-CPU: x86\r\n Accept-Encoding: gzip, deflate\r\n User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n Proxy-Authorization: Basic dXNlcjE6cGFzc3dvcmQx\r\n Credentials: machin:epikoi Proxy-Connection: Keep-Alive\r\n Host: www.grenouille.com\r\n \r\n

La suite du dialogue se fait toujours avec le proxy, ce qui dmontre bien que la configuration automatique a russi. Il est facile de vrifier que Firefox comme Konqueror fonctionneront galement suivant ce principe. Les logs de Squid montrent clairement les requtes des clients, avec le nom de l'utilisateur concern, puisque nous avons ici une identification obligatoire. Cette configuration automatique peut rester active en permanence. En effet, si le serveur wpad n'est pas trouv, ou s'il ne fournit pas de script, le navigateur enverra les requtes directement au serveur cibl par l'URL. A premire vue, cette solution semble bien souple et bien agrable pour l'utilisateur.

Comment forcer nos utilisateurs utiliser une telle configuration ?


Nous pouvons agir d'une part sur le routeur pour qu'il redirige tout flux sortant sur le port 80 (sauf bien sr celui du proxy) vers notre serveur http local, et configurer celui-ci pour que la page d'accueil ainsi que l'erreur 404 affichent une explication sur la faon de configurer son navigateur.

Scurit
Que l'euphorie de la russite ne fasse toutefois pas oublier les questions de scurit (pour le client surtout) Le systme revient clairement charger dans le navigateur un script qui va analyser les URL demandes par le client, et les transmettre, suivant le cas, un serveur mandataire, et ce, de faon invisible pour l'utilisateur. En d'autres termes, le trafic http (et https) peut tre drout sur un serveur intermdiaire, sans que l'utilisateur en ait connaissance. Les questions que l'on devrait se poser seront les suivantes : Si nous sommes sur un rseau de confiance et que l'administrateur a clairement annonc ses intentions, tout va encore peu prs pour le mieux, si l'on admet que le rseau ne peut tre compromis ; si nous sommes sur un rseau dont nous ne savons rien, nous ne savons pas par o nous passons (ce peut tre le cas aussi avec un proxy transparent, mais ce dernier est facilement reprable, par exemple avec un tcptraceroute). Dans ce cas un indlicat pourrait facilement nous espionner ; sommes nous certains que nos navigateurs sont assez scuriss pour ne pas accepter n'importe quoi comme fonction Le cas le plus intressant serait sans doute sur un rseau wi-fi non scuris, ouvert tous [ Page prcdente ] [ Haut de page ] [ Page suivante ]
Dernire modification: le 12/05/2009 16:20

Cette cration est mise disposition sous un contrat Creative Commons.

5 sur 5

29/01/2012 18:25

Vous aimerez peut-être aussi