Avec l'expansion pandémique de "services" comme Google Analytics, les moyens de se
prémunir des SpyWebs prennent de plus à en plus d'importance. Et si des outils
comme adBlock offre une
très protection locale efficace, la protection d'un réseau dans son entier ne peut
se passer de privoxy, un proxy filtrant aux possibilités étonnantes et disponible
sur beaucoup de systèmes de Windows à Linux en passant par AmigaOS.
Historique (
tout afficher)
- v2 - Mise à jour, suppression de tproxy, passage direct de la transparence avec privox
(2008-11-21 14:23)
-
v1 - Mise à
jour des règles avec une 20aine de nouveaux blockages. Amélioration du script de
lancement avec un mode pause/resume (2008-10-31 12:47)
Qu'est-ce qu'un SpyWeb ?
Pour faire simple, le SpyWeb est à la toile ce que le SpyWare est à Windows, des
applications qui s'exécutent dans votre dos par le simple fait de visiter un site. Et les
dangers liés à leur présence sont aussi nombreux que clairement
sous-estimés :
- Ces outils collectent toutes sortes d'informations vous concernant qui sont
généralement liés à votre adresse IP. Cet aspect est aujourd'hui
critique pour les internautes disposant d'une adresse IP fixe (tous les abonnés de Free
par exemple), mais le sera demain pour tout le monde, lorsque chaque internaute aura sa propre
IPv6.
- La globalisation de l'usage de certains de ces SpyWebs, typiquement Google Analytics,
implique que la majorité des sites que vous visitez utilisent ce "service", et par
conséquent nourrissent les bases de données d'un acteur unique (Google, Xiti,
etc.). Associé au point précédent, cette généralisation laisse
imaginer la densité des informations potentiellement nominatives vous concernant, et
échappant à toute action de la CNIL.
- Se présentant généralement sous la forme de code JavaScript, personne, y
compris les WebMasters qui les incluent avec beaucoup de légèreté dans leur
pages, ne peut être assuré de ce qu'ils font réellement, et encore moins de
ce qu'il feront demain.
- Certains de ces SpyWebs vont très loin dans leur collecte d'information,
jusqu'à se transformer en véritable outil de piratage enregistrant
littéralement l'ensemble des actions effectuées au sein d'un même site avec
votre souris ET votre clavier (saisie de mots de passe, de coordonnées perso, etc.).
Même si l'usage de ces outils n'est pas généralisé, que se passera
t-il demain, si par exemple Google, décide d'inclure se type de fonctionnalité ?
- Vu du côté des WebMasters, les outils décentralisés comme Google
Analytics impliquent une perte d'informations vitales concernant leurs visiteurs car elles ne
leur appartiennent pas. Ce n'est sûrement pas critique pour un bloggeur mais beaucoup plus
pour un site professionnel lorsque viendra le moment d'utiliser des outils comme Business Object
pour procéder à des études plus poussées que celles fournies en
standard.
- Enfin, le moindre mal, ces outils, comme les publicités et autres flasheries,
pourrissent votre bande passante en ajoutant de nombreux téléchargements inutiles
à l'information affichée.
Entendons-nous bien, je comprends parfaitement l'importance des outils statistiques pour la
gestion de la stratégie d'un site. Mais il existe aujourd'hui d'autres solutions (awstats,
phpmysites, etc.) qui stockent localement les données des utilisateurs.
Il est aujourd'hui parfaitement possible, avec certes un peu plus d'efforts, d'obtenir les
mêmes résultats avec en prime un respect de ses utilisateurs, et une maîtrise
des données.
Qu'est-ce que privoxy ?
Il existe quelques méthodes pour se débarrasser
localement des SpyWebs mais privoxy demeure la plus efficace s'agissant de protéger
globalement un réseau.
Privoxy est un proxy HTTP
"filtrant" dont le rôle est "simplement" d'analyse chaque page de chaque sites que vous
visitez pour y éradiquer publicités et SpyWebs.
Pour arriver à ses fins, privoxy dispose de deux techniques. Soit il va interdir, comme le
ferait AdBlock, l'accès à certains sites, soit il va modifier, "à la
volée" les pages que vous recevez (par exemple pour altérer des scripts dangereux).
Privoxy est en outre capable de "désanimer" des images GIF, de nettoyer vos cookies pour qu'ils ne laissent pas
passer d'information, de maquiller l'identité de votre navigateur. Bref, c'est un outil
complet, simple d'utilisation, rapide à installer, prêt à l'emploi et
complètement paramétrable pour filtrer encore plus loin.
Au final, le navigateur va recevoir une page la plus "pure" possible débarrassée de
tout ce qui peut nuire à la lisibilité, à la bande passante et à la
sécurité.
Maintenant la suppression des encarts de pub est un peu plus litigieuse que celles des SpyWebs.
En effet le modèle de financement et donc de développement de la toile s'appuie
très massivement sur la publicité. Et même si je suis le premier à
regretter les abus grandissant ces dernières années (on est loin de l'époque
du linteau de pub en haut de la page), le choix de les supprimer purement et simplement n'est pas
forcement la bonne solution.
Malheureusement l'éradication de la publicité devient ici un des dommages
collatéraux lié à la guerre anti-SpyWebs. En effet, autoriser la
publicité et pas les SpyWebs n'a aucun sens car les deux reposent sur les mêmes
mécanismes. A titre d'exemple, GoogleAd se base sur un script show_ads.js pour afficher la
pub. Aujourd'hui Google Analytics se base lui sur le script urchin.js. On pourrait logiquement
autoriser le premier et bloquer le second. Mais si cette pratique se généralise,
Google aura tôt fait de vider urchin.js pour transférer la logique d'espionnage sur
show_ads.js rendant la protection caduque. La destruction systématique des scripts
externes est donc la priorité même si la publicité en pâtie.
La seule solution que j'ai trouvé à ce problème consiste à
débloquer la publicité sur les sites que je considère comme "ami", ce qui se
fait très simplement avec Privoxy.
Installation
Privoxy peut être installé sur une machine de bureau mais prend sa pleine puissance
une fois mis en place sur tout un réseau. Il va donc falloir choisir une machine qui sera
connue des autres mais il n'est pas nécessaire qu'elle soit dédiée à
cette tâche. Privoxy prend peu de ressource mémoire et CPU, n'importe quelle machine
sous n'importe quel système devrait convenir pour peu qu'elle soit allumée en
permanence. Pour la suite j'appellerais cette machine, machine_privoxy.
Toutes les versions binaires pour tous les Systèmes sont téléchargeables
ici.
Pour un système GNU/Linux l'installation se fait comme suit : root#urpmi
privoxyouroot#aptget install privoxyroot#/etc/init.d/privoxy startLancement de
privoxy : [ OK ]root#Â
Paramétrage du navigateur
L'avantage d'un proxy http est qu'il n'existe pas à ma connaissance de navigateur qui ne
sache pas l'utiliser. Pour l'exemple nous allons faire ici le paramétrage de FireFox, mais
il pourrait tout aussi bien s'agir de Safari, Opéra et même Internet Explorer...
Il faut donc maintenant aller sur la machine cliente pour indiquer à son navigateur
d'aller chercher ses pages web sur la machine_privoxy. Dans FireFox allez dans les menus
Édition/Préférence/Réseau/Paramètres. Sélectionnez
configuration manuelle du proxy et entrez pour HTTP les valeurs machine_provoxy et 8118. Cliquer
ensuite sur OK et enfin Fermer.
C'est tout ! Pour vérifier que tout fonctionne, saisissez l'adresse
http://config.privoxy.org/ et validez. Vous devez voir apparaître la page de configuration
de privoxy.
Privoxy à l'oeuvre
Tout est donc opérationnel. Pour se convaincre que tout est en place, il suffit d'ouvrir
une console sur la machine privoxy et d'y faire un tail -f /var/log/privoxy/logfile.
Ensuite sur le poste client, allez faire un tout avec votre navigateur sur le site
www.liberation.fr et regardez ce qu'affiche privoxy : root#tail -f
/var/log/privoxy/logfileRequest: www.liberation.fr/Request:
www.liberation.fr/_looks/liberation/scripts/rObj.js(...)www.smartadserver.com/call/pubj/252/1276/225/M/7424944326/?
crunch!Request: www.liberation.fr/_looks/liberation/images/fond_pub_728x90.gif(...)Request:
www.smartadserver.com/call/pubj/252/1276/163/S/7424944326/? crunch!Request:
www.liberation.fr/_looks/liberation/images/onglet_forum_on.gif(...)Request:
cmhtml.fr.overture.com/d/search/p/standard/eu/js/flat/ctxt/ls/?ctxtId=libe_fr_annuaire&NGrp=2&NKw=4&Pg=1&keywordCharEnc=utf-8&outputCharEnc=utf-8&Partner=liberation_js_fr_ctxtls_libe
crunch!(...)www.liberation.fr/interactif/question/libeblogs/_files/file_258326_34465_petite_vignette.jpgRequest:
www.smartadserver.com/call/pubj/252/1276/276/S/7424944326/? crunch!(...)Request:
www.smartadserver.com/call/pubj/252/1276/94/S/7424944326/? crunch!Request:
www.liberation.fr/interactif/question/libeblogs/_files/file_260788_26585_petite_vignette.jpg(...)Request:
www.google-analytics.com/urchin.js crunch!(...)Request:
logi8.xiti.com/hit.xiti?s=197813&s2=2&p=homepage&hl=8x59x22&lng=fr&r=1280x886x32x32&re=1280x746&ref=
crunch!root#Â
A chaque fois que privoxy affiche crunch, il a bloquer le navigateur. Nous voyons ainsi qu'en
standard, privoxy bloque efficacement les publicités, Google Analytics et Xiti. Cela fait
déjà beaucoup de nuisance en moins. Mais nous allons pouvoir aller un peu plus
loin.
Améliorer le filtrage Les fichiers à
modifier
Comme vous l'avez vu, Privoxy par défaut marche déjà très bien. Il
est cependant possible d'aller plus loin. Pour changer les paramètres de Privoxy, vous
avez deux solutions. Vous pouvez soit utiliser l'interface WEB (personnellement je ne la trouve
pas très simple), soit taper directement dans les fichiers de configuration. Pour cela, il
faut simplement éditer le fichier /etc/privoxy/user.actions. Notez que le simple fait d'en
faire sauvegarde implique son rechargement. Aucun besoin donc de redémarrer privoxy.
Le fichier user.actions contient les règles que vous avez le "droit" de changer. Vous
pouvez changer aussi les autres mais cela risque de vous créer plus de problèmes
qu'autre chose. Par défaut il contient déjà plein d'exemples utiles.
Vous allez pouvoir ajouter ici, des règles et des alias.
Une règle est la combinaison d'une ou plusieurs actions et est
appliquée à une ou plusieurs URL. Pour la liste complète des actions que
Privoxy propose, allez jeter un oeil ici.
Ajout de nouvelles règles
Prenons un exemple et imagions que nous voulions supprimer l'envoi de tous les cookies
sortant pour le site wwww.mauvais-site.fr. En langage privoxy cela nous donne : {
+crunch-outgoing-cookies }
.mauvais-site.fr
Cette règle très simple va ajouter l'action "crunch-outgoing-cookies" (qui supprime
les envois de cookies) à toutes les urls appartenant à .mauvais-site.fr. Le signe +
indique que la directive doit être ajoutée aux autres règles. A l'inverse, si
nous ajoutons : { -crunch-outgoing-cookies }
bonne-page.mauvais-site.fr
Toutes les pages du domaine mauvais-site.fr auront leur cookie mangé sauf
bonne-page.mauvais-site.fr.
Vous pouvez des * dans les URL, par exemple ad*.site-de-pube.fr, ou même une expression
régulière comme pour adBlock comme www[1-9a-ez].example.c*.
Vous pouvez aussi mettre plusieurs actions entre les accolades, soit sur une seule ligne en les
séparant par des espaces, soit sur plusieurs lignes en ajoutant un à la fin de
chaque ligne. Cela nous donne par exemple pour supprimer cookies entrant ET sortant: {
+crunch-outgoing-cookies
 +crunch-incoming-cookies }
ad*.mauvais-site.fr
www[1-9a-ez].example.c*
Ajout d'Alias
Comme nous l'avons vu, il est possible de mettre plusieurs actions entre accolade. Il peut
être alors pratique de pouvoir regrouper un ensemble d'actions sous un seul alias. Par
exemple, si nous voulons regrouper la suppression de tous les cookies vue plus haut, nous
ajouterions dans le fichier user.actions : Â Â {{alias}}
  +crunch-all-cookies = +crunch-incoming-cookies
+crunch-outgoing-cookies
  -crunch-all-cookies = -crunch-incoming-cookies
-crunch-outgoing-cookies
Une règle pour ajouter, une autre pour enlever, l'exemple parle de lui-même. Ainsi
la règle sur "mauvais-site" pourrait s'écrire avec un de nos deux nouveaux alias :
{ +crunch-all-cookies  }
.mauvais-site.fr
Par défaut dans user.action il y a deux alias très pratiques. Le premier shop va
nous permettre d'assouplir les règles pour les rendre compatibles avec un site de commerce
branlant. L'autre s'appelle fragile et permet de ne pas "casser" les sites souvent mal fichu. Si
vous avez une boutique qui ne marche plus, ou un site fragile, vous pouvez alors ajouter : { shop
}
www.boutique-branlante.fr
{ fragile }
www.site-mal-fichu.fr
Ajout de règles supplémentaires
Il est possible d'améliorer encore privoxy pour ne plus rien laisser passer ou presque. Au
début vous allez observer ce que les sites font exactement en observant les logs de
Privoxy. Et à chaque fois que vous voyez quelque chose de louche, vous pouvez ajouter une
règle comportant l'action { +block } suivi à la ligne suivante de chaque url posant
problèmes. Ce qui au final peut donner quelque chose comme cela : {{alias}}
 big-block      =
+block +handle-as-empty-document
# Régies publicitaires/ Plateformes d'annonce
{ big-block }
.netavenir.com     Â
      Â
   # http://www.netavenir.com/
.turn.com      Â
      Â
    #
http://www.turn.com/corp/how/how-it-works.jsp
.bluestreak.com     Â
      Â
  # http://www.bluestreak.com/whowhat/index.asp
.criteo.com      Â
      Â
   # http://www.criteo.com/en/bloggers.aspx
.blogbang.com/demo/js/blogbang_ad.php?id=Â # http://www.blogbang.com/demo/
/.*/microsoft_adcenterconversion.js    # Régie
Microsoft
*.*.marketingsolutions.yahoo.com/* Â Â Â Â
 # Régie Yahoo
www.googleadservices.com/*Â Â Â Â Â
    # Régie Google
.fmpub.net     Â
      Â
    #
http://federatedmedia.net/whyadvertise/index
pubsrv.allopass.com/* Â Â Â Â Â
      #
http://www.allopass.com/
.comclick.com      Â
      Â
  # http://www.comclick.com/
.regieci.com     Â
      Â
   # http://www.regieci.com/fr/accueil/index.asp
.allo-audience.fr     Â
      Â
 # http://www.allo-audience.fr/
.audientia.net     Â
      Â
  # http://www.audientia.net/new/fr/new/
.clickintext.com    Â
      Â
  # http://www.clickintext.com/
.clickintext.net
.intellitxt.com
# Les enregistreurs/relecteurs
{ big-block }
.clicktale.* Â Â Â Â Â Â
      Â
   # http://www.clicktale.com/faq.html
cetrk.com/* Â Â Â Â Â Â
      Â
   # http://crazyegg.com/overview
*.robotreplay.com/* Â Â Â Â Â
      Â
# http://www.robotreplay.com/
/.*/clickheat.js
# médiamêtrie/traçage
{ big-block }
.estat.com     Â
      Â
    #
http://www.estat.com/service/services_form.html
.sitemeter.com     Â
      Â
  # http://www.sitemeter.com/
.w3counter.com     Â
      Â
  # http://www.w3counter.com/
.reinvigorate.net     Â
      Â
 # http://report.reinvigorate.net/snoop
/.*/webanalytics     Â
      Â
 # http://france.webanalytics.be/
.opentracker.net    Â
      Â
  # http://www.opentracker.net/index.jsp
.weborama.* Â Â Â Â Â Â
      Â
   # http://weborama.com/
.quantserve.com     Â
      Â
  # http://www.quantcast.com/
.performancing.com    Â
      Â
 # http://performancing.com/tracker
.ToutLeMondeEnBlogue.com    Â
     #
http://www.toutlemondeenblogue.com/index.aspx
stats.wordpress.com     Â
      Â
# http://www.wordpress.com
*.technorati.com/*Â Â Â Â Â
      Â
 # http://www.technorati.com
embed.technorati.com/linkcount    Â
   #
/.*xiti.js     Â
      Â
    # http://www.xiti.com/
*.getclicky.com/* Â Â Â Â Â
      Â
 # http://www.getclicky.com/help/
*.iminr.com/* Â Â Â Â Â Â
      Â
  # http://www.iminr.com/
.netprofitblueprint.com/* Â Â Â Â Â
    #
http://www.netprofitblueprint.com/capture.html (assez opaque celui-la...)
.converdge.com     Â
      Â
  # http://www.converdge.com/features
.cybermonitor.com
my.blogitexpress.com/.*.js     Â
   # http://www.blogitexpress.com/
www.atoomic.com/js/*Â Â Â Â Â
      Â
# http://www.atoomic.com/
.clustrmaps.com/counter/*
/phpmyvisites.js
.trackalyzer.com
# Page ranking
www.free-pagerank.com/fcgi-bin/alive_js.fcgi.*Â Â
external.wikio.fr/blogs/top/getrank
www.pagerank.fr/pagerank-actuel.gif
# Loggers un peu trop traçeurs
{ big-block }
.mybloglog.com     Â
      Â
  # http://www.mybloglog.com/
#*.paperblog.fr/* Â Â Â Â Â
      Â
 # http://www.paperblog.fr/pages/presentation/
# Outils non centralisé
/.*/phpmyvisites.js     Â
      #
http://www.phpmyvisites.net/
# traçage des flux (feeds)
{ big-block }
feedjit.com/* Â Â Â Â Â Â
      Â
  # http://feedjit.com/
# Spécial Google
{ big-block }
/.*utm.js      Â
      Â
    # variante d'urchin
/.*stat.*.js
      Â
      Â
 # un filtrage générique
/.*/urchin.js     Â
      Â
  # variante d'urchin
/.*s_code.js     Â
      Â
   # variate d'urchin
/.*google-analyticator.*Â Â Â Â Â
     # le plugin pour
wordpress
# Nuisances
{ big-block }
.snap.com/* Â Â Â Â Â Â
      Â
   # Charge les liens en tâche de fond pour en
faire
      Â
      Â
      Â
 # des vignettes. Sympa en soit mais pompe pas mal de resources.
.ixnp.com/*
.twitter.com/*
.webreseau.com     Â
  (...)