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:
File-Sharing: Bittorrent, Napster, idonky
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:
Einen Tor-Browser
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/
/etc/tor/torrc
/var/lib/tor/hidden_service/
rc wie immer Konfigurationsskript. Hier tragen wir ein
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:
/etc/hostname
/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:
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
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.