Journal Dans lequel on met en place un service caché Tor et l'on génère une adresse idoine pour icelui

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
37
19
nov.
2015
Ce journal a été promu en dépêche : Dans lequel on met un service caché Tor pour le site sauf.ca.

Sommaire

Chers humains bonsoir,

Totalement indépendamment des sinistres évènements que l'ont sait et néanmoins incontestablement congrûment à iceux, j'ai eu l'idée cette semaine de rendre accessible à travers Tor un site que je gère depuis quelque temps déjà, destiné à la moulosphère francophone : Sauf.ca [tor]. Le contenu n'étant pas modéré, je ne peux pas vous garantir que le contenu affiché au moment de votre clic sera safe for work (mais dans l'ensemble ça va, et puis ça reste des petites vignettes).

Sauf.ca

Le principe de Sauf.ca est simple, tous les liens postés sur les principales tribunes (en fait, surtout celle de LinuxFR qui est de loin la plus active) sont archivés, les images et vidéos au format webm (ou liens YouTube) sont visualisables directement sur Sauf.ca, les liens vers des pages HTML sont capturés (avec PhantomJS) et rendus en captures PNG et PDF elles aussi mises à disposition directement sur Sauf.ca.

Par exemple, tout à l'heure j'ai posté un lien vers le module NPM Floréal et les captures de la page sont disponibles en PNG et PDF.

Pour cet exemple avec le site de NPM ça peut sembler inutile, mais il y a d'autres cas dans lesquels ce service peut se révéler utile, voire salutaire :

  • Proxy au boulot qui filtre sur le contenu ;
  • Éviter de laisser des logs de connexion trop explicites (www.humanite.fr ou lecomitedesalutpublic.com/lesbrigandes) ;
  • Prévenir toute exploitation de faille de sécurité (à part éventuellement une faille de libpng qui serait exploitée par Sauf.ca lui-même) ;
  • Ne pas laisser de traces côté site visité ;
  • S'affranchir des divers trackers Facebook, Twitter ou Google sans avoir à utiliser une extension pour ça ;
  • Éviter la lourdeur des sites qui font ramer le navigateur ;
  • Obtenir une archive des sites qui peuvent changer dans le futur, par exemple les tweets gênants souvent supprimés par leur auteur par la suite ;

Et bien sûr, retrouver un lien plusieurs jours ou plusieurs années après l'avoir lu.

  

~~~

Tor

Étant donné que parmi les usages de Sauf.ca se trouvent la protection de la vie privée et le contournement de la censure, Tor m'a semblé être un complément naturel à Sauf.ca, j'ai donc cherché à en faire un "service caché". Non pas dans le but de préserver ma propre sécurité, mais pour celle des visiteurs qui voudraient préserver la leur.

~~~

Services cachés

Sur Tor, les adresses en ".onion" sont résolues par un autre système que le DNS : les seize caractères précédant ".onion" sont une clé publique encodée en base32, la clé privée se trouvant sur le serveur correspondant. J'avoue que je ne connais pas assez bien le protocole pour vraiment saisir comment le réseau arrive à finalement router la requête jusqu'à la bonne machine, mais je vais faire confiance aux devs là-dessus.

La plupart des services cachés (j'apprécie modérément cette appellation, mais c'est le nom officiel) sont des sites accessibles en HTTP, mais comme le DNS le protocole Tor ne s'occupe pas du port, on pourrait donc aussi bien héberger un serveur IRC ou Freeciv.

~~~

Scallion

Les adresses utilisées sont habituellement créées à partir d'une clé générée aléatoirement, mais il est possible, sans compromettre appréciablement la sécurité, d'utiliser des outils qui génèrent des millions de clés jusqu'à en trouver une qui correspond à un pattern intéressant et reconnaissable. C'est ainsi que Facebook est accessible à travers Tor à l'adresse facebookcorewwwi.onion. Plusieurs outils permettent de faire ça, j'ai testé Scallion qui utilise le GPU pour faire ces calculs, et cherché une clé commençant par "saufca".

Avec ma carte Radeon 7950 j'ai eu quelques adresses relativement intéressantes, ou en tout cas mémorables, au bout d'une heure, et j'ai décidé d'utiliser saufca42reinzasa.onion. Ce n'est pas aussi satisfaisant que ce qu'a trouvé Facebook, mais ça reste relativement mémorable et je n'avais pas envie d'y passer des jours.

~~~

Configuration de Tor

Il est extrêmement simple de configurer Tor pour fournir un service caché, d'abord quelques lignes dans le fichier /etc/tor/torrc :

HiddenServiceDir /var/lib/tor/saufca
HiddenServicePort 80 127.0.0.1:80

Cela suffit pour avoir un service avec une adresse générée aléatoirement, mais puisque j'ai utilisé Scallion il me restait à créer le dossier /var/lib/tor/saufca ainsi que deux fichiers à l'intérieur :
* hostname contenant l'adresse du service, dans mon cas "saufca42reinzasa.onion"
* private_key contenant la clé privée, générée par Scallion

~~~

Configuration d'Apache

Dans mon cas, le service caché Tor n'est que l'exact équivalent d'un site déjà accessible en HTTP et en HTTPS, et le contenu n'est pas particulièrement sensible, je n'ai donc pas de précautions particulières à prendre pour cacher son existence. Même si le serveur était compromis (en passant par Internet hors Tor, en exploitant une faille quelconque) aucune donnée secrète ou information compromettante ne serait divulguée.

Dans le cas contraire, il faudrait s'assurer qu'Apache n'est pas accessible de l'extérieur, ou éventuellement servir le site sur Tor et en clair à partir de deux serveurs différents, liés seulement par Tor.

Puisque ça me semble inutile dans ma situation, j'ai simplement pu ajouter le <VirtualHost> ad hoc, en prenant tout de même soin de désactiver les logs d'accès et d'erreur. Même si en tant que service caché je n'ai aucun moyen d'identifier les visiteurs venant de Tor, il me semble préférable de limiter les logs au maximum, dans leur intérêt.

D'autre part, l'utilisation du HTTPS sur Tor semble être superflue, même si cela fait apparemment l'objet d'un débat.

~~~

Configuration côté application

Je me suis aussi assuré qu'en accédant à Sauf.ca par Tor, aucune requête n'était tentée en clair, etc, à cause de chemins en dur qui auraient pu traîner ici ou là, et surtout que le site était entièrement fonctionnel sans Javascript, puisque la plupart des utilisateurs de Tor désactivent les scripts, avec raison, à cause de la facilité avec laquelle un script pourrait faire fuiter l'identité réelle du visiteur.

~~~

Mot de la fin

Pour finir, eh bien, rien de particulier. Il est très simple de mettre en place un service caché accessible sur Tor, plus que je ne le pensais, c'est très bien. Le contenu accessible sur Tor reste très faible, mais je pense que le réseau ne peut que bénéficier de la présence de contenu non sensible comme Sauf.ca (même si je ne m'attends pas à recevoir un traffic énorme venant de Tor !).

Encore une fois, voici donc l'adresse de Sauf.ca sur Tor : http://saufca42reinzasa.onion. Venez nombreux !

La configuration, le navigateur le plus approprié pour utiliser Tor pourraient aussi faire l'objet d'un journal mais je pense que je laisserai à d'autres le soin de le rédiger, n'étant moi-même qu'un utilisateur assez basique de Tor.

  

*

  • # Merci

    Posté par  . Évalué à 10.

    Merci pour l'écriture de cet article, merci pour faire la promotion de TOR, merci pour ne pas verser dans du délire sécuritaire à tout bout de champ.

    • [^] # Re: Merci

      Posté par  (site web personnel) . Évalué à 6.

      et aussi bravo pour avoir réussi à utiliser Scallion !
      Parce que OpenCL à partir d'un code en mono je peux vous dire que rien que la compilation est pas gagnée d'avance…
      Sinon il y a Eschalot qui est quand même plus facile à utiliser.

      • [^] # Re: Merci

        Posté par  (site web personnel) . Évalué à 2.

        (note, il vaut mieux continuer la discussion ici je pense)

        Pour Scallion je n'ai pas eu trop de difficulté, il y a un paquet sur le repos AUR d'Arch Linux, j'ai juste eu à faire un yaourt -S scallion, mettre le bon DISPLAY (j'étais connecté par ssh) et ça a marché tout seul :)

  • # Dans ce cas là, alors…

    Posté par  . Évalué à 1.

    Dans le cas contraire, il faudrait s'assurer qu'Apache n'est pas accessible de l'extérieur, ou éventuellement servir le site sur Tor et en clair à partir de deux serveurs différents, liés seulement par Tor.

    Dans cette configuration alors, il faudrait faire attention à ce que le site soit accessible en HTTPS, car les données échangées entre le serveur TOR et le serveur web (ici Apache) seraient échangées en clair.

  • # Avec Docker

    Posté par  . Évalué à 4.

    Merci pour le journal.

    Si cela intéresse certaines personnes, j'ai fais il y quelques mois une image Docker pour créer facilement des hidden services sur Tor de ce qu'on souhaite.

    https://github.com/cmehay/docker-tor-hidden-service

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.