Ich habe hier bereits erwähnt, dass ich meinen Blog als hidden service mit einer .onion-Domain verfügbar gemacht habe und möchte nun erläutern, wie ich dabei vorgegangen bin.
Disclaimer: Ich habe meinen Blog nur zusätzlich als hidden service
verfügbar gemacht. Wenn jemand eine Seite ausschließlich als hidden
service veröffentlichen will ist uberspace
vermutlich der falsche Platz dafür. Soweit ich weiß liefert der
Webserver dort nur Dateien aus, die unter ~/html/
liegen und diese
sind auch öffentlich erreichbar.
[Update]
Man könnte zwar die Auslieferung per .htaccess
verbieten aber ich weiß
nicht ob das so sauber ist. Wenn euer Leben davon abhängt, dass ihr
nicht mit der .onion-Seite in Verbindung gebracht werdet, solltet ihr
besser wo anders (selbst?) hosten.
Libevent installieren
Um Tor kompilieren zu können wird
libevent benötigt. In diesem
Beispiel verwende ich release-2.1.8-stable
:
$ mkdir ~/build
$ cd ~/build
$ wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
$ tar xvf libevent-2.1.8-stable.tar.gz
$ cd libevent-2.1.8-stable
$ ./autogen.sh
$ ./configure --prefix=${HOME}
$ make
$ make install
Tor installieren
Nun laden wir Tor von der
Download-Seite
herunter, in diesem Beispiel tor-0.3.0.7
:
$ cd ~/build
$ wget https://www.torproject.org/dist/tor-0.3.0.7.tar.gz
$ tar xvf tor-0.3.0.7.tar.gz
$ cd tor-0.3.0.7
Nun müssen wir in Erfahrung bringen wo sich das aktuelle OpenSSL
verbirgt:
$ openssl version -a
In meinem Fall sieht die Ausgabe so aus:
OpenSSL 1.0.2h 3 May 2016
built on: reproducible build, date unspecified
platform: linux-x86_64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DOPENSSL_NO_HEARTBEATS -Wa,--noexecstack -m64 -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
OPENSSLDIR: "/package/host/localhost/openssl-1.0.2h/ssl"
Relevant ist der Pfad in der letzten Zeile, den wir ohne das /ssl
am
Ende zum Kompilieren mit einem aktuellen OpenSSL benötigen:
Nun kompilieren wir Tor mit einem aktuellen OpenSSL:
$ ./configure --enable-static-openssl --with-openssl-dir=/package/host/localhost/openssl --prefix=${HOME}
$ make
$ make install
Tor hidden service konfigurieren
Nun ist Tor installiert und der hidden service kann in der Datei
~/etc/tor/torrc
konfiguriert werden, wobei USER
natürlich durch den
eigenen Benutzernamen zu ersetzen ist:
SocksPort 0
Log notice file /home/USER/etc/tor/tor.log
DataDirectory /home/USER/lib/tor
HiddenServiceDir /home/USER/lib/tor/blog/
HiddenServicePort 80 127.0.0.1:80
Tor auf Uberspace aktivieren
Damit Tor nicht wieder manuell gestartet werden muss, wenn der Dienst sich beendet oder der Uberspace-Server neu gestartet wird bietet es sich an Tor mit den daemontools verwalten zu lassen:
$ cat <<__EOF__ > ~/etc/tor/run
#!/bin/sh
exec ~/bin/tor -f ~/etc/tor/torrc 2>&1
__EOF__
$ chmod +x ~/etc/tor/run
$ ln -s ~/etc/tor ~/service/tor
Tor kann nun mit svc -u ~/service/tor
gestartet, mit
svc -d ~/service/tor
beendet oder mit svc -du ~/service/tor
neu
gestartet werden.
Domain konfigurieren
Nach dem ersten Start mit svc -u ~/service/tor
wird die Datei
~/lib/tor/blog/hostname
angelegt, in der sich unsere .onion-URL, z.B.
skt4odto3ycrngsv.onion
, befindet:
$ cat ~/lib/tor/blog/hostname
Bei mir wurde die Adresse skt4odto3ycrngsv.onion
ausgegeben.
Nun müssen wir die Domain noch dem Uberspace-Webserver bekannt machen, da Zugriffe sonst unterbunden werden:
$ uberspace-add-domain -d skt4odto3ycrngsv.onion -w
Eine erfolgreiche Rückmeldung sieht z.B. so aus:
The webserver's configuration is adapted; it will get active within at most 5 minutes.
Now you can use the following records for your dns:
A -> 95.143.172.208
AAAA -> 2001:1a50:11:0:5f:8f:acd0:f3
Das war es, schon kann eure Website als hidden service aufgerufen werden.
Subdomains
Das Anlegen von Subdomains für den hidden service ist analog zum normalen Anlegen von Subdomains auf uberspace:
$ ln -s /var/www/virtual/${USER}/html/blog /var/www/virtual/${USER}/blog.skt4odto3ycrngsv.onion
Zusätzlich muss die Subdomain aber auch noch dem Webserver bekannt gemacht werden:
$ uberspace-add-domain -d blog.skt4odto3ycrngsv.onion -w
Nun ist die Seite, die unter ~/html/blog abgelegt ist, auch unter
blog.skt4odto3ycrngsv.onion
aus dem Tor-Netzwerk aufrufbar.
[Update 2017-05-31]
Im Schritt Tor auf Uberspace aktivieren muss es natürlich
~/etc/tor/torrc
und nicht ~/etc/torrc
heißen.
[Update 2017-06-07]
- Man kann immer das OpenSSL aus dem Pfad
/package/host/localhost/openssl
zum kompilieren benutzen, auch wennopenssl version -a
etwas anderes ausgiebt, siehe diesen Kommentar. - Der Befehl zum Anlegen des daemons war fehlerhaft, siehe diesen Kommentar.
[Update 2017-06-10]
Bei einem Gespräch per Email mit Uberspace wegen eines anderen Themas
fiel mir auf, dass diese Aussage nicht ganz richtig ist. Wenn man direkt
ein Verzeichnis /var/www/virtual/${USER}/skt4odto3ycrngsv.onion
anlegt, statt nach ~/html/
zu linken, ist die Webseite ausschließlich
im dark web und nicht im clear web erreichbar. Ich bleibe aber trotzdem
bei meiner Empfehlung keinen shared hoster zu nutzen, wenn das eigene
Leben von der Anonymität abhängt.