Tutoriel pour tester dunitor

Intro

Comme certains le savent déjà je suis très attaché a la possibilité de faire fonctionner duniter à l’intérieur du réseau tor, j’ai donc entrepris le chantier permettant d’avoir un nœud fonctionnel entièrement derrière tor, et la bonne nouvelle c’est qu’après un gros WE de dev (+lundi soir) j’ai réussi :slight_smile:

Alors les plus connaisseurs me diront qu’il était déjà possible de faire fonctionner duniter entièrement derrière tor et l’encapsulant dans une VM dont tout le trafic internet serait redirigé vers un proxy tor, oui mais non, cela fonctionne pour le trafic sortant mais pas pour le trafic entrant, comme fait-on pour vous contacter ?

Pour cela il faut que l’api inter-nœud gère nativement le cas, et c’est ce sur quoi j’ai bossé en créant les endpoint WS2PTOR

J’ai déjà deux nœuds WS2PTOR qui tournent sur le réseau g1-test, et l’objet de ce tutoriel est de vous aider à lancer vous aussi un nœud WS2PTOR afin de vérifier si tout cela fonctionne bien :slight_smile:

En fonction des retours que je vais avoir ces prochains jours, et de la stabilité ou pas, cela déterminera si WS2PTOR sera intégrée a la 1.6 officielle ou devra attendre la 1.7. J’espère vraiment pouvoir l’intégrer à la 1.6, mais pour ça il faut qu’on teste intensément cette semaine.

Installer votre nœud dunitor

il suffit d’avoir duniter version 1.6.14 ou supérieur :slight_smile:

Configurer WS2PTOR Privé

Si vous désactivez le WS2P Public alors avoir le Tor Browser qui tourne en parallèle suffira (il suffit de le lancer avant de lancer duniter). En revanche pour du WS2PTOR Public il vous faudra installer tor standalone (cf. WS2PTOR Public).

La configuration doit se faire en une seule commande :

duniter config --tor-proxy <host:port> --reaching-clear-ep <clear|tor|none> [--force-tor]

Il y a 3 éléments de configuration :

  1. Le proxy tor, par défaut il s’agit de localhost:9050 (dépend de la ligne SocksPort du fichier de config de tor)
  2. La politique a adopter vis à vis des nœuds ws2p classiques : les contacter en clair (clear), les contacter via tor (tor), ou ne jamais les contacter (none).
  3. L’option --force-tor ne sert que pour les utilisateurs qui redirigent eux-même le traffic sortant via tor (en l’encapsulant dans une VM par exemple), cela leur permet de dire a leur nœud duniter : « écoute, tu n’utilise pas de proxy mais fait moi confiance, contacte les nœuds tor, je redirige le traffic ».

Pour résumé en général la config d’un noeud full tor sera :

duniter config --proxy-tor localhost:9050 --reaching-clear-ep tor

Et voilà votre nœud utilise désormais le réseau tor pour ses connexions ws2p sortantes (ws2p privé)

Pour effacer toute la config tor et repasser en mode normal (aucun proxy) :

duniter config --rm-proxies

Configurer WS2PTOR Public

Pour avoir votre propre endpoint WS2PTOR, vous devez créer un hidden service, c’est en réalité beaucoup plus simple qu’il n’y parait vous allez voir :

Dans un premier temps installez tor, voici la démarche pour debian et dérivés (ubuntu compris) :

Ajoutez le dépôt de torproject, importez leurs clés gpg, mettez a jours le cache des paquets puis installez les paquets tor et deb.torproject.org-keyring

echo 'deb http://deb.torproject.org/torproject.org jessie main' > /etc/apt/sources.list.d/torproject.list
gpg --keyserver keys.gnupg.net --recv 886DDD89
gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | sudo apt-key add -
apt-get update
apt-get install tor deb.torproject.org-keyring

Pour les autres distributions linux, ou/et si cela ne fonctionne pas chez vous, référez vous a la documentation officielle : https://www.torproject.org/download/download-unix.html.en

Une fois tor installé, il suffit d’éditer le fichier /etc/tor/torrc, décommentez les lignes suivantes :

DataDirectory /var/lib/tor
...
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80

Ce qui compte c’est la ligne HiddenServicePort, choissisez un port qui fera le lien avec votre neoud dunuiter, par exemple 20900 :

HiddenServicePort 80 127.0.0.1:20900

Enregistrez les modifications, puis rechargez la config de tor : service tor reload

Tor viens de vous générer votre domaine .onion dans le fichier /var/lib/tor/hidden_service/hostname

$ cat /var/lib/tor/hidden_service/hostname
3asufnydqmup533h.onion

Ensuite configurez votre nœud duniter en conséquence :

duniter config --ws2p-public --ws2p-noupnp --ws2p-host 127.0.0.1 ws2p-port 20900 --ws2p-remote-host 3asufnydqmup533h.onion --ws2p-remote-port 80

Remplacez bien sur le remote host par votre .onion à vous, vous n’avez plus qu’a démarrer duniter et ça devrais fonctionner :slight_smile:

Configurer BMATOR

Cela est désormais possible en mode BMA passif (c’est à dire sans crawler, c’est le mode par défaut).
Il vous suffit de configurer un remote host de type .onion et duniter se mettra automatiquement en mode BMATOR :slight_smile:

Attention si vous activez le crawler bma, sachez que celui-ci communique en clair sur internet, si vous souhaitez que votre nœud communique exclusivement via tor il ne faut surtout l’activer !
(A moins bien sur de rediriger vous mêmes le trafic sortant en encapsulant duniter dans une VM, dans ce cas pensez a activer l’option --force-tor).

Attention, l’étape de synchronisation (commande sync) communique en clair sur internet, si vous souhaitez absolument garder l’emplacement de votre nœud secret il vous faudra rediriger manuellement la commande sync, ou faire la sync sur une autre machine puis transférer manuellement la backup de données sur la machine de votre nœud tor.

Vous pouvez donc déjà avoir un nœud full tor (sauf pour l’étape de synchronisation).

7 J'aimes

@elois, dans ta fiche de pair, ans le endpoint WS2PTOR, je crois que ton path n’est pas cohérent.
Sauf erreur, il manque un / devant ws2pgt.

@kimamila c’est volontaire je trouve le endpoint plus jolie sans le / :slight_smile:
Duniter l’ajoute automatiquement, d’ailleurs mon nœud mirroir full tor est bien connecté a mon nœud membre donc ça fonctionne :slight_smile:

J’en ai profiter pour déployer un deuxième nœud miroir full tor sur un de mes serveurs et il reste bien synchroniser au reste du réseau pour l’instant les tests sont très prometteurs :slight_smile:

Prochaine étape, tester un nœud membre en full tor et voir s’il arrive a soumettre ses blocs :wink:

Ça y ai j’ai passer mon nœud membre g1-test en mode full tor, et il a bien réussi a trouver et soumettre son premier bloc a travers le réseau tor : https://g1-test.duniter.org/blockchain/block/79746

1 J'aime

Mon nœud g1-test étant désormais en mode full tor, il vous faudra également passer par tor pour accéder à g1-test-monit :

http://3asufnydqmup533h.onion/gt-monit/

Je ne connais pas TOR, mais est-ce que ça signifie que tu supprimes l’accès web classique ?

Un site en .onion nécessite de passer par Tor pour y accéder. Il y a un Browser permettant cela:
https://www.torproject.org/projects/torbrowser.html.en

1 J'aime

Pas forcément tout dépend de l’option choisie. Qui plus est un nœud full tor peut très bien contacter un nœud classique, mais si le nœud soit disant full tor est accessible par le web classique alors son emplacement n’est plus secret, il est “dévoilé”, alors je pourrais garder g1-test-monit accessible en clair mais l’intérêt de tor c’est de pouvoir garder secret l’endroit ou se trouve ma machine alors autant passer tout mes points d’accès derrière un hidden service :wink:

Tu peut aussi accéder a Tor depuis ton navigateur classique en configurant un simple proxy sock, c’est ce que je fais sur mon firefox, j’utilise l’extension foxyproxy avec un proxy tor qui s’active automatiquement pour les url en .onion, ainsi je peut y accéder automatiquement :

@stephane, @elois : OK, je comprends l’idée.

Bon vu que g1-test.elois.org ne fonctionne plus pour ceux n’utilisant pas TOR, voici une adresse de secours : https://g1-test.cgeek.fr/modules/currency-monit/

4 J'aimes

En fait le problème ne viens pas de foxyproxy mais de firefox, ce navigateur a tendance a donner trop d’infos, ce qui casse l’anonymat, c’est pourquoi le tor browser est préférable pour être sûr, après si tu sais bidouiller tu peut configurer firefox pour minimiser ton empreinte :wink:

Sachez qu’il existe des proxys tor2web permettant d’accèder a un .onion depuis le web classique, cependant ces proxys tor2web sont énormément sollicités donc très lent mais ça fonctionne :

http://3asufnydqmup533h.onion.link/gt-monit/

*a noter que les proxy tor2web ne relayent pas les websocket

L’utilisation des “tor2web” est à vos risques et périls car très surveillé

1 J'aime

tout à fait, vous n’êtes pas du tout anonymisé par un tor2web, c’est juste un moyen simple d’accéder a un hidden service sans installer tor :slight_smile:

Bon après une semaine de tests intensifs avec plusieurs nœuds, y compris sur G1 !!!
je valide, la branche proxy est stable, la PR est soumise :slight_smile:

J’ai tester également un nœud classique avec le code de la branche proxy, aucun soucis constaté. Je pense donc qu’on peut merger, de toute façon en cas de souci critique je me tiendrais disponible dés que possible pour débugger :wink:

1 J'aime

De toute manière on va commencer avec une pre-release pour faire des tests manuels.

1 J'aime

Le premier autre membre ayant réussi a se connecter a un de mes nœuds full tor est donc aeris, pas étonnant c’est un grand spécialiste de Tor mais du coup je lui doit 100 Ğ1 :stuck_out_tongue:

Pourtant c’est simple vous n’avez juste pas essayer :wink:

4 J'aimes

Bon je vais essayer pour voir :wink:

seulement j’ai quelques questions :

  • L’installation peut se faire sur un Raspberry Pi ?

  • la commande :
    git clone https://github.com/duniter/duniter -b proxy
    est toujours d’actualité ?
    [EDIT] j’obtiens ce message :
    fatal: La branche distante proxy n'a pas été trouvée dans le dépôt amont origin
    [EDIT2] du coup j’ai lancé la commande :
    git clone https://github.com/duniter/duniter et c’est passé…
    Ensuite dans le répertoire Duniter :
    /tmp/duniter $ yarn
    yarn install v1.3.2
    [1/5] Validating package.json…
    [2/5] Resolving packages…
    [3/5] Fetching packages…
    [4/5] Linking dependencies…
    warning “ddos > response > bl@0.7.0” has unmet peer dependency “stream-browserify@*”.
    [5/5] Building fresh packages…
    success Saved lockfile.
    $ tsc
    Done in 509.48s.
    mais impossible de réaliser cette commande bin/duniter --version
    -bash: bin/duniter: Aucun fichier ou dossier de ce type

  • Dans l’installation manuelle de Duniter, il est indiqué d’installer nodeJS en version 6.
    C’est toujours vrai ?

Ça dépend de la branche. Si tu es sur master (tu peux vérifier avec git branch), alors c’est NodeJS 6 qu’il te faut. Si tu es sur la branche 1.6 ou dev, NodeJS 8 sera nécessaire.

oui

Non elle a été mergée dans la 1.6 depuis longtemps, si tu a duniter 1.6.14 c’est bon :wink:

Faut que je mette à jours le tutoriel du coup :confused: