# gopher onion - gopher over TOR
2023-10-11T10:53:48Z

En explorant un peu, j'ai trouvé les arguments énoncés en faveur du protocole gopher intéressants.
=> gopher://bitreich.org/0/con/2022/rec/big-browser.md

Cependant, même si c'est surtout utile pour consulter des documents et peu pour envoyer des données, la question de l'anonymat se pose puisque tout est transmis en clair.

Solène expliquait comment y ajouter une couche de TLS :
=> https://dataswamp.org/~solene/2019-03-07-gopher-server-tls.html

C'est là qu'intervient TOR, un service caché me paraît encore mieux qu'une couche TLS:

=> gopher://bitreich.org/1/onion

Je vais donc reprendre les grandes lignes de ce qui est décrit dans le lien ci-dessus avec quelques détails mineurs pour OpenBSD.

Tout d'abord, on ajoute un service caché dans la configuration de tor:

```/etc/tor/torrc
SocksPort 0
HiddenServiceDir /var/tor/hidden-gopher/
HiddenServicePort 70 localhost:71
```

De cette façon, tor va renvoyer tout ce qui arrive sur le service caché au port 70 vers le serveur gopher local sur le port 71. Ce qui est génial, c'est que c'est toujours le port 70 qui est exposé, c'est beaucoup + pratique:

```
user -----> .onion port 70 <-----> localhost port 71
```

Ici, j'utilise ''localhost'' plutôt que ''127.0.0.1'' car ça permet de proposer l'IPv6 si dans ''/etc/hosts'' vous avez bien précisé:

```/etc/hosts
127.0.0.1 localhost
::1 localhost
```

On peut relancer tor: ''# rcctl restart tor''.
Dans le fichier ''/var/tor/hidden-gopher/hostname'', vous trouvez votre adresse onion. Ce domaine ne changera pas, même si vous changez d'IP ou de machine.

```
# cat /var/tor/hidden-gopher/hostname
of2w2p5f4hsslk63hmo6tid6r7inhlxuxviq4pb5cxg45enswpbrfjad.onion
```

Reste à lancer le serveur gopher en local sur le port 71. Pour cela, geomyidae propose des options très pratiques.
=> gopher://gopher.r-36.net:70/1/scm/geomyidae/

On va créer le fichier ''/etc/rc.d/geomyidae_tor'' pour recopier le fichier rc d'origine et ajouter les options voulues:

```/etc/rc.d/geomyidae_tor
#!/bin/ksh

daemon="/usr/local/bin/geomyidae"
onion="of2w2p5f4hsslk63hmo6tid6r7inhlxuxviq4pb5cxg45enswpbrfjad.onion"
geomyidae_flags="-c -e -h $onion -b /var/gopher/si3t.ch -p 71 -o 70"
daemon_flags="-l /var/log/geomyidae.log -u _geomyidae -g _geomyidae $geomyidae_flags"

. /etc/rc.d/rc.subr

pexp="${daemon}_tor .*"

rc_cmd $1
```

On y retrouve:

  * L'adresse en .onion
  * les options à passer à geomyidae. Notamment:
    * -h $onion permet d'envoyer au client le bon nom de domaine en onion
    * -p 71 indique que le port d'acoute est le 71
    * -o 70 indique que le port à diffuser en sortie reste le 70

Ces 3 dernières options sont particulièrement pratiques si vous ne voulez pas avoir à changer tous vos gophermaps et y préciser le domaine en onion à la place de votre domaine d'origine. En effet, geomyidae va remplacer "server" et "port" par les valeurs appropriées dans un fichier index.gph. Cela évite qu'un lien ne pointe vers votre nom de domaine et pas vers le service caché. Par exemple :

```
[1|log|/log|server|port]
[1|si3tch|/w|server|port]
[0|twtxt.txt|/twtxt.txt|server|port]
[0|public bookmarks|/pub/public_bookmarks.txt|server|port]
[0|positive space|/positive_space.txt|server|port]
[1|pub|/pub|server|port]
```

On termine par ''# rcctl enable geomyidae_tor && rcctl start geomyidae_tor'', et vous pourrez consulter le gopherhole via tor:

```
torsocks lynx gopher://of2w2p5f4hsslk63hmo6tid6r7inhlxuxviq4pb5cxg45enswpbrfjad.onion
```

---
Une réaction?

Envoyez votre commentaire par mail (anonyme):
=> mailto:bla@bla.si3t.ch?subject=gopher-onion

Voici quelques instructions pour utiliser la liste de diffusion et recevoir les réponses à vos messages:
=> https://si3t.ch/log/_commentaires_.txt