http://ewhfzfyahko3kles.onion:81

Peer-to-Peer - p2p

Einleitung

Wissen Sie, nachdem ich verstanden habe, was peer-to-peer-Netzwerke sind, kann ich ihnen sogar eines programmieren. Und das mache ich auch. Es wird aber kein sinnvolles, sondern eines was als Quelltext vorliegt, und ihnen demonstriert, was eines ist. Wenn jemand zufälliger Weise aber nicht weiß, was p2p-Netzwerke sind, kann er oder sie trotzdem Web- und Mailserver betreiben. Ich selber betreibe schon lange Mail-Server und Webserver und kenne mich damit ganz gut aus. Es stimmt nicht, man müsse dafür wissen, was p2p-Netwerke sind, weil, gerade zum Betrieb von Web- und Mailservern, sind gerade keine p2p-Netzwerke notwendig. Mailserver und Webserver beruhen auf der klassischen Server-Client-Infrastruktur. Und diese ist eben der Gegensatz zu p2p. Ich habe p2p nie gebraucht, und während ich gut Server aufsetzen konnte, habe ich p2p nie gebraucht und konnte deswegen gut Mail- und Webserver aufsetzen. Umgekehrt darf das nicht darüber hinwegtäuschen, dass auch p2p Server und Clients verwendet, von dem TCP/IP-Schichtenmodell wird hier nicht abgesehen. Es geht um die Infrastruktur und das ist eine vollkommen andere Frage. Auch hier gibt es Server und Client. Ich mache ein Beispiel. Generell ist wichtig, dass Server und Client egal auf welchen Host, auf demselben Port aufbauen. Schauen wir HTTP an, das läuft auf Port 80 und SMTP auf Port 25. Generell würden alle Teilnehmer im p2p-Netzwerk denselben Server-Port verwenden. Das soll über eines nicht hinwegtäuschen. Ich selber verwende Hosts, auf denen läuft Server und Client. Und zwar was das Web betrifft. Webserver und Browser. Das eine Client, das andere Server. Das ist aber kein peer. Ein peer wäre es, wenn wir zum Beispiel mit einem Webclient auf eine Seite zugreifen, wir sind der HTTP-Client, die Seite wird gespeichert. Und nachdem sie das ist, werden wir mit unserem Host, auch zum Server. Dann gibt es mehrere Sever. Der nächste Client hat dann die Wahl geht er zum einen Server zu gehen oder zum anderen. Ich habe allerdings schon p2p-Netzwerke verwendet: Ganz früher habe ich mal BitTorrent ausprobiert.

Die Codes

Ich programmiere ihnen kein http-p2p-Netzwerk. Das wäre es nämlich. Mit einem Client geht man zum http-Server. Und der Client lädt die HTML-Seite herunter und fungiert auch als Client. Ich programmiere eine Stille-Post. Der Client verbindet sich mit dem Server. Und der Server sendet dem Client eine Nachricht, eine kurze Textbotschaft. Die wird in der Konsole vom Client angezeigt. Der Client speichert sie und sendet seine IP-Adresse an den Server. Er fungiert jetzt danach aber selber als Server. Aber, was die Textbotschaft betrifft. Der nächste Client fragt den ersten Server nach der IP-Adresse des letzten Servers, die der letzte Server an den ersten gesendet hat und fragt den letzten nach der Message usw.

Abschliessend

So, ich habe es hinbekommen. Den Code poste ich auf meiner Seite. Das entscheidende ist. Das ist der erste Schritt, zum p2p-Netzwerk und damit beginnen wir es zu begreifen. Anstatt, dass wir stille Post machen, können wir auch sämtliche Adressen der Clients uns merken und kommt ein neuer Client, dann übergeben wir irgendeine Adresse. Das andere ist: Unser p2p-Netzwerk ist jetzt etwas speziell - aber so, dass es eindeutig erläutert, wie es geht. Anstatt, dass wir Files Sharen, Sharen wir eine Message, die wir einfach mit send() und recv() austauschen

Das Darknet - tor

Unterscheidung:
  1. File-Sharing: Bittorrent, Napster, idonky
  2. Tor - Onion
Das Darknet muss nicht unbedingt Filesharing sein. Es kann sich auch um eine Homepage handeln, die zum Beispiel PHP und SQL benutzt und zum Beispiel eine Tauschbörse anbietet - doch diese muss nicht unbedingt Files austauschen. Eine Homepage kann ohne jedes PHP und SQL eine Tauschbörse sein und außerdem im Darknett.


Teil II: Tor - Server. Wir machen keine Ideologie, sondern Praxis und fangen gleich an. Wie richten wir den Tor-Server ein?

Generell gibt es bei Tor, gleich zwei Dinge:
  1. Einen Tor-Browser
  2. Einen Tor-Server
Den Browser können wir auch unter Android installieren - einfach im Smartphone bei den Apps, nach Tor-Browser suchen.

Die Installation des Browsers unter Linux kann schwieriger sein - etwas schwieriger - weil zum Beispiel unter Debian 9.0 "Strech", die Paketquellen nicht automatisch eingebunden sind. Einfach googlen und gucken, wie man sie einbinden muss, um den Tor-Browser zu installieren

Unter Debian 9.0 "Strech" ist der Server aber einfach installiert - der ist quasi schon da und das geht mit

apt-get install tor

Das ganze braucht ca. 11.2 MByte. Und, zur Erklährung: apt-get ist unter Debian unser Programm der Paketeverwaltung um neue Pakete zu installieren, das install sagt uns, neues Programm installieren - das ist eine Option. Und tor ist in dem Fall unser Kandidat.

Die Debian-Pakete-Verwaltung, viele Programme, fangen der Paketeverwaltung fangen hier mit apt an, sucht in den Quellen, die auf Adressen im Netz verweisen, nach einem Paket, das tor heißt.

Wenn wir tor wieder los werden wollen geben wir ein:

apt-get remove tor

Jetzt müssen wir den Tor-Server einrichten. Und eines sage ich: Es hat keinen Zweck, wenn wir eine Homepage im Darknet anbieten wollen, aber keinen Webserver haben.
Dafür alleine reicht tor nicht. Wir brauchen trotzdem einen. Zum Beispiel apache2, auch, wenn manche sagen, für tor sollte man einen anderen nehmen - ich nicht! Ich benutze nur apache2, kenne nur den und empfehle nur den weiter.

Wenn wir den installieren wollen machen wir:

apt-get install apache2

Den müssen wir konfigurieren, oder zumindest in

/var/www/html

ein paar HTML-Dateien hineinlegen.

Jetzt gibt es bei tor zwei elementare Pfade

/etc/tor/torrc

und

/var/lib/tor/hidden_service/

  1. /etc/tor/torrc
  2. /var/lib/tor/hidden_service/
rc wie immer Konfigurationsskript. Hier tragen wir ein

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 81 127.0.0.1:81

Entscheidend ist: Unser Tor-Server ist ein Server, das heißt ein Service. Kein einfaches Programm. Diese können wir generell starte und stoppen mit

service tor start
service tor stop
service tor restart


In dem Fall tor. Das geht auch mit apache2

Jetzt, das lässt uns gerade kalt, was in

/etc/tor/torrc

drin steht. Außer, und das sollte es auch, lassen Sie es lieber dabei

HiddenServiceDir /var/lib/tor/hidden_service/

Jetzt müssen wir nach der Installation den Tor-Server neu starten

service tor restart

Und wir finden in

/var/lib/tor/hidden_service

eine Datei namens hostname, also:

/var/lib/tor/hidden_service/hostname

Wir öffnen diese und finden darin einen Namen, wie:

ewhfzfyahko3kles.onion

Das ist das Übliche und wir stellen, die Endung .onion fest. Und das heißt, dieser Name ist über das Darknet erreichbar - typischer Namen .onion. Das davor ist kryptisch und besteht immer aus Ziffern und Buchstaben, und sieht so ähnlich oder so aus.

Wichtig ist jetzt!

/var/lib/tor/hidden_service

Dieses Verzeichnis, erstellen wir nicht selber. Vor dem

service tor restart

ist in

/var/lib/tor

kein Verzeichnis namens

hidden_service

Und das sollen wir nicht selber anlegen. Wie kommen wir zu dem Namen? Na ja, der steht in

/etc/tor/torrc

Wie oben beschrieben drin. Und den sollten wir nicht ändern. Wichtig ist: Wir erstellen das Verzeichnis

hidden_service

Niemals selber. Und es muss die Besitzer unter Debian, mit

u: debian-tor
g: debian-tor

Haben. Daran nichts ändern. Wenn wir Tor nun neu einrichten und deswegen wieder eingeben:

service tor restart

Dann: Muss dieses Verzeichnis gelöscht sein. Das Verzeichnis darf nicht da sein. Und, wenn wir

service tor restart

wieder aufrufen und das Verzeichnis ist weg, es wird neu angelegt. Damit ist auch der alte .onion Name weg. Wir kriegen einen neuen. Aber damit müssen wir leben.

Jetzt zu den Hostnamen. Es gibt unter Linux generell den Hostnamen

/etc/hostname

oder

/etc/hosts

Das dürfen wir nicht miteinander verwechseln. Wir haben zwei:
  1. /etc/hostname
  2. /var/lib/tor/hidden_service/hostname
Das sind unterschiedliche Namen und zweiterer entsteht ausschlie&szli;lich bei tor.

Jetzt müssen wir gucken. Im zweiten Schritt, müssen wir apache2 erneut einrichten für Tor

apache2 und tor

Das sind generell unterschiedliche Dinge. Wir richten zwar tor ein, aber wir müssen unabhängig voneinander daneben apache2 entsprechend einrichten. Wir müssen beide einrichten. Wir können zwar einen apache2-Webserver einrichten, der kein Tor hat, oder wir können Tor sogar für die Tor-spezifischen Aufgaben nutzen. Aber, wenn wir Tor für die Darstellung einer Homepage im Netz benutzen wollen, müssen wir auch apache2 einrichten. Blos, der Witz ist, die Einrichtung geschieht quasi beinahe unabhängig voneinander. Wir richten hier tor ein, da apache2, und das hängt scheinbar nicht arg voneinander ab. Bis auf an zwei Stellen. Das erste wäre:

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 81 127.0.0.1:81

Hier haben wir den Tor-Service auf Port 81 gelegt. Dazu nachher mehr. Da kann man etwas ändern.

Aber: Schauen wir uns die Zeile:

HiddenServicePort 81 127.0.0.1:81

an, ohne etwas zu ändern. Dann müssen wir jetzt apache2 für diesen Port 81 einrichten.

Dazu müssen in die

/etc/apache2/apache2.conf

Neben dem

Listen 80

ein

Listen 81

Einfügen. Also:

Listen 80
Listen 81

Wenn wir trotzdem den Host als normalen Webserver weiter verwenden wollen.

Jetzt, was wichtig ist: Die HTML-Seiten und PHP-Skripte und eben alle Dateien zur Homepage gehören nicht, in das Verzeichnis

/var/lib/tor/hidden_service

Sondern zum Beispiel, bei apache2 in

/var/www/hidden_service

Die normalen Dateien sind in

/var/www/html

Neben ../html legen wir hier ../hidden_service an an, oder wie auch immer. Das hat nichts mit

/var/lib/tor/hidden_service

zu tun und das muss und darf auch nicht, den Besitzer und die Gruppe debian-tor haben, sondern zum Beispiel

u: david g: david

Wie üblich für unseren Nutzer, den apache2 verwendet. Und generell, auch die HTML-Dateien für tor, sind nicht in

/var/lib/tor/hidden_service

Sondern die müssen getrennt in

/var/www/hidden_service

hinein. Und jetzt richten wir apache2 vollständig ein. Zunächst in

/etc/apache2/apache2.conf

wie gesagt

Listen 80
Listen 81

Und, dann: In die

/etc/apache2/sites-enabled/000-default.conf

fügen wir ein:

<VirtualHost *:81>
ServerName ewhfzfyahko3kles.onion
ServerAdmin david@ituenix.de
DocumentRoot /var/www/hidden_service/
</VirtualHost>

Wenn wir entsprechend David Vajda heißen, die Homepage, ituenix.de und wir den entsprechenden Onion-Namen haben.

abschließend etwas zum Port

Wenn wir angeben,

HiddenServicePort 81 127.0.0.1:81

In /etc/tor/torrc/

, dann wird der Port 81, an zweiter Stelle, das ist der, wie wir ihn im Tor-Browser aufrufen, auf den apache2-Port 81 an erster Stelle umgeleitet.

Wenn wir den apache2 konfiguriert haben, mit

Listen 81

dann entspricht diese 81, der ersten in

HiddenServicePort 81 127.0.0.1:81

Dem zweiten entspricht der Port, wie wir ihn nachher im Tor-Browser aufrufen, also:

ewhfzfyahko3kles.onion:81

Das Loopback-Device, also das 127.0.0.1 muss so bleiben.

Abschlißend - endgültig

Wir müssen natürlich apache2 neustarten:

service apache2 restart


Außerdem, was ist jetzt erreicht? Erreicht ist, diese Homepage erreichen sie über keinen normalen Browser, es sei denn sie haben ihn entsprechend eingerrichtet, sei es, dass sie in Firefox irgendwelche Add-On's installieren, das habe ich nicht ausprobiert. Oder irgendetwas in den Einstellungen machen. Sie erreichen ihn generell über den Tor-Browser. Das indem sie in die Adressleiste, des Tor-Browsers:

http://ewhfzfyahko3kles.onion:81

Eingeben. Oder, etwas derart. Womit sie keinen Erfolg haben werden, ist mit

http://www.ituenix.de:81

Oder mit

http://37.24.242.164:81

Natürlich können sie, wenn sie neben dem Tor-Server, den Apache2 für eine normale Homepage weiter laufen haben, ihre Homepage über

http://www.ituenix.de:80
http://37.24.242.164:80
http://www.ituenix.de
http://37.24.242.164


erreichen. Wenn Sie David Vajda sind, oder eben einen anderen Namen. Das ist dann aber die Homepage und nicht die, die über den Tor-Server angeboten wird. Das ist dann nicht das, was über den Tor-Server angeboten wird.

Der Vorteil ist: Sie k&ouuml;nnen nicht einfach über google.de zum Beispiel diese Seiten finden. Das ist schon deswegen nicht möglich, weil sie nicht im DNS ist. Sie könnten aber zum Beispiel alle IP-Adressen für ihren Suchdienst nach oben zählen. Das geht aber nicht. Weil das, was über den Tor-Server angeboten wird, kann weder über den FQDN ihrer normalen Seite erreicht werden, noch über die IP-Adresse.