Rendez-vous sur Arrakis

C'est lorsque nous croyons savoir quelque chose qu'il faut justement réfléchir un peu plus profondément. F. Herbert

Anonyme sur internet avec tor, polipo et privoxy et filtre de pubs

Quand je dis anonyme, c'est en fait “quasi-anonyme”. Gardez bien cette idée en tête, sur la toile, vous ne vous protégez jamais assez!

Au passage, nous filtrerons des pubs et autres boutons de type facebook avec privoxy.

Ce que cet article va présenter, c'est l'utilisation de tor associé à privoxy afin de filtrer les informations que vous envoyez sur le net, et avec en plus l'utilisation de polipo qui va pouvoir mettre en cache des données afin d'accélérer votre navigation.

Installation et configuration

Sur debian, on installe les 3 paquets suivants :

apt-get install tor polipo privoxy

Privoxy

Ensuite, on configure privoxy en lui disant d'écouter polipo. On ajoute donc dans le fichier /etc/privoxy/config la ligne suivante :

forward / localhost:8123

Polipo

Vous pouvez maintenant configurer polipo dans le fichier /etc/polipo/config. Les lignes suivantes sont les plus importantes :

dnsUseGethostbyname = yes
# Envoyer moins d'informations personnelles sur le net :
censoredHeaders = from, accept-language
censorReferer = maybe
# pour tor
socksParentProxy = "localhost:9050"
socksProxyType = socks5

Pour le reste, référez-vous aux conseils de polipo pour[3]. Il faudra juste éviter de préciser un proxy parent, ça, c'est déjà fait.

Vous pouvez maintenant redémarrer les services :

service privoxy restart
service polipo restart

[3] : http://www.pps.univ-paris-diderot.fr/~jch/software/polipo/tor.html

Utilisation

Il ne vous reste plus qu'à configurer votre navigateur pour qu'il utilise le proxy localhost sur le port 8118

Désactivez le cache du navigateur pour éviter d'enregistrer les choses deux fois.

Pour firefox, Allez dans Edition > Préférences > Avancé > Paramètres puis précisez ainsi :

Vous remarquez que l'on précise le proxy privoxy, qui filtre d'abord le contenu avant qu'il soit mis en cache par polipo.

Pour que tout le système profite du duo, ajoutez dans votre fichier ~/.bashrc ou ~/.profile :

# Pour utiliser polipo et privoxy
http_proxy=http://127.0.0.1:8118/
HTTP_PROXY=$http_proxy
export http_proxy HTTP_PROXY

Vérification

Consultez la page suivante pour voir si vous utilisez bien tor : https://check.torproject.org/

Configuration avancée de privoxy

Filtre des pubs avec privoxy

Privoxy peut servir à bloquer les pubs comme la célèbre extension Adblock plus de firefox. Sauf que là, ça fonctionnera pour n'importe quel navigateur.

Un monsieur adorable, Andrwe Lord Weber, a créé un script pour convertir les listes de type adblock dans la syntaxe privoxy.

Vous pouvez retrouver son script sur sa page ou une copie sur mon serveur qui utiliser les listes easyprivacy, easylist et easylist-fr.

Le script est simple à utiliser, compléter la variable URLS par les adresses de listes que vous voulez utiliser. Vous pouvez en trouver plusieurs en suivant ce lien. Par exemple, pour moi ça donne ceci :

URLS=("https://easylist-downloads.adblockplus.org/easylist.txt" "https://easylist-downloads.adblockplus.org/easyprivacy.txt" "https://easylist-downloads.adblockplus.org/liste_fr.txt")

Puis ensuite, avec les droits super-utilisateur, exécutez le script :

bash ./privoxy-blocklist.sh

Ajouter/modifier des règles

Pour éditer les règles de privoxy plus simplement qu'en éditant le fichier user.action à la main, vous pouvez aller à l'adresse http://p.p pour éditer tout ça en quelques clics.

Cependant, il faudra au préalable changer cette ligne dans /etc/privoxy/config :

enable-edit-actions 0

en

enable-edit-actions 1

Et recharger privoxy

#service privoxy restart

Les règles acceptées par privoxy peuvent être des expressions régulières. Cela le rend très puissant, et peut faire gagner du temps pour les plus habitués.

En attendant, voici un exemple de fichier user.action qui filtre déjà pas mal de choses :

# This is the place to add your personal exceptions and additions to
# the general policies as defined in default.action. (Here they will be
# safe from updates to default.action.) Later defined actions always
# take precedence, so anything defined here should have the last word.

# See http://www.privoxy.org/user-manual/actions-file.html, or the
# comments in default.action, for an explanation of what an "action" is
# and what each action does.

# The examples included here either use bogus sites, or have the actual
# rules commented out (with the '#' character). Useful aliases are
# included in the top section as a convenience.

#############################################################################
# Aliases
#############################################################################
{{alias}}
#############################################################################
#
# You can define a short form for a list of permissions - e.g., instead
# of "-crunch-incoming-cookies -crunch-outgoing-cookies -filter -fast-redirects",
# you can just write "shop". This is called an alias.
#
# Currently, an alias can contain any character except space, tab, '=', '{'
# or '}'.
# But please use only 'a'-'z', '0'-'9', '+', and '-'.
#
# Alias names are not case sensitive.
#
# Aliases beginning with '+' or '-' may be used for system action names
# in future releases - so try to avoid alias names like this.  (e.g.
# "+crunch-all-cookies" below is not a good name)
#
# Aliases must be defined before they are used.
#
# These aliases just save typing later:
#
+crunch-all-cookies = +crunch-incoming-cookies +crunch-outgoing-cookies
-crunch-all-cookies = -crunch-incoming-cookies -crunch-outgoing-cookies
allow-all-cookies  = -crunch-all-cookies -session-cookies-only -filter{content-cookies}
allow-popups       = -filter{all-popups} -filter{unsolicited-popups}
+block-as-image     = +block{Blocked image request.} +handle-as-image
-block-as-image     = -block

# These aliases define combinations of actions
# that are useful for certain types of sites:
#
fragile     = -block -crunch-all-cookies -filter -fast-redirects -hide-referer -prevent-compression
shop        = -crunch-all-cookies allow-popups

# Your favourite blend of filters:
#
myfilters   = +filter{html-annoyances} +filter{js-annoyances} +filter{all-popups}\
            +filter{webbugs} +filter{banners-by-size}

# Allow ads for selected useful free sites:
#
allow-ads   = -block -filter{banners-by-size} -filter{banners-by-link}
#... etc.  Customize to your heart's content.

## end aliases ########################################################
#######################################################################

# Begin examples: #####################################################

# Say you have accounts on some sites that you visit regularly, and you
# don't want to have to log in manually each time. So you'd like to allow
# persistent cookies for these sites. The allow-all-cookies alias defined
# above does exactly that, i.e. it disables crunching of cookies in any
# direction, and the processing of cookies to make them only temporary.
#
{ allow-all-cookies }
debian-fr.org
debian-facile.org
crunchbang-fr.org
dragongoserver.net
9gag.com
#.sourceforge.net
#sunsolve.sun.com
#slashdot.org
#.yahoo.com
#.msdn.microsoft.com
#.redhat.com

# Say the site where you do your homebanking needs to open popup
# windows, but you have chosen to kill popups uncoditionally by default.
# This will allow it for your-example-bank.com:
#
{ -filter{all-popups} }
.banking.example.com

# Some hosts and some file types you may not want to filter for
# various reasons:
#
{ -filter }

# Technical documentation is likely to contain strings that might
# erroneously get altered by the JavaScript-oriented filters:
#
#.tldp.org
#/(.*/)?selfhtml/

# And this stupid host sends streaming video with a wrong MIME type,
# so that Privoxy thinks it is getting HTML and starts filtering:
#
stupid-server.example.com/

# Example of a simple "block" action. Say you've seen an ad on your
# favourite page on example.com that you want to get rid of. You have
# right-clicked the image, selected "copy image location" and pasted
# the URL below while removing the leading http://, into a { +block{reason} }
# section. Note that { +handle-as-image } need not be specified, since
# all URLs ending in .gif will be tagged as images by the general rules
# as set in default.action anyway:
#
{ +block{Nasty ads.} }
www.example.com/nasty-ads/sponsor.gif

# The URLs of dynamically generated banners, especially from large banner
# farms, often don't use the well-known image file name extensions, which
# makes it impossible for Privoxy to guess the file type just by looking
# at the URL.
# You can use the +block-as-image alias defined above for these cases.
# Note that objects which match this rule but then turn out NOT to be an
# image are typically rendered as a "broken image" icon by the browser.
# Use cautiously.
#
{ +block-as-image }
.doubleclick.net
/Realmedia/ads/
ar.atwola.com/

# Now you noticed that the default configuration breaks Forbes
# Magazine, but you were too lazy to find out which action is the
# culprit, and you were again too lazy to give feedback, so you just
# used the fragile alias on the site, and -- whoa! -- it worked. The
# 'fragile' aliases disables those actions that are most likely to break
# a site. Also, good for testing purposes to see if it is Privoxy that
# is causing the problem or not.
#
{ fragile }
#.forbes.com

# Here are some sites we wish to support, and we will allow their ads
# through.
#
{ allow-ads }
#.sourceforge.net
#.slashdot.org
#.osdn.net

# user.action is generally the best place to define exceptions and
# additions to the default policies of default.action. Some actions are
# safe to have their default policies set here though. So let's set a
# default policy to have a 'blank' image as opposed to the checkerboard
# pattern for ALL sites. '/' of course matches all URLs.
# patterns:
#
{ +set-image-blocker{blank} }
#/

#
{+block{Facebook "like" and similar tracking URLs.}}
www.facebook.com/(extern|plugins)/(login_status|like(box)?|activity|fan)\.php
platform.twitter.com/widgets/follow_button?
plusone.google.com
.facebook.
.fbcdn.
# yahoo
s.yimg.com
.analytics.yahoo.com
# google
.google-analytics.
.googleadservices.com
plusone.google.com
.googlesyndication.com
# twitter
platform.twitter.com/widgets

{+block{Block web bugs} +handle-as-image}
.2mdn./.*\.[gif|jpg|png]
feeds.feedburner.com
.feedburner.com/.*[gif|jpg|png]$
s.ytimg.com/.*pixel.*gif$

#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.orgok.com/

# Faire croire que l'on vient du site
{ +hide-referrer{forge} }
/

Allez plus loin :

Hébergez un noeud tor