Se prémunir des "SpyWebs" avec Privoxy
Le 21 novembre 2008, à 14:22 par Ulhume...

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-22 00:27)
  • 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 privoxy
ou
root#apt-get install privoxy
root#/etc/init.d/privoxy start
Lancement de privoxy : [ OK ]
root# 

Normalement, privoxy est installé avec sa configuration /etc/privoxy/config prête à l'emploi. Cependant il peut être utile de faire son propre paramétrage, ne serait-ce que pour mettre le service en écoute d'une adresse IP publique (par défaut c'est localhost:8118). Voici la mienne que j'ai commenté :

# dossier de configuration
    confdir /etc/privoxy


# dossier de stockage des traces
    logdir /var/log/privoxy
    logfile privoxy.log

# niveau de debuggage dans les traces.
    debug         1 # Affiche toutes les connections et éventuels "crunch"
#    debug         2 # Affiche le statut des connexions
#    debug         4 # Affiche le statut des entrées-sorties
#    debug         8 # Affiche le parsing des headers
#    debug        16 # Afficher toutes les données reçues ou envoyées (un peu lourd !)
    debug        32 # debug force feature
    debug        64 # debug regular expression filters
    debug       128 # debug redirects
    debug       256 # debug GIF de-animation
    debug      4096 # Startup banner and warnings.
    debug      8192 # Non-fatal errors

# Actions
    actionsfile standard.action  
    actionsfile default.action  
    actionsfile user.action      

# Filtres
    buffer-limit 4096             # limite de taille des contenus filtrables
    filterfile default.filter
    #filterfile user.filter       # peut être décommenté pour créer ses filtres custom

# adresse et port sur lequels sont ouvert le proxy
    listen-address  192.168.154.102:8118

# A décommenter (et modifier) pour chaîner à un autre proxy
#   forward   /      localhost:3128

# Autorise l'utilisation en proxy transparent
    accept-intercepted-requests 1

# statuts
    toggle  1                       # activé au démarrafe
    enable-remote-toggle  1         # désactivable à distance
    enable-remote-http-toggle  1    # désactivable à distance (WEB)
    enable-edit-actions 1           # actions éditables (WEB)
    enforce-blocks 1                # on peut forcer un blockage
/etc/privoxy/config

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/logfile
Request: 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.jpg
Request: 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

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.action. Notez que le simple fait d'en faire sauvegarde implique son rechargement. Aucun besoin donc de redémarrer privoxy.

Le fichier user.action 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.action :

    {{alias}}
    interdiction-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
    autorisation-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 :

{ interdiction-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 :

 définition des sites que l'on bloque gravement
# ########################################################"
{ +block }
  # Régies publicitaires/ Plate-formes d'
annonce
    .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
    payperpost.com                              # http://payperpost.com/

  # Les enregistreurs/relecteurs
    .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
    .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/*
    .trackalyzer.com
    log.tf1.fr

  # 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
    .mybloglog.com                              # http://www.mybloglog.com/

  # traçage des flux (feeds)
    feedjit.com/*                               # http://feedjit.com/

  # Spécial Google
    /.*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
    .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                              # http://www.webreseau.com/fr/fonctionnement.asp
    *.devfr.net/*                               # Pas identifié, si quelqu'un a une idée...
    badge.facebook.com/badge/*
    .blogbar.org

Le dernier bloc de cette liste ne sont pas des SpyWebs à proprement parler mais des "fonctions" qui me fatiguent car elles ralentissent l'affichage des pages. Donc si vous n'en voulez pas, libre à vous, tout ceci est à adapter à vos besoins.

Enfin, pour peaufiner encore notre couverture, nous avons allons ajouter deux règles biens pratiques. La première consiste à empêcher les sites de savoir d'où vous venez en lui faisant croire que vous venez toujours de chez eux (referrer). L'URL utilisé est ici le / ce qui veut dire "pour tous les sites".

{ +hide-referrer{forge} }
/

Et puis, pour s'amuser un peu nous pouvons aussi maquiller l'identité de notre navigateur. Là, je vais faire croire que j'utilise un FireFox 4.1 sur un Oric Atmos Wink

{ +hide-user-agent{Mozilla/5.0 (TV; U; Oric Atmos 6502c; en-US; rv:r91.6) Gecko/19870508 TranDOS Firefox/4.1} }
/

Quelques mots sur l'interface WEB

Même s'il n'est pas bien pratique pour éditer la configuration, l'interface WEB est en revanche très efficace pour contrôler le proxy. Si vous tapez l'URL http://config.privoxy.org/. Vous avez la possibilité d'activer ou de désactiver le proxy (http://config.privoxy.org/toggle), de demander à privoxy d'afficher les règles qu'il aurait appliqué à une URL que vous saisissez à la main (http://config.privoxy.org/show-url-info) et enfin de visualiser et modifier la configuration ( http://config.privoxy.org/show-status ).

Cette dernière option offre cependant possibilité un peu cachée qui est de régler le niveau de sévérité du proxy. En effet, si sur la ligne default.action vous clickez sur Edit.Vous allez voir apparaître trois niveaux : Cautious (précautionneux), Medium et Advanced. Le premier offre un niveau de sécurité correcte mais laisse par exemple plus passer les cookies. C'est le mode par défaut qui ne "casse" aucun site marchand. Le dernier est un blocage quasi complet mais qui vous demande souvent d'ajouter un site marchand dans la section { shop } (cf plus haut). A chacun de voir en fonction de sa paranoïa, moi je suis sur Advanced Wink Tongue

Passer Privoxy en mode \"transparent\"

Un Proxy transparent est un concept ultra-pratique permettant de ne pas configurer les navigateurs sur les machines clientes. Comment cela se passe ? Simplement en y déclarant que la passerelle internet n'est plus votre routeur, mais la machine privoxy. Ainsi, tout le traffic internet va être redirigé sur cette machine qui va ensuite, après filtrage, le rediriger sur internet. Du coup, sans que cela ne soit visible, toutes les machines du réseau utilisent de manière transparente privoxy et ce sans avoir à faire le moindre paramétrage.

Pour arriver à ce résultat, la première chose à faire est de modifier le fichier de configuration de privoxy /etc/privoxy/config et d'ajouter (ou modifier) la ligne accept-intercepted-requests 1.

Ensuite, il nous faut mettre en place le routage. Cela implique qu'iptables soit installé sur la machine privoxy

root#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8118
root#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 8080 -j REDIRECT --to-port 8118
root#echo 1 > /proc/sys/net/ipv4/ip_forward
root# 

Ce n'est pas plus compliqué que cela. La première commande va rediriger tout le trafic venant de l'interface réseau eth1 (à adapter à votre configuration) et destiné au 80 ou 8080, pour le rediriger sur le port 8118, celui de Privoxy. La dernière ligne indique au kernel que la machine est une passerelle et que les paquets doivent être relayés sur Internet.

Après vous pouvez très salement ajouter ces commandes à la fin de /etc/rc.local ou, selon le fonctionnement de votre distribution, les poser dans le script dédiés à iptables.

Notre serveur transparent étant en place, il ne nous reste plus qu'à indiquer aux machines clients que la nouvelle passerelle (gatewaw) est la machine_privoxy. Cela peut se faire en configurant votre routeur, en dur sur les machines ou via votre serveur dhcp.

Enfin, si vous aviez configuré le proxy de votre navigateur, il est temps de supprimer ces réglages. Et lorsque c'est réalisé et que les machines clients ont renouvelées leur IP, vous pouvez vérifier que tout fonctionne et naviguant sur l'une d'entre elles tout en observant les logs sur la machine de privoxy.

Conclusion

Ce tutorial ne couvre pas toutes les possibilités de privoxy, loin de là. C'est une mise en jambe pour un outil indispensable qui même sans paramétrage offre une très bonne protection.

Commentaires

Dab, le 4 September, 2007 - 22:40

Comme d'habitude un excellent article Wink
Je ne comprenais pas pourquoi l'utilisation de transproxy, je pensais qu'une simple redirection iptables vers le port 8118 suffirai comme c'est le cas avec squid. Mais non tu as raison, il s'agit d'une fonctionnalité prévue dans une prochaine version. ( http://www.privoxy.org/faq/configuration.html#TRANSPARENT )

Ulhume, le 4 September, 2007 - 23:25

Merci monsieur Smiling

Pour le transparent proxy, en effet, j'ai été un peu étonné mais bon, tproxy ferra l'affaire en attendant.

Randy11 , le 5 September, 2007 - 08:03

Bonjour,

Encore un bel article fort utile, même pour les windowsiens !

Juste une petite modification peut-être, au début de l'article tu as : "Il y a 10 jours, je vous parlais de [b]Google Analytics et des moyens de se prémunir de ce \"spyweb\"[\b] et de ses", le lien pointe sur la page courante et non sur http://artisan.karma-lab.net/comment-ne-plus-etre-trace-par-google-analy...

Ulhume, le 5 September, 2007 - 09:24

Merci Randy Smiling

C'est corrigé, j'espère que tu n'as pas trouvé trop de fautes Wink

GreenCucumber , le 11 September, 2007 - 16:53

Hello,

Merci pour ceci, mon surf n'en sera que plus limpide Wink

Par contre, petite coquille dans le paragraphe 'Paramétrage du navigateur'. L'URL de configuration donné pointe sur du .Com alors que cela devrait être .Org.

++

Ulhume, le 12 September, 2007 - 07:47

Merci, c'est corrigé Smiling

malic , le 17 September, 2007 - 11:55

Pour le proxy transparant, si j'ai bien compris la chaine, c'est :
Poste client -> passerelle par default - iptable (80) -> passerelle par default - tproxy (81) -> passerelle par default - privoxy (8118) -> internet

Le soucis, c'est quand je fais du ftp ou du https, ça ne doit pas passer, ces services ne sont pas pris en charge par la configuration. Pis les protocoles streamés genre windows média machin et autres vidéo/sons

As-tu validé (rhôôô le méchant mot qui me rapelle le boulôt) pour les autres protocoles?
Allez, je la refais :
As-tu vu pour les autres protocoles?

Ulhume, le 17 September, 2007 - 12:21

Toutes les requêtes sont redirigés vers la gateway (logique) et vu que celle-ci a l'ip-fowarding activé, elles sont ensuite redirigées vers le net (ftp, https, etc..) sauf celle correspondent à la régle iptables (80->81) qui, elles, passent par tproxy/privoxy puis par ensuite sur net.

Dans cette configuration je n'ai constaté aucun soucis, y compris pour le stream (vidéo, audio, etc..), ni pour le ftp et encore moins pour le https. J'utilise cela depuis quelques semaines maintenant et personne ici (moi compris Wink n'a couiner pour se plaindre d'un truc qui ne passait pas.

malic , le 17 September, 2007 - 12:39

Oui, remarque si la machine_de_gaston est configurée comme une passerelle, ça ne pause aucun soucis.

En tout cas, c'est bien ce bulletin, je trouve que c'est une bonne chose de dire que l'on peut vivre sans sollicitation, sans être analyser sans arrêt et sous toutes les coutures.

Merci.

Ulhume, le 17 September, 2007 - 13:38

Merci à toi Smiling

Kenavo ar wech all!

Ulhume, le 17 September, 2007 - 22:52

@malic

A l'évidence il y a une chose qui passe mal avec le proxy, c'est subversion@webdav. J'ai du ajouter une régle de bypass pour le serveur local.

FooFoo , le 8 October, 2007 - 15:17

Bonjour,

effectivement, très bon tutorial qui m'a bien aidé dans la mise en place de transproxy + privoxy. Les connexions HTTP fonctionnent parfaitement (et sont filtrées) mais je n'arrive pas à dire à ma machine de router simplement les paquets adressés à d'autres ports (HTTPS, SMTP, etc...) d'être routés plus loin sans les faire passer par privoxy. Actuellement, ils restent bloqués en entrant dans mon iptables car ils ne correspondent à aucune règle...

Comment faire pour que ces paquets soient simplement routés ?

Merci d'avance de votre aide !

Ulhume, le 8 October, 2007 - 15:22

Pour être sur de correctement répondre, tu utilises une seule machine ou une machine cliente et une machine passerelle ?

FooFoo , le 8 October, 2007 - 20:18

J'utilise le tout sur une même machine actuellement: privoxy + transproxy + iptables sur une Debian Etch. Merci d'avance de la réponse.

Ulhume, le 8 October, 2007 - 20:34

Ok, donc là je doute que cela puisse marcher tel quel car la méthode que je propose fonctionne pour deux machines et exploite la fonction d'auto-forwarding de la passerelle pour ne récuperer _que_ le flux http à rediriger vers le proxy, le reste suivant son cour normal vers la vraie passerelle.

Dans ton cas, il va falloir que tu fonctionnes dans un mode "firewall" je pense (je ne suis pas un guru d'iptables, loin de là), c'est à dire rediriger poser ta règle de redirection du 81 vers le 81, suivit d'une autre régle qui redirige tout vers la passerelle.

iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT

Tu peux aussi jeter un oeil ici, c'est une mine connue d'informations : dead://christian.caleca.free.fr/netfilter/iptables.htm

FooFoo , le 8 October, 2007 - 21:54

Merci pour ta réponse. Je crois que j'ai mal compris ta première question. En fait, j'ai une machine serveur sur laquelle tourne privoxy + transproxy + iptables (Debian Etch) et plusieurs machines client que j'aimerais faire passer par ce proxy avant de sortir sur internet. Mais j'aimerais qu'il n'y ait que le traffic HTTP qui passe par ce proxy, et tout le reste devrait sortir "normalement" via le routeur.

Actuellement, j'ai réalisé la configuration de ton tutoriel mais en plus, j'ai rajouté cette règle dans le firewall du proxy afin de filtrer les connexions HTTP:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 81

Tous les autres protocoles sont également routés vers mon serveur proxy (car la passerelle par défaut des clients est ce serveur proxy) mais ils ne sont pas forwardés plus loin. Pourrais-tu m'expliquer ce que je fais faux, ou alors si je dois rajouter une machine, quels services devraient tourner à quel endroit et quelles règles je dois rajouter dans le firewall.

Merci d'avance de ta réponse car il me semble que je suis un peu perdu...

Ulhume, le 8 October, 2007 - 22:09

Ahhh ok, là ç'est plus simple d'un coup Wink

Donc tu as une machine dite "passerelle" qui est la seule à être connectée à internet. Et tu as N machines clients qui ont toutes dans leur configuration, l'adresse de la machine "passerelle" dans le champ "gateway". A ce stade tes machines clientes n'ont pas accès à internet car si elle vont bien router leur traffic non local vers "passerelle", cette dernière ne va rien en faire. Là tu as deux solutions, soit tu utilises IPTables pour transformer ta machine "passerelle" en routeur (compliqué), soit tu utilises une fonction magique sur la machine "passerelle" lui indiquant de router tout ce qui ne lui est pas destiné vers sa passerelle à elle (donc vers internet).

Sachant cela, si tu part d'une machine "passerelle" sans aucune règle iptables en t'en assurant avec ceci :

iptables -t nat -F
iptables -F

tu n'as plus qu'à activer le mode "forwarding" de la machine "passerelle" comme cela :

echo 1 > /proc/sys/net/ipv4/ip_forward

Ensuite, tu peux vérifier que tout ton traffic internet passe sur tes machines client en essayant un "ping" sur une machine externe (ex. ping www.free.fr). Si à ce stade cela ne passe pas, tu as un problème, soit de passerelle sur ta machine client, soit de passerelle sur ta machine "passerelle".

Une fois que cela marche, tu peux router, avec iptable, une partie du traffic qui transite par la machine passerelle sur le tproxy :

/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 81

Voilà, normalement à ce stade, tout fonctionne. J'espère que je t'ai aidé un peu car au fond je n'ai fait que reformuler le script que j'ai donné plus haut.

FooFoo , le 9 October, 2007 - 06:49

Eh ben tu vois, j'y ai pensé pendant la nuit à ce paramètre ip_forward Smiling , mais j'étais persuadé qu'il était à 1 par défaut (ce qui serait un énorme risque car toutes les machines se comporteraient en tant que routeur). Mais non, il était à 0. Et effectivement, comme ça ça fonctionne. Il ne me reste qu'à appliquer les autres règles iptables afin de sécuriser tout ça et après c'est tout bon.

Merci encore pour ton aide, et encore une fois, félicitations pour tes articles !

Ulhume, le 9 October, 2007 - 06:56

Ravis que cela fonctionne en tout cas et merci pour tes félicitations Smiling N'hésites pas à poser des questions car c'est souvent que les commentaires deviennent plus intéressant que l'article lui-même.

FooFoo , le 9 October, 2007 - 07:59

Ok, alors je profite Smiling ... Encore une petite question qui me passe par la tête: lorsque je fais une mise à jour de mon serveur via APT (Debian), j'émets des requêtes HTTP. J'aimerais également que ces données passent par le proxy avant de sortir. Ce que je fais actuellement, c'est que je définis dans le fichier de configuration de APT que mon proxy est http ://localhost:8118. Dans ce cas, pour le serveur, le proxy transparent ne sert à rien. Est-ce que tu vois une meilleure solution (via iptables sûrement) ?

Ulhume, le 9 October, 2007 - 08:04

ben techniquement, dés que tu as mis en oeuvre le proxy transparent, TOUT le traffic du port 80 est redirigé sur tproxy (port 81) qui lui redirige TOUT vers privoxy (8118). Tu n'as donc AUCUNE configuration de proxy à faire sur tes applications clients (navigateur, lecteur, rss, apt, etc..). Si ce n'est pas le cas, soit ton application n'utilise pas le port 80 (auquel cas tu rajoute une règles iptables du même genre que 80->81), soit tu as un soucis dans ton installation.

Si tu fait un tail -f /var/log/privoxy/* et que tu lances ton apt get, cela doit défiler dans les logs, sinon, quelque chose coince.

FooFoo , le 9 October, 2007 - 09:59

Merci pour ta réponse. Oui, effectivement, pour les clients, tout le traffic HTTP passe par la chaîne tproxy + privoxy. Pour ça je n'ai aucun problème, quelle que soit l'application.

Pour ma question, je parle du cas où la machine sur laquelle sont installés tproxy + privoxy émet une requête HTTP. Dans ce cas-là, la requête va directement sur le routeur sans passer par tproxy + privoxy. Cela est logique, car sur cette machine, la default gateway configurée pointe sur le routeur. Je ne peux pas faire autrement, sinon cette machine ne sais pas comment contacter le reste du monde... D'oû ma question: dans ton cas, comment as-tu fait pour que les requêtes provenant de ta machine proxy puissent également être filtrées ?

Ulhume, le 9 October, 2007 - 10:07

Ahh ok, j'ai compris. Ben en fait, elle ne le sont pas Smiling Ma gateway étant.. une gateway, je n'ai pas éprouvé le besoin de le faire. Je cherche avant tout à protéger les postes clients, le serveur ayant un comportement globalement normée.

Mais si tu veux tenter l'aventure, je pense que le lien que je t'avais posté plus haut devrait t'aider.

Michel Arc , le 15 December, 2007 - 08:11

Bonjour,
J'ai téléchargé Privoxy qui s'est installé tout seul
mais je n'ai pas bien compris la suite
Si je lance http://config.privoxy.org/
J'obtiens :
Privoxy is not being used

Je suis sous MAC OSX - Safari -
Pouvez-vous m'expliquer avec un language simple
Merci - Cordialement - MARC

Ulhume, le 15 December, 2007 - 09:37

@Michel Je n'ai que de très pauvres connaissances sur MacOS, je vais être en difficulté pour vous répondre. Peut-être ce tutorial pourra t-il plus vous aider :
http://www.torproject.org/docs/tor-doc-osx.html.fr

Dab, le 21 November, 2008 - 15:05

Pour le mode transparent, Privoxy doit nécessairement être installé sur la passerelle non ?

Ulhume, le 21 November, 2008 - 16:04

@Dab euh oui, il me semble que c'est marqué d'ailleurs Smiling

implement en y déclarant que la passerelle internet n'est plus votre routeur, mais la machine privoxy

chdorb , le 21 November, 2008 - 18:44

C'est juste pour relever une petite faute dans la partie installation il manque le tiret de apt-get.
J'en profite pour vous féliciter pour ce site, tant au niveau du design que du contenu.
Bonne continuation

Ulhume, le 21 November, 2008 - 19:19

@chdorb merci, c'est corrigé Smiling

Dab, le 21 November, 2008 - 20:07

Oups je devais être dans une phase de somnolence, c'est clairement écrit et c'est dailleurs le but du paragraphe : faire un proxy transparent. Surement les débuts d'alzheimer Smiling

Lindows , le 21 November, 2008 - 20:11

Bonsoir,
Je viens régulièrement consulter votre blog , que j'apprécie particulièrement.
Je suis de temps en temps sur windows Puzzled avec firefox et le plug-in Switch Proxy pour pouvoir surfer avec le proxy de free. Dans la configuration du plug-in j'ai indiqué pour http 127.0.0.1 et le port 8181. Ca marche, mais mon IP réel s'affiche. Une petite idée pour continuer à utiliser le proxy free tout en bénéficiant de privoxy ? Merci

Ulhume, le 21 November, 2008 - 20:53

@Dab en tout cas s'était le premier but de la mise à jour du tuto, j'ai découvert que privoxy pouvoir directement fonctionner en transparence alors que jusqu'à maintenant je me faisais ch*er avec tproxy Smiling On va dire que c'est un ajout récent Wink

Ulhume, le 21 November, 2008 - 20:55

@Lindows il faut que tu chaînes les proxy

Ton navigateur -> privoxy -> proxy free.

Pour faire cela, dans la configuration de privoxy, il faut jeter un oeil à la clause "forward".

GoZ , le 21 November, 2008 - 21:13

Bonsoir,

Ca m'étonne que je sois le seul à l'avoir remarquer, et encore plus qu'il n'y ai que mon privoxy qui utilise ce nom de fichier, mais je n'ai pas "user.actions" mais "user.action"

De plus, mon filtrage n'a pas l'air de fonctionner. Si je vais sur le site "www.liberation.fr" (ou tout autre), rien ne s'affiche dans mon fichier de log. En activant le debug a 1 dans le fichier "config", je vois bien que firefox passe par privoxy mais rien ne me dit que les scripts ont été bloqué comme dans l'exemple donné.

J'ai essayé avec et sans rajouter les filtres supplémentaires mais ça ne change rien.

Une idée ?

Autre sujet, quelles sont les balises que tu utilises pour afficher du texte sur fond gris ?

Dab, le 21 November, 2008 - 21:29

@Ulhume, oui c'est tout nouveau le mode transparent si je relis les premiers commentaires

TitaX , le 21 November, 2008 - 23:36

Merci pour cette article.

Moi avec ton fichier user.action j'ai cette erreur :
Démarrage de privoxy :Nov 21 23:35:41 Privoxy(-1208305984) Info: loading configuration file '/etc/privoxy/config':
Nov 21 23:35:41 Privoxy(-1208305984) Fatal error: can't load actions file '/etc/privoxy/user.action': invalid alias line (2): big-block = +block +handle-as-empty-document

Ma version de privoxy est :
# rpm -qa |grep privoxy
privoxy-3.0.3-9.2.2

Si je commente +handle-as-empty-document cela passe.

Ulhume, le 22 November, 2008 - 00:30

@Goz c'est corrigé pour le nom de fichier, j'imagine qu'il devait s'appeler ainsi avant (le tutoriel est une mise à jour).

J'ai aussi ajouté ma configuration histoire de voir si ça colle avec la tienne. Au passage, lorsque l'on teste, le cache de firefox est un problème. Soit tu installes l'extension WebDevelopper pour désactiver le cache, soit tu prends soin avant chaque test d'aller dans outils/Effacer les traces et de vider le cache.

Pour être sur que je n'avais rien oublié, j'ai viré ma configuration privoxy existante, désinstallé, ré-installé et remis juste ma configuration. Et ça marche directe.

Pour le code sur fond gris, c'est un module perso pour Drupal qui utilise Geshi.

Ulhume, le 22 November, 2008 - 00:30

@Dab ouf, l'honneur est sauf Smiling

Ulhume, le 22 November, 2008 - 00:32

@TitaX Moi je suis à la 3.0.10, cela vient peut-être de là. De toute façon j'ai viré l'alias de mon exemple en mettant un simple { +block }

TitaX , le 22 November, 2008 - 00:42

Merci pour la correction.
C'est en place chez moi et ca marche niquel Smiling

Lindows , le 22 November, 2008 - 12:57

J'ai résolu ce problème. Mais au démarrage de Privoxy, j'ai cette ligne:

Privoxy(000001ac) Info: No thread-safe PRNG implemented for your platform. Using weak 'randomization' factor which will limit the already questionable usefulness of header-time-randomizing actions (disabled by default).


J'ai pas compris cette erreur. Une recherche sur le net n'a pas donné grand chose.

PS: il existerais BFilter qui serais plus simple à installer que Privoxy. Quelqu'un connait ?

Ulhume, le 22 November, 2008 - 15:00

BFilter me semblait moins actif à l'époque où j'ai fais mon choix, ce fût mon seul critère.

Tu utilises quelle plate-forme pour avoir une telle erreur ? Maintenant ce n'est pas létal comme erreur, non ?

Lindows , le 22 November, 2008 - 15:24

Ce problème apparait sous windows. Ca ne plante pas privoxy. Mais est ce que ca n'altère pas les fonctionnalités (d'anonymat) de privoxy ? l'anglais c'est pas mon fort.

Ulhume, le 22 November, 2008 - 19:19

@Lindows
Non, t'inquiète, cela ne change pas grand chose pour toi.

Poster un nouveau commentaire

Le contenu de ce champ est gardé secret et ne sera pas montré publiquement.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • To highlight piece of code, just surround them with <code type="language"> Your code &tl;/code>>. Language can be java,c++,bash,etc... Everything Geshi support.
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Textual smileys will be replaced with graphical ones.
  • Les adresses de pages web et de messagerie électronique sont transformées en liens automatiquement.

Plus d'informations sur les options de formatage

Connexion utilisateur
Les derniers bavardages...