Vous avez un nœud Bitcoin et Lightning Network, vous participez à la décentralisation du réseau, bravo ! Cependant il réside un point noir, en particulier si votre noeud est localisé chez vous ou votre bureau… En connaissant votre adresse IP, publiée par le nœud, il est possible de vous localiser. C’est sensible dans le cas où vous y mettez pour l’équivalent de milliers d’euros en bitcoins, une personne mal intentionnée pourrait vous pirater voire vous cambrioler. Heureusement, grâce à Tor vous allez pouvoir cacher tout cela en un temps record
Ce guide est basé sur une installation avec bitcoind
et lnd
sur un Debian 9 Stretch Lite, sur n’importe quelle version Debian 9 ce guide sera fonctionnel.
Qu’est ce que Tor ? Pourquoi Tor ?
Vous connaissez peut-être Tor indirectement en citant le « Deep Web », mais c’est bien plus que cela. Tor est un logiciel libre qui permet de brouiller les communications Internet (TCP) en construisant un circuit de routage IP. En d’autres termes un émetteur communique avec un récepteur en passant par un chemin incompréhensible, la communication devient intraçable d’un point de vue extérieur.
Autant vous dire que Tor est la solution propice à anonymiser les communications de votre nœud Bitcoin.
Tor tord le chemin.
Installer et activer Tor
On va travailler avec le terminale de commandes, si vous avez la version Lite, vous n’avez que cela sous la main en principe.
Installer Tor se fait avec la commande apt update && apt install tor
, on met à jour apt
pour être sûr de télécharger la dernière version des dépendances.
Une fois installé activez le service en tapant systemctl enable tor
et systemctl start tor
.
Configurer Tor
On a installé Tor, nous allons le configurer en prévision des usages avec lnd
et bitcoind
.
La configuration de Tor se trouve dans le chemin /etc/tor/torrc
où torrc
est un fichier de configuration. Connectez-vous en root
pour le modifier avec su root
, puis tapez vim /etc/tor/torrc
ou nano /etc/tor/torrc
si vous préférez nano
pour éditer un fichier. Je vous montre les configurations à décommenter (en retirant le # au début de chaque ligne concernée).
|
|
Modifications faites, tapez systemctl restart tor
pour redémarrer Tor afin qu’il prenne en compte vos modifications.
Et enfin pour voir si Tor est fonctionnel, observez le avec la commande systemctl status tor@default
, vous devriez avec quelque chose comme suit :
|
|
Si votre service Tor n’est pas actif, vous trouverez des informations en tapant journalctl -u tor@default
.
Connecter votre Bitcoin à Tor
Cette configuration fonctionne avec bitcoind
en version 0.19.0.1
, dans mon nœud j’utilise l’utilisateur bitcoin
pour gérer ce service, je vous déconseille d’utiliser root
.
Avant de commencer vous allez devoir chercher votre nom de domaine Tor en tapant ce qui suit :
|
|
blocsiq5epwbye47.onion
est mon nom de domaine (hostname).
Si vous voulez savoir comment avoir un domaine qui commence par un mot ou pseudo comme ici “blocs”, laissez un commentaire plus bas.
Pour configurer Bitcoin vous allez modifier .bitcoin/bitcoin.conf
avec les informations suivantes :
# Vos configurations
# ...
# Ajoutez ou modifiez ce qui suit
proxy=127.0.0.1:9050 # Proxy sur le service Tor
externalip=blocsiq5epwbye47.onion # à remplacer par votre hostname, c'est l'adresse affichée aux autres nœuds du réseau
Redémarrez Bitcoin en tapant bitcoin-cli stop && bitcoind
.
Félicitations votre nœud est désormais sur le réseau Tor. Il ne vous reste plus qu’à faire de même sur LND afin d’anonymiser nos échanges sur le réseau Lightning Network.
Connecter votre Lightning à Tor
La configuration de lnd
est un peu différente de Bitcoin. Sans plus attendre ouvrez .lnd/lnd.conf
et ajoutez ces différentes configurations :
# Vos configurations
# ...
# Ajoutez ou modifiez ce qui suit
listen=localhost # Important pour éviter d'ouvrir votre IP
externalip=blocsiq5epwbye47.onion # Votre hostname Tor
nat=false # A désactiver pour éviter d'associer votre adresse IP à votre nœud
[tor]
tor.active=1
tor.socks=9050
tor.privatekeypath=/var/lib/tor/bitcoin/private_key
Redémarrez votre lnd
en tapant lncli stop
et lnd
pour lancer le service.
Il se peut que vous ayez une erreur de droit relative à Tor. Dans la partie suivante on voit comment la solutionner.
Gérer les droits avec Tor
Vous devez donner accès à différents fichiers de Tor à l’utilisateur qui gère votre lnd
, dans mon cas mon utilisateur est bitcoin
.
Tapez la commande chmod -R 0750 /var/lib/tor
. Cela va donner accès en lecture au groupe debian-tor
sur le dossier /var/lib/tor
.
Maintenant ajoutez l’utilisateur bitcoin
au groupe debian-tor
en tapant usermod -a -G debian-tor bitcoin
en étant connecté sur su root
.
Tor est bien conçu, il ne nous permet pas d’appliquer les droits qu’on veut à ses dossiers pour limiter de trop les ouvrir. Tapez
journalctl -u tor@default
, si les dernières lignes parlent d’une erreur, cela signifie que votre Tor n’est plus en route. C’est un général dû à une mauvaise configuration (mauvais droits sur les dossiers relatifs à Tor, mauvaises configuration danstorrc
, etc.)
A partir d’ici votre nœud est connecté au réseau en passant par Tor ! Il est toujours intéressant d’observer si tout est bien cadré par Tor afin de ne pas avoir de fuite d’IP. Tapez la commande du terminal ci-dessous :
|
|
Nous, ce qui nous intéresse ce sont bitcoind
et lnd
. On va passer tous les ports d’écoute en revue et comprendre si oui ou non ils sont “torrifiés” :
lnd 9735
: C’est le port de LND, “torrifiée” avec le clé privée de votre Tor ;bitcoind 28332
: C’est le port ZMQ de Bitcoin, il sert à la configuration et n’est pas distribué ;bitcoind 8333
: C’est le port debitcoind
qui est caché via Tor (HiddenServicePort dans/etc/tor/torrc
) ;bitcoind 8332
: C’est le port JSON-RPC debitcoind
, nul besoin de le cacher avec Tor si vous ne le distribuez pas ;bitcoind 8332 IPV6
: C’est le port ipv6 debitcoind
qui est caché via Tor (HiddenServicePort dans/etc/tor/torrc
) ;
Enfin pour voir si lnd
a bien considéré vos modifications, tapez lncli getinfo
, vous obtenez un JSON comme suit :
{
"version": "0.8.0-beta commit=v0.8.1-beta",
"identity_pubkey": "03a2c34daf010b3501daf704b5a321e82e1631421b7ffa18dd49014967eda82dc9",
"alias": "blocs.fr",
"color": "#00aaff",
"num_pending_channels": 0,
"num_active_channels": 6,
"num_inactive_channels": 0,
"num_peers": 6,
"block_height": 610817,
"block_hash": "0000000000000000000ff1cf20075afd0df2a52288edd20a7d1cd8a51ca3e32a",
"best_header_timestamp": 1577900732,
"synced_to_chain": true,
"synced_to_graph": true,
"testnet": false,
"chains": [
{
"chain": "bitcoin",
"network": "mainnet"
}
],
"uris": [
"03a2c34daf010b3501daf704b5a321e82e1631421b7ffa18dd49014967eda82dc9@blocsiq5epwbye47.onion:9735"
]
}
Intéressez vous à la partie d’en bas, "uris"
, qui est une liste des adresses distribuées dans le réseau. Ici je n’ai qu’une adresse qui est un .onion, voir ce qui suit le “@”. La partie de gauche est la clé publique de mon lnd.
.onion est un nom de domaine exclusif au routage en oignon comme le fait Tor. Comme vous pouvez l’imaginer, c’est réellement une référence à la plante. Cela vient du routage qui recouvre le message de plusieurs couches, comme un oignon où le coeur est enrobé de plusieurs couches. MrBidouille.
Vérifications faites, vous êtes cachés, bravo !
Merci à Clint pour ses infos sur Tor et JohnOnChain pour m’avoir aidé à la configuration de lnd avec Tor.