Das deutsche I2P-Handbuch

From Planet Peer Wiki

Jump to: navigation, search

Contents

Hinweis: viele Informationen hier sind deutlich veraltet und bedarfen einer Überarbeitung!

Grundlegendes zu Anonymität im Internet

Es gibt ein paar wichtige Verständnisgrundlagen hinsichtlich Anonymität, die jeder unbedingt verinnerlicht haben muss.

1) Anonymität wird im Internet mittels Kryptographie hergestellt. Kryptographie benötigt jedoch sogenannte Vertrauensbereiche, welche irgendwo in der physischen Welt verankert sein müssen. Im Fall von I2P ist Euer eigener Rechner/PC der benötigte Vertrauensbereich. I2P kann Euch nur maximal so viel Sicherheit bieten, wie Ihr Eurem Rechner und Betriebssystem vertraut. Jemand, der also z.B. den Bundestrojaner oder ähnliches auf seinem Rechner hat, braucht sich nicht wundern, dass I2P ihm nicht die Anonymität bietet, die er sich erhofft. Seid Ihr Euch wirklich sicher, dass Euer Windows sauber ist und auch keine standardmäßig eingebauten Trojaner hat? Denkt mal darüber nach!

2) Anonymität gibt es nur in der Gruppe ("Anonymity likes company"). Je größer die Anzahl der Mitglieder einer Gruppe (=Anonymitätsmenge), desto höher ist auch der Anonymitätsgrad. Anonymität bezieht sich ausschließlich auf erkennbare Handlungen inerhalb der Gruppe, also z.B. das Senden oder Empfangen einer Nachricht. Es ist in der Regel technisch nicht möglich zu verbergen, wer die Mitglieder einer Gruppe sind. D.h. die Teilnahme einer Person / eines Rechners an einem anonymen Kommunikationsnetzwerk wie I2P lässt sich nicht wirklich verbergen. Es lässt sich jedoch sehr wohl verbergen, wer was macht bzw. wer mit wem kommuniziert und worum es sich dabei handelt. Aber, Anonymität in Bezug auf eine Handlung, muss innerhalb der Gruppe nicht unbedingt gleichverteilt sein. D.h. wenn 1000 Personen an einem anonymen Kommunikationsnetzwerk teilnehmen ist nicht gesagt, dass jeder der 1000 Personen mit gleicher Wahrscheinlichkeit für eine Handlung x in Frage kommt. Wenn ein Angreifer Rückschlüsse ziehen oder Annahmen treffen kann, dann kann er die Anonymitätsmenge unter Umständen drastisch reduzieren. Angenommen die Anonymitätsmenge für eine Handlung x konnte durch Rückschlüsse auf 5 von den 1000 Personen reduziert werden, dann kann dies durchaus ausreichen, das ein Richter zustimmt, eine Hausdurchsuchung bei allen 5 Personen durchzuführen.

3) Jeder Mensch interagiert in der Regel in mehreren Gruppen mit unterschieldlichen Identitäten, also z.B. im real Life, im Internet und im I2P-Netzwerk. Man sollte höllisch aufpassen, dass es zwischen den anonymen Identitäten und den nicht-anonymen Identitäten keine (bzw. so wenig wie möglich) Überschneidungen gibt. Siehe dazu auch den Punkt 3.3 #Was man tunlichst unterlassen sollte ;-)

Einführung in I2P

Die nachfolgende Dokumentation zu I2P (von mir großzügig als Handbuch bezeichnet :)) setzt sich hauptsächlich aus diversen HowTos aus dem Planet Peer Board zusammen, enthält aber auch neue Abschnitte, wie beispielsweise die Kapitel über Installation und Konfiguration eines I2P-Nodes. Ich werde der Reihe nach ältere und nicht mehr passende Screenshots durch neuere ersetzen, aber bis dieser Prozess komplett abgeschlossen ist, können noch ein paar Tage vergehen.

Das I2P-Handbuch ist nicht für den Übergeek gedacht, der I2P in- und auswendig kennt. Ich habe es für all jene zusammengestellt, die sich einfach etwas tiefer mit der Materie befassen wollen und sich nicht jeden Fetzen Dokumentation von diversen Websites zusammenkratzen wollen. Zum anderen hoffe ich natürlich, dass der ein oder andere nach dem Durcharbeiten dieses Handbuchs hochmotiviert seinen eigenen I2P-Router in Betrieb nimmt und dadurch das I2P-Netz unterstützt :).

Zum besseren Verständnis möchte ich vorab noch ein paar Begriffe erläutern, die in diesem Handbuch immer wieder auftauchen:

I2P-Router oder I2P-Node: Eine installiertes und fertig konfiguriertes I2P, das aktiv am I2P-Netzwerk teilnimmt.

eepsite: Eine Website, die nur im I2P-Netz existiert und nicht über das "normale" Internet erreichbar ist. Wenn man ein paar Kleinigkeiten beachtet, bietet eine eepsite ein hohes Maß an Anonymität, wie sie im normalen Internet kaum erreicht werden kann.

normales Internet: Damit meine ich das Internet, das technisch betrachtet als Layer unter dem I2P-Netz angesiedelt ist. I2P ist ein sogenanntes Overlay-Netzwerk.

Hier mal eine Abbildung, welche die Einordnung von I2P im OSI/ISO Schichtenmodell veranschaulicht: Image:I2P_OSI_ISO.png


Was verbirgt sich hinter I2P?

Der folgende Artikel ist zwar schon etwas älter, aber am Funktionsprinzip von I2P hat sich nichts geändert.

Wissenswertes über I2P - TEIL I

geschrieben von postman postman@i2pmail.org

I2P (Invisible Internet Project) ist ein Projekt, welches die Entwicklung eines anonymisierten Kommunikationsnetzwerks zum Ziel hat. Auf Basis von I2P soll es möglich sein, verschiedenste, aus dem Internet bekannte Dienste in sicherer und anonymer Form zu nutzen bzw. anzubieten. Zusätzlich soll I2P in Zukunft noch eine Reihe selbst entwickelter Services zur Verfügung stellen.

Bitte werft einen Blick auf www.i2p2.de, um näheres zu erfahren.


Das Projekt hat sich mehrere Ziele gesetzt:

  • Schutz gegen möglichst viele Bedrohungsszenarien
  • Dezentralität
  • höchstmögliche Skalierbarkeit
  • Anwendbarkeit
  • "State of the art"-Anonymität / Kryptoimplementierung

Bitte beachte, dass I2P per se kein klassisches Filesharing-Netzwerk ist!!! I2P für sich allein ist ein reines Transportprotokoll a la TCP/UDP, es gewährleistet jedoch die Anonymität der transportierten Daten.

Man kann es AUCH benutzen, um beliebige Filesharing-Applikationen damit zu betreiben, jedoch bedürfen diese einer entsprechenden Portierung. Zum aktuellen Zeitpunkt existieren bereits mehrere Bittorrent-Clients für I2P, eine auf Kademlia bassierende eMule implementation, genannt iMule, sowie ein Port des Phex-Gnutella-Client, genannt i2phex.

Das eigentliche Design sieht I2P als in sich geschlossenes Netzwerk, denn nur so kann Sender- UND Empfängeranonymität gewährleistet werden. In- und Outproxies existieren jedoch, um Dienste wie Internet-HTTP-Proxys oder das Senden/Empfangen von E-Mails mit dem Internet zu ermöglichen.

Wie sicher ist I2P?

-> Gegen welche Bedrohungsszenarien schützt mich I2P?

Beim Design wurden eine Vielzahl verschiedener Angriffe betrachtet. Unter allen existierenden Anonymisierungsnetzen bietet I2P, nach meinen Recherchen, das am ausführlichsten dokumentierte Threat-Model (ein Threat-Model ist die Gesamtheit der betrachteten Angriffe). Andere Anonymisierungsnetzwerke beschreiben ihr verwendetes Threat-Model lediglich spärlich bis überhaupt nicht. Man kann nur hoffen, dass die Entwickler der anderen Netzwerke wenigstens in ihren Köpfen ein umfassendes Threat-Model haben.

Welche Angriffe es gibt, und mit welchen Mitteln I2P Euch vor dem erfolgreichen Durchführen eben dieser schützen soll, könnt Ihr unter http://www.i2p2.de/how_threatmodel nachlesen. Ich werde später eine Einführung in die grundlegenden Anonymisierungstechniken geben.

Wie funktioniert I2P?

-> Wie ist der aktuelle Stand des Netzwerks?

Momentan befindet sich I2P in der Version 0.7. Derzeit gibt es zwei verschieden Protokolle, welche I2P-Knoten verwenden können, um miteinander zu kommunizieren. SSU und NTCP. SSU (Semireliable Secure UDP) ist UDP (verbindungslos) gestützt, NTCP (New TCP) ist TCP (verbindungsorientiert) basiert. Beide Protokolle verwenden starke Kryptographie (ElGamal2048+AES256) zur Verschlüsselung jeglicher, zwischen zwei Knoten transportierter, Daten. Beide Protokolle prüfen mittels digitaler Signaturen (DSA1024) dass die Daten während ihres Transports über das Internet nicht verändert/manipuliert wurden.

Aktuell nehmen am Netz ca. 700-1000 Knoten teil. Die Tendenz ist stabil wachsend. Eine Bekanntmachung und Veröffentlichung von I2P ist mit der Version 0.7 schon geschehen und soll weitere Nutzer zum Testen des Netzwerkes anziehen. Bis zum vollen Release der Version 1.0 (die dann auch den Status Beta-Software nicht mehr trägt) müssen aber noch ein paar Bugs behoben werden und weitere Optimierungen im Protokoll als auch Ressourcenbedarf vorgenommen werden. Auch muß ein sogenanntes Public Review (Untersuchung des Quelltextes auf Fehler und Schwachstellen von unabhängiger Seite) zur Version 1.0 erfolgen. Folgende Dienste wurden/werden erfolgreich im I2P Netzwerk betrieben: siehe Abschnitt "#Welche Dienste bietet I2P?"


-> Wie stellt denn I2P eigentlich Anonymität her?

I2P gewährleistet Senderanonymität, Empfängeranonymität, Unverkettbarkeit der Kommunikation, sowie Neutralität der ausgetauschten Daten.

  • Senderanonymität: Der Sender einer Nachricht ist gegenüber dem Empfänger, sowie Dritten (z.B. Provider) anonym.
  • Empfängeranonymität: Der Empfänger einer Nachricht ist gegenüber dem Sender, sowie Dritten (z.B. Provider) anonym.
  • Unverkettbarkeit der Kommunikation: Gegenüber Dritten (z.B. Provider) ist nicht ersichtlich das ein Sender X und Empfänger Y miteinander kommunizieren.
  • Neutralität der Nachrichten: Außer Sender und Empfänger kennt niemand den eigentlichen Inhalt einer Nachricht (Ende-zu-Ende Verschlüsslung).

Diese Frage ist für jeden interessant, der sich die (berechtigte) Frage stellt, wie ein System jemanden schützen kann, obwohl am Ende trotzdem Rechner mit Hilfe von IP Paketen, Daten austauschen. Ich werde versuchen, es verständlich zu machen...

Als erstes möchte ich sagen:

       IP-ADRESSEN SIND KEIN GEHEIMNIS IN I2P!

Ich habe so manch einen erlebt, der diese Erkenntnis schockierend fand. Aber es geht nicht anders, denn die I2P-Router müssen sich ja trotzdem miteinander auf Basis von Internettechnologien unterhalten. Und das verlangt IP-Pakete.

I2P stellt Anonymität durch Verwendung von Pseudonymen her. Eine IP-Adresse ist im Prinzip auch blos ein Pseudonym, jedoch ein sehr schlechtes was die Anonymität betrifft, da es gewissen Personen und Interessengruppen mittlerweile relativ leicht möglich ist das Pseudonym IP-Adresse der wahren Identität einer Person zuzuordnen. Deshalb adressiert I2P Nachrichten nicht an IP-Adressen sondern verwendet eine andere Form von Pseudonymen, welche Destinations genannt werden. I2P sorgt dann mittels Kryptographie- und Mixing-Mechanismen dafür, dass niemand feststellen kann hinter welcher IP-Adresse sich ein Pseudonym befindet. Beispiel: Ein Empfänger mit dem Pseudonym 'Bob' weiß zwar, dass die Nachricht von dem Sender mit dem Pseudonym 'Alice' abgeschickt wurde, er weiß jedoch nicht von welcher IP-Adresse aus 'Alice' die Nachricht gesendet hat.

I2P erlaubt dir somit, Dienste im I2P Netzwerk zu nutzen, ohne dass eine der beteiligten Parteien (auch nicht die eingebundenen Router selbst) wissen, dass du Dienste nutzt oder welche du nutzt. Gleichzeitig erlaubt es dir, Services im I2P Netzwerk anzubieten, ohne dass deine Nutzer wissen WO ( also auf welchem Router ) der Dienst läuft und ohne dass du weißt, von WO aus deine Nutzer zugreifen. Server und Client genießen den gleichen Schutz.

Ein wichtiger Aspekt in Bezug auf die Anonymität im I2P-Netzwerk ist daher die Gesamtanzahl aktiver Router. Je größer sie ist, desto besser ("anonymity likes company"). Derzeit (bei 700-1000 Knoten) ist diese noch nicht besonders hoch aber am Wachsen.


(aushol)

Normale Internetrechner kommunizieren über TCP / IP. IP sorgt dafür, dass ein Paket im Netzwerk seinen Weg findet und TCP (manchmal auch UDP) adressiert einen Dienst auf dem Rechner (Port) und sorgt für Flusskontrolle / Vollständigkeit / Datenintegrität. Das System funktioniert, ist recht schnell, aber leider direkt und ganz und gar nicht verschleiernd. Manche Leute benutzen deshalb Proxies für bestimmte Dienste und verschleiern damit gegenüber dem Leistungsanbieter die tatsächliche Absenderidentität. Diese ist DANN aber beim Proxy-Betreiber immer noch zu finden. Der Proxy schützt in dem Moment auch nur den Client, da dieser sich vor dem Dienstanbieter verschleiert, nicht aber den Anbieter, da dessen IP / Name natürlich öffentlich bekannt ist. Dazu kommt, dass der Proxy-Betreiber meine Client-Identität kennt und unter Umständen nicht als vertrauenswürdig zu bewerten ist. Normale Internetkommunikation ist dazu nicht verschlüsselt, also mit bestimmtem Aufwand mit zu schnüffeln.

Zuerst sollte man sagen: Alles, was I2P-Router kommunizieren, ist verschlüsselt. (Ich gehe darauf jetzt nicht näher ein.)

Dazu kommt..

Wenn dein I2P-Knoten hochfährt, baut er mehrere sogenannte Tunnel auf. Zum Tunnelaufbau werden dabei neben deinem eigenen Knoten IMMER auch andere I2P-Knoten benötigt, die dir dabei helfen. Ein Tunnel ist dabei ein "Kommunikationskanal" über den dein Router Daten in das Netzwerk schickt, oder über den dein Router Daten aus dem Netzwerk erhält. Für beide Richtungen werden unterschiedliche Tunnel aufgebaut. Dein Router sendet also Daten über andere Tunnel, als er Daten empfängt. Meist baut dein Router nach dem Hochfahren zwischen 3-10 ausgehende Tunnel und einige eingehende Tunnel auf.


             +---------+ ausgehende Tunnel
             |dein     | -------------->
             |Router   | -------------->
             |         | -------------->
             |         |
             |         | Eingehende Tunnel
             |         | <--------------
             |         | <--------------
             |         | <--------------
             +---------+


Ausgehender Tunnel in Nahaufnahme:


+--------+        +---------+       +---------+     +--------+
|Dein    |        |HOP 1    |       |HOP  2   |     |Endpoint|
|Router  |------->|Router   |------>|Router   |---->|Router  |--------->
|        |        |der mit  |       |der mit  |     |der mit | Daten VON mir treten hier
|        |        |macht    |       |macht    |     |macht   | in das Netzwerk und
+--------+        +---------+       +---------+     +--------+ in das Gateway eines
                                                               eingehenden Tunnels


Kurz gesagt: Ein Tunnel ist ein virtuelles Konstrukt. Er kommt zustande, wenn dein Router andere Router bittet, ihm zur Datendurchleitung zur Verfügung zu stehen. Im obigen Beispiel ist es ein ausgehender Tunnel, der dargestellt wird Alle, die im I2P-Netzwerk Daten von mir empfangen, sehen nicht, von welchem Router die Daten ursprünglich stammten. Statt dessen erscheint der Endpoint-Router als derjenige, der die Daten versandt hat.


Das gleiche Schema kann man aber auch umkehren:


+--------+        +---------+       +---------+     +--------+
|Dein    |        |HOP 1    |       |HOP  2   |     |Gateway |
|Router  |<-------|Router   |<------|Router   |<----|Router  |<---------
|        |        |der mit  |       |der mit  |     |der mit | Daten FÜR mich treten hier
|        |        |macht    |       |macht    |     |macht   | aus dem Netzwerk
+--------+        +---------+       +---------+     +--------+ in das Gateway meines
                                                               eingehenden Tunnels


Daten, die meinen Router als Ziel haben, werden ebenfalls über einen Tunnel an mich gesandt, die Daten treten am Inbound-Gateway ein, hüpfen über die anderen mitmachenden Router und werden dann von mir weiterverarbeitet.

Dein eigener Router macht übrigens auch mit. Abhängig von der Geschwindigkeit deiner Anbindung und weiterer Konfigurationen ist dein Router nicht nur Anfangspunkt und Endpunkt deiner eigenen Tunnel, sondern partizipiert an den ein/ausgehenden Tunneln anderer Router. Somit ergibt sich eine Vermaschung, die eine Rückverfolgung bzw. Datenanalyse erschwert. Damit transportierst du auch den Verkehr anderer über deinen Router, welches es leichter macht, bestreiten zu können, dass dieser Verkehr für dich selbst bestimmt war ("plausible deniability"). Falls diese Funktion nicht gewünscht ist, kann man sie mit der Option "router.maxParticipatingTunnels=0" in den Einstellungen/advanced ausstellen. Damit setzt man allerdings die eigene Anonymität etwas herab.

Dein Router ist dabei ständig am Tunnel aufbauen, abbauen und umbauen und wird von anderen Routern auch immer wieder gebeten an neuen Tunneln zu partizipieren. Es handelt sich um ein hochdynamisches System.

Das alles ist der Grundstein für ein leistungsfähiges gemixtes / verschlüsseltes Netzwerk. Es ermöglicht aber noch keine Dienste und kein Routing im Netzwerk. Wie das funktioniert, erkläre ich im zweiten Teil.

postman (edited by eche|on)

Weiter geht es:

Ich hatte im letzten Teil das grundsätzliche Verfahren erläutert, mit dem I2P Knoten untereinander kommunizieren. Das virtuelle Konstrukt, "Tunnel" genannt sichert das Netzwerk gegen eine Reihe von Attacken und Bedrohungszenarien ab, die eingesetzt werden könnten, um das Arbeiten des Netzwerks zu stören oder Daten zu erheben, die eventuell genutzt werden könnten, um Verkehr im Netzwerk mit bestimmten Diensten oder gar Nutzern zu korrelieren. Bitte nehmt zur Kenntnis, dass ich nicht auf ALLE Mechanismen, sondern nur auf die Basisideen eingegangen bin. Bestimmte Konzepte wie das Garlic-Routing und welche Kryptographie an welcher Stelle eingesetzt wird, ist ausserhalb des Fokus' dieses Dokuments.

Wenn wir uns die Routerbasiskommunikation betrachten, stellen wir jedoch fest, dass sich dort keinerlei Bezug finden lässt, wie denn nun Nutzer/Programme in diesem Netzwerk zueinander finden. Die im ersten Teil zitierten Tunnel und die I2P interne Kommunikation geschieht fern von Serverdiensten, Ports und Clients, die sie nutzen wollen. Um dies zu ermöglichen, müssen wir uns einige weitere Komponenten der I2P Welt näher anschauen.

In der normalen Internetwelt haben wir TCP/IP, wobei TCP das sogenannte Transportprotokoll ist. Es adressiert den gewünschten Dienst über den Port, verfügt über eine statusorientierte Kommunikation und Datenflusskontrolle, sowie Integritätschecks.

I2P könnte man als ein "IP" ÜBER TCP/IP betrachten. Die Router reden über TCP/IP miteinander, bauen Tunnel auf und tauschen verschlüsselt über diese Tunnel Nachrichten aus. Diese darin enthaltenen Nachrichten könnte man als NEUE IP-Pakete betrachten, auch wenn ihnen, im Vergleich mit Ihren echten Internetkameraden Merkmale, wie IP Absende und Zieladresse fehlen. Aber genau das ist ja das Ziel bei I2P!

Partizipiert dein Router nur an Tunneln, bekommt er die eigentliche Nachricht oder Payload nicht zu sehen. Er leitet sie einfach an den nächsten Partner weiter, bis die Nachricht den Router erreicht, der am Ende des Tunnels ( oder Anfang des Tunnels ) steht. Nur dieser kann die Nachricht entschlüsseln.

Damit nun aus dieser Quasi-IP Nachricht etwas programmtechnisch nutzbares wird, gibt es in I2P die sogenannte Streaming-Lib. Sie kann als TCP/UDP Implementierung von I2P betrachtet werden, da sie Nachrichten aus den Tunneln zu einem Datenstrom zusammensetzt und diese an lokale Ports auf deinem Node weiterleitet, an denen z.B. ein Webserver horcht oder anderere Services laufen.



              dein Node

eingehender +---------------+ Tunnel1 | +---------+ |


> |->| | |

[DATEN1] | |[DATEN1] | |

            |  | +   +   |----->Datenstrom  ---> <lokaler Port> <-> <Applikation>

eingehender | |[DATEN2] | | z.b.9999 z.B Webserver Tunnel2 | | + + | |


> |->| CHECKS | |

[DATEN2] | +---------+ |

            | Streaming Lib |
            +---------------+



Im obigen Bild können wir schematisch erkennen, wie die Daten aus zwei unterschiedlichen eingehenden Tunneln, von der StreamingLib zu einem Datenstrom zusammengesetzt werden und danach an einen lokalen Port geleitet werden. Wenn man bedenkt, wie die Tunnelbildung zustandekommt, so fällt es einem Angreifer äussert schwer, nachzuvollziehen, welche Daten die durch deinen Router laufen, schlussendlich für dich bestimmt waren, da Daten, auch wenn sie die selbe Quelle und das selbe Ziel haben, unterschiedlichste Wege durch das Netz nehmen werden.

Das gleiche gilt umgekehrt natürlich auch für ausgehende Daten.

Das klingt soweit ganz schön, ist aber alles nur akademischer Natur, wenn es einem Anwender nicht gelingt den Dienst, den er kontaktieren möchte, in irgendeiner Art zu benennen oder anzusteuern. Im normalen Internet haben wir dazu DNS Namen(Hostnamen) und Ports. In I2P gibt es dies nicht. Trotzdem muss ein beliebiger Teilnehmer im Netzwerk einen beliebigen I2P-öffentichen Dienst erreichen können.

Um dies zu ermöglichen, greift man zu einem nicht ganz leichten Verfahren, welches ich hier versuche, zu erläutern. Wir bleiben bei dem Beispiel Webserver. Markus hat in seinem Howto http://board.planetpeer.de/index.php/topic,731.0.html erklärt, wie man mit Zuhilfenahme des I2PTunnel Tools ( Webbasiert ) die Einrichtung eines neuen Dienstes vornimmt. (Bitte unbedingt lesen, wer es noch nicht getan hat)

Das interessante dabei ist, dass für diesen "Dienst" neben dem Port und einigen weiteren Angaben ein kryptographisches Schlüsselpaar mit öffentlichem und privatem Schlüssel gebildet wird. Der private Schlüssel wird auf der Festplatte in deinem I2P Arbeitsverzeichnis gespeichert. Der öffentliche Schlüssel wird "veröffentlicht", d.h. anderen I2P Nutzern zugänglich gemacht. Er wird im I2P Jargon meist "Destination Key" oder einfach nur "Destination" genannt. Der öffentliche Schlüssel ist also eine Art "Namen" unter dem dein Dienst in Zukunft für andere zugänglich gemacht wird.

Da niemand 516 Zeichen gerne in seinem Browser eintippt, verfügt dein I2P über eine hosts.txt Datei, in der alle bekannten und veröffentlichten Destinations unter einem einfachen Namen abgespeichtert werden

Beispieleintrag aus der hosts.txt

sciencebooks.i2p=Rrqf6EmeuqckygNrim-ZcZ97uEIL9Ykkr8cj1RSGbeih33~UUpjAp0x2fxrpbibXwuGufWMNoaMkZH8FxOxZr1hvBeV4Mvjrn05kKWyPpB B1x7rAcVCCoD~bl6CUU2k4NtFrO9~BCCZdoIvMxXYWRy4nj18RVaIlOS3qE6~F04pU7Fy0sj7xtd02wgeyKkJ6pXYGfETMr6phVusHSSQfCumDBpnqEt7EcXTIs Pz58y9Zim4u1wp6xj~OvGWFIP8fKIxpH~zf6o0qYytXrf6SJbIEvwITKGIXZTM5KxQ0LbEydSgPn4q5PttQlKg~7hxuGG5RYqP2IMg-f9z4-1SfYTbz~EixEq8g v0R30c60tqsyAaw9o37R3k9inkT5WylYwBKM0pzfcAVjejcoPYnFF1iithGl0AYkP~~isxCErCNwLs39NyE688C5amDIpXl7AgB~IvbwZfONbd2cwMOB2RFzTSh YZlwcILB7EzgMvEt2l8GBkstP3CzNrjQ2gAL0AAAA

Seit Version 0.7 können diese "Destination Keys" auch mit einem Zertifikat versehen werden, so das auch Längen über 516 Bit möglich sind und diese müssen nicht mehr immer auf AAAA enden. Desweiteren wurde zur weiteren Vereinfachung des Systems auch ein 32byte hash in der Form: http://afvtspvugtd32rsalxircjglh3fhcjzk7gxrm3gw4s2yrpvzk6wq.b32.i2p/ für diese "Destination IDs" eingeführt. Diese hashen den langen Key in eine kürzere, eindeutige Zeichenfolge und werden von jedem Router ab der Version 0.7 verstanden und verarbeitet.
Das alte Namensschema ist aber weiterhin gültig!


Aber woher weiss mein I2P Router WO er sich hinwenden soll wenn er zu echelon.i2p connecten will? Nun, die Veröffentlichung des Schlüssels in den I2P Foren oder im IRC oder mit Hilfe der mitgelieferten Adressbuch Software, dient nur zur Bekanntmachung unter den Anwendern des Netzwerkes. Damit I2P Router den Service finden, wurde ein automatisches Verfahren etabliert:

Nehmen wir mal an, du aktvierst einen Servertunnel für deinen Webserver auf Port 9999 dazu wird das Schlüsselpaar erzeugt, du announct den Destinationkey im I2P Forum. Gleichzeitig muss dein I2P Router sicherstellen, dass Anwender deinen Server finden, ohne dabei deine tatsächliche IP/Identität herauszufinden. Also kommen auch hier die Tunnel ins Spiel

Dein Router baut einen oder mehrere eingehende Tunnel auf, über die dich Nutzer in Zukunft erreichen können sollen


       +--------+        +---------+       +---------+     +--------+
       |Dein    |        |HOP 2    |       |HOP  1   |     |Gateway |

Port |Router |<-------|Router |<------|Router |<----|Router |<--------- 9999<---| | |der mit | |der macht| |der mit |Daten FÜR mich treten hier

       |        |        |macht    |       |mit      |     |macht   |aus dem Netzwerk
       +--------+        +---------+       +---------+     +--------+in das Gateway meines
                                                               |     eingehenden Tunnels
                                                               |
                                                               |
                                                             NETDB



Das alleine hilft dir noch nicht. Als nächstes veröffentlicht der Gateway Router eine Information der Form


"Hallo Leute, wenn ihr echelon.i2p sucht ( Schlüssel: afvtspvugtd32rsalxircjglh3fhcjzk7gxrm3gw4s2yrpvzk6wq.b32.i2p)

dann bin ich dafür der entgegennehmende Router für die nächsten paar Minuten"


in der sogenannten FloodFill Datenbank. Sie ist in Form einer einfachen, nicht vertrauten Lookup-Table auf den sogenannten FloodFill Routern gespeichert. Fällt euch etwas auf?

Der Router der in die FloodFill Datenbank speichert, dass eine bestimmte Destination über Ihn erreichbar ist, seid nicht ihr, sondern der Gateway Router für euren eingehenden Tunnel. Damit ist euer Router als eigentlicher Dienstanbieter versteckt und die HOP Router dazwischen bekommen von all dem auch nichts mit.

Etwas zweites ist interessant: Der Netdb Eintrag ist nur zeitlich begrenzt gültig. Meist gilt er nicht länger als 10 Minuten. Aus diesem Grund wird dieses Announcement auch als "LeaseSet" bezeichnet. Der Gateway Router ist nur für einige Minuten das System, welches für Euren Webserver eingehenden Tunnel spielt. Nach ein paar Minuten werden die Karten neu gemischt ein neuer eingehender Tunnel wird gebaut, der andere partizipierende Knoten hat und mit hoher Wahrscheinlichkeit auch einen anderen Gateway Router. Ist dies geschehen wird das alte Leaseset durch ein neues ersetzt und alle, die deinen Service nutzen wollen, müssen die neue Tunnelstrecke verwenden. Das ganze geschieht für den Anwender unterbrechungsfrei. Dafür sorgt die Streaminglib.

Damit kann Euer Dienst gefunden werden, ohne das der Nutzer/Anwender weiss, welcher I2P Router ihm den Service anbietet.

Der Client, der sich mit euch verbinden will, fragt also die FloodFill Router an, auf welchem I2P Router er einen eingehenden Tunnel für diesen Dienst findet, und benutzt einen oder mehrere seiner ausgehenden Tunnel, um sich mit deinem Dienst zu verbinden. Dabei hat auch ein Client eine Destination, da der Server ihm ja antworten können muss. Allerdings ist es so, dass Client Destinations nicht auf den FloodFill Routern gelistet werden. Stattdessen teilt der Client beim Verbindungsaufbau mit, über welchen incoming Tunnel Gateway er für eine Antwort zur Verfügung steht.

Trotz dieses gewaltigen Aufwands kann die Geschwindigkeit, mit der im I2P Daten übertragen werden, recht beeindruckend sein. Allerdings hängt dies immer auch von der Übertragungskapazität und der Auslastung der beteiligten Router ab.

Ich hoffe mal, dass einige von Euch jetzt verstanden haben, nach welchem Verfahren

Danke nochmal an Postman, ich habe Informationen angefügt und geändert (netDB <=>Floodfill Datenbank). Echelon

Welche Dienste bietet I2P?

I2P bietet eine große Vielfalt an Diensten wie beispielsweise

       -> Anonym gehostete Webseiten (sogenannte eepsites)
          (inkl. Supportforum)
       -> Anonymes IRC
       -> Anoynme E-Mail (inklusive Mail vom/zum Internet)
       -> Anonymes Filesharing (Bittorrent, Gnutella, Kademlia)
       -> Anonymer NNTP-Dienst
       -> jabber/IM-Dienste

Warum ist I2P auch für mich interessant?

Nun, dafür gibt es viele Gründe. Ich möchte mal zwei davon nennen:

  • Dank des Abmahnwahns hier in Deutschland muss man heutzutage in öffentlichen Foren sehr genau überlegen, was man wie in welcher Form von sich gibt. Eine eigene Meinung zu vertreten, kann mitunter kostspielige Konsequenzen haben.
  • Das Recht auf freie Meinungsäußerung steht hauptsächlich auf dem Papier, in der Praxis sieht das auch anders aus.

Diese zwei Punkten kann man gelassen ins Auge sehen, wenn man Informationen oder Berichte auf seiner eigenen eepsite platziert. Wer übrigens nur gerne anonym surfen möchte, sollte besser zu Tor greifen. I2P besitzt zwar auch ein paar Outproxies, die einen Übergang ins normale Internet ermöglichen, aber diese sind oft überlastet und funktionieren auch nicht immer.

Neben der Möglichkeit, anonyme Websites zu betreiben, bietet I2P selbstverständlich auch noch weitergehende Möglichkeiten wie anonyme Mails oder anonyme Chats. Mehr dazu gibt im entsprechenden Abschnitt.

Rechtliches zum Einsatz von I2P

Immer wieder taucht die Frage auf, welche rechtliche Relevanz der Einsatz von Software wie I2P, Tor oder Freenet hat. Im Fall von I2P hat unser Forenmitglied rentner einen interessanten Artikel geschrieben, der die rechtlichen Konsequenzen näher beleuchtet.

Den kompletten Thread zu diesem Thema gibt es hier.

[Die beschriebene Trennung in TDG und TKG existiert mittlerweile nicht mehr, vgl. letzten Absatz.]

Momentan existieren keinerlei richterliche Urteile oder Beschlüsse bzgl. Anonymisierungsverfahren wie I2P oder TOR. Es gibt zwar einige Publikationen bezogen auf JAP bzw. AN.ON[1], jedoch sind diese aufgrund der technischen Unterschiede nur begrenzt brauchbar. Zur Feststellung, ob etwaige Haftungsprivilegierungen greifen, muss ersteinmal festgestellt werden, welchem Gesetz die betreffenden Dienste zuzuordnen sind.[2] In Deutschland existiert, ohne zu stark in juristische Details abzurutschen, das TDG[3] bzw. TKG[4]. Grob gesagt, regelt das TDG das Recht der Teledienste, also die inhaltliche Seite von angebotenen Diensten und das TKG das Recht der Telekommunikationsdienste, mithin die technisch-organisatorischen Belange. Je nach Einordnung von I2P greifen Haftungsprivilegierungen oder besondere Datenschutzvorschriften (TDDSG/TDSV). Zu nennen ist hier insbesondere § 4 Abs. 6 TDDSG.[4b]

Da hier hauptsächlich von Interesse war, ob ein "Router legal" ist, gehe ich davon aus, dass weder ein In-, noch OutProxy konfiguriert ist, sondern eben lediglich Daten gerouted werden. Wiederum ohne zu sehr in die Details zu gehen, ist das einfache Routing von Daten (ohne Einfluss auf deren Inhalt zu nehmen) das "geschäftsmäßige Erbringen von Telekommunikationsdiensten" i.S.d. § 3 Nr. 10 TKG. Damit ist ein Anonymisierungsservice geradeso vom TKG erfasst. Das momentane Problem ergibt sich jedoch aus § 2 Abs. 4 Nr. 1 TDG, wonach das TDG nicht für Telekommunikationsdienstleistungen i.S.d. TKG gilt. Das ist eine abstruse Situation welche in der Literatur heftigst kritisiert wird. Wie in den Fußnoten [1,2] wird oft dazu übergegangen "strittige Dienste" die nicht eindeutig zuordenbar sind einfach beiden Regelungswerken zu unterstellen. Also das TDG sowie TKG für anwendbar zu erklären. Dies geschieht mit der einleuchtenden Begründung, dass jeglichem Teledienst grundsätzlich eine Übermittlung von Daten durch Telekommunikationsdienste zugrunde liegt. Nach derzeitig allgemeiner Ansicht ist I2P also sowohl als Teledienst als auch als Telekommunikationsdienst einzustufen, womit TKG und TDG Anwendung finden (das TDG schon deshalb, weil die eepSites definitiv einen Teledienst darstellen).

Für Teledienste greift nun folgende Regelung. Gem. § 9 Abs. 1 TDG[5] sind Diensteanbieter für fremde Informationen, die sie in einem Kommunikationsnetz übermitteln oder zu denen sie den Zugang zur Nutzung vermitteln, nicht verantwortlich, sofern sie die Übermittlung nicht veranlasst, den Adressaten der übermittelten Informationen nicht ausgewählt und die übermittelten Informationen nicht ausgewählt oder verändert haben. Diese Vorraussetzungen müssen kumulativ vorliegen. Sobald also z.B. die weitergeleiteten Informationen verändert werden, greift die Privilegierung nicht mehr. Eine weitere Ausnahme ist § 9 Abs. 1 Satz 2 (Satz 1 findet keine Anwendung, wenn der Diensteanbieter absichtlich mit einem der Nutzer seines Dienstes zusammenarbeitet, um rechtswidrige Handlungen zu begehen). Juristisch strittig könnte meiner Ansicht nach lediglich die Anwendbarkeit von § 10 TDG sein, welcher härtere Maßstäbe für die Verantwortlichkeit beinhaltet. Es dürfte jedoch recht schwierig sein einem Router die Zwischenspeicherung von Informationen begrifflich zu unterstellen. Jedoch möchte ich hier die juristische Zunft nicht unterschätzen :>

Eine Haftungsprivilegierung nach § 9 TDG greift meiner Ansicht nach für einen normalen Router als auch für einen I2P Router. Nach § 8 Abs. 2 TDG sind Diensteanbieter im Sinne der §§ 9 bis 11 nicht verpflichtet, die von ihnen übermittelten oder gespeicherten Informationen zu überwachen oder nach Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen.[6] Dies dürfte die Frage des Threads nach der "Legalität eines I2P Routers" hinreichend beantwortet haben.

Ab 1.1.2007 sollen die Regelungen des TDG und TKG zusammengeführt werden (u.a. aufgrund der beschriebenen Abgrenzungsprobleme und der sinnlosen Trennung von Tele-, und Mediendiensten, nicht zu vergessen der aufgrund von Gesetzgebungskompetenz erfolgten föderalistisch-kleinstaatlichen Teilung in TDG und MDStV). Es existiert bereits ein Entwurf des Telemediengesetzes (TMG) seitens des BMWi[7] vom November 2005, welcher die oben zitierten Regelungen weitestgehend unberührt lässt (sie finden sich nur in anderen §§).[8] Es kann jedoch durchaus weitere Änderungen geben, womit hier nur die momentane Gesetzeslage berücksichtigt ist.

Grüße zusammen, rentner.

p.s.: Die obigen Ausfuehrungen sind zwar nach bestem Wissen und Gewissen geschehen, jedoch wie immer unter dem AFAIK-IANAL-Vorbehalt.

[1] Raabe, Einordnung zweier Anonymisierungsdienste, DuD 2003, S. 135; So auch: Demuth/Sonntag in: http://www.heise.de/tp/r4/artikel/5/5790/1.html, letzter Aufruf: 28.03.06. [2] Bzgl. AN.ON: Federrath/Golembiewski, Speicherung von Nutzungsdaten, DuD 2004, S. 129ff.; Golembiewski, Anonymität im Internet, DuD 2003, S. 130. Für die Einordnung sowohl als Telekommunikations-, als auch Teledienst: Raabe, Einordnung zweier Anonymisierungsdienste, DuD 2003, S. 136. [3] http://www.gesetze-im-internet.de/tdg/index.html [4] http://www.gesetze-im-internet.de/tkg_2004/ [4b] http://www.gesetze-im-internet.de/tddsg/__4.html [5] http://www.gesetze-im-internet.de/tdg/__9.html [6] http://www.gesetze-im-internet.de/tdg/__8.html [7] http://www.zukunft-ebusiness.de/E-Business/Navigation/Recht/deutschland,did=89520.html [8] http://www.zukunft-ebusiness.de/E-Business/Redaktion/Pdf/Gesetze/Bestehendes__Gesetz/telemediengesetz-november-2005,property=pdf,bereich=ebus

Installation von I2P

Bevor wir zum Download und zur Installation kommen, hier noch ein Hinweis:

Der Hauptentwickler von I2P, JRandom, hat das Projekt I2P im November 2007 für mind. 1 Jahr verlassen, daraufhin hat ein Team aus zzz und complication die Hauptentwicklung übernommen. Diese beiden Personen waren vorher schon am I2P Projekt beteiligt und JRandom hat diesen "vertraut" und CVS Zugriff gegeben.

Bevor jedoch JRandom den vollen Zugriff zum alten I2P Server an diese Entwickler weiterreichen konnte, ist der alte I2P Webserver abgestürzt und ist NICHT mehr erreichbar. Deswegen wurden einige Änderungen durchgeführt. Die neue Webseite ist nun http://www.i2p2.de Und das alte CVS wurde durch Monotone ersetzt, welches unter mtn.i2p2.de erreichbar ist.

Aufgrund dieser Umstellungen sollte JEDER, der I2P nutzt, das Update zur derzeit aktuellen Version 0.7 einspielen, da dieses die nötigen Änderungen enthält! Auch gibt es dadurch bei vielen Links im Netz und hier noch ggf. Probleme, da diese auf die alte URL verweisen. Grundsätzlich gilt: ab jetzt ist http://www.i2p2.de die neue Webseite (diese wird auf 2 Webserven bereitgehalten).

Auch zu Beginn des Jahres 2009 is jrandom noch abwesend, aber zzz und complication haben die Entwicklung der I2P Software fortgeführt und weitere Entwickler angezogen, so das die Version 0.7 im Januar 2009 veröffentlicht wurde und die Anzahl der I2P Router gesteigert werden konnte. Auch sind wieder weitere Zusatzprogramme in der Entwicklung.


Installation unter Windows

Die Installation von I2P ist kein Hexenwerk, deshalb beschränke ich mich auf das notwendigste. Hinweis: die Bilder zeigen eine alte Version von I2P, aber auch die aktuelle Version 0.7 ist noch so zu installieren!

Nun aber zur Installation:

1. Starten des Installationsprogramms i2pinstall.exe, weiter mit Next

Image:i2p_inst_1.png

2. Weiter mit Next

Image:i2p_inst_2.png

3. Installationspfad auswählen, weiter mit Next

Image:i2p_inst_3.png

4. Installationspfad auswählen, weiter mit Next. Anschließend den Hinweis, dass der Pfad angelegt wird, mit OK bestätigen

Image:i2p_inst_4.png

5. Installation beginnt nun

Image:i2p_inst_5.png

6. Installationsende, weiter mit Next

Image:i2p_inst_6.png

7. Name der Programmgruppe angeben, weiter mit Next

Image:i2p_inst_7.png

8. Installation ist beendet, bestätigen mit Done

Image:i2p_inst_8.png

Wenn alles einwandfrei funktioniert hat, gibt es nun eine neue Programmgruppe im Startmenü. Sofern bei der Installation kein anderer Gruppenname definiert wurde, heißt diese Programmgruppe I2P:

Image:i2p_start_1.png

I2P Router console: Öffnet den Standardbrowser und ruft die Routerkonsole von I2P auf, doch dazu gleich mehr
Start I2P (no window): Startet den I2P-Router ohne weitere Bildschirmausgaben im Hintergrund
Start I2P (restartable): Start den I2P-Router mit weiteren Bildschirmausgaben in einer DOS-Box

Bis alles konfiguriert ist und sauber läuft, empfehle ich auf jeden Fall den Link Start I2P (restartable) zu verwenden, da das ausgegebene Debug Log wichtige Meldungen enthält, die für die Fehlersuche oder auch nur für informative Zwecke wichtig sind.

Mit einem Klick auf diesen Link wird nun der I2P-Router gestartet, was in etwa so aussieht:

Image:i2p_start_2.png

Wichtig: An dieser Stelle heißt es (insbesondere beim ersten Start von I2P) erst einmal etwas warten und Geduld haben. Während der Startphase spielen sich im Hintergrund einige wichtige Dinge ab, die man tunlichst nicht unterbrechen sollte. Sobald diese erste Phase abgeschlossen ist, startet I2P automatisch den Standardbrowser mit der Routerkonsole:

Image:i2p_start_3.png

Installation unter Linux

Hier ist eine kurze Zusammenfassung, wie man I2P unter Linux (getestet unter Ubuntu 6.10, 7.04) installiert. Hauptaugenmerk liegt auf dem Betrieb als Standalone Server.

1. Java-Runtime installieren
Dieser Schritt kann übersprungen werden, falls sich bereits eine Java Runtime auf dem System befindet. Herausfinden kann man das über einen Konsolenbefehl:

user@server:~$ java -version
java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode, sharing)

Es sollte mind. Java 5 (1.5) installiert sein, Java 6 ist in Hinblick auf den Ressourcenbedarf zu empfehlen! In Ubuntu kann man über die interne Paketverwaltung Java installieren:

apt-get update
apt-get install sun-java6-jre

Nach dem herunterladen erscheint ein textbasiertes Menü, mit Lizenzbestimmungen, die wir natürlich mit "Yes" oder "Accept" bestätigen.

2. Niedrig priveligierten Benutzer erstellen
I2P soll nicht als Root unter Linux laufen. Deshalb wird ein eigenständiger User angelegt unter dessen Kontext später I2P laufen wird.
Den Usernamen und das Passwort könnt Ihr euch selbst aussuchen. Bitte aber ein einigermaßen sicheres Kennwort verwenden :-)
In diesem Beispiel heißt der User "i2pDaemon".

user@server:~$ sudo adduser i2pdaemon
Adding user `i2pdaemon'...
Adding new group `i2pdaemon' (1001).
Adding new user `i2pdaemon' (1001) with group `i2pdaemon'.
Creating home directory `/home/i2pdaemon'.
Copying files from `/etc/skel'
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for i2pdaemon
Enter the new value, or press ENTER for the default
        Full Name []: I2P User
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [y/N] y



3. I2P herunterladen
Bitte mit dem neu angelegten Benutzer an der Konsole anmelden!
Die I2P Installation wird in das home Directory des neuen Users gemacht.

i2pDaemon@server:~$ cd $HOME
i2pDaemon@server:~$ mkdir i2p
i2pDaemon@server:~$ cd i2p
i2pDaemon@server:~$ pwd
/home/i2pdaemon/i2p

Mit wget wird das I2P Paket vom offiziellen I2P Webserver geladen.
Es wird prinzipiell immer der sog. "Headless Installer" verwendet. Hierbei bitte beachten, daß diese jetzt Versionsnummern tragen und hier gerade die Version 0.7 verlinkt ist!
Nachtrag Oktober 2009: Es gibt keinen "Headless Installer" mehr. Stattdessen den normalen "Graphical Installer" (*.exe) herunterladen!!!

wget http://mirror.i2p2.de/i2pinstall-0.7.7.exe

Jetzt den Konsolen Installer aufrufen:

java -jar i2pinstall-0.7.7.exe -console

Welcome to the installation of i2p 0.7.7!
 - I2P <http://forum.i2p2.de/>
The homepage is at: http://www.i2p2.de/
press 1 to continue, 2 to quit, 3 to redisplay
1
Select target path [/home/i2pdaemon/i2p]

press 1 to continue, 2 to quit, 3 to redisplay
1
[ Starting to unpack ]
[ Processing package: Base (1/1) ]
[ Unpacking finished ]
[ Console installation done ]

Um I2P beim Systemstart automatisch im richtigen Userkontext zu starten, muss zuerst ein Start Script erstellt werden.
Dieser Schritt ist optional:

i2puser@system:~$ sudo nano /etc/init.d/i2pdaemon

Die Datei sollte folgenden Inhalt haben:

#!/bin/sh
# $Id: init, v 1.3 2004/02/16 01:33:33 sal Exp $
#
# Script to start I2P with the i2pdaemon account
#
set -e

. /lib/lsb/init-functions

I2PDIR=/home/i2pdaemon/i2p
I2PROUTERSCRIPT=$I2PDIR/i2prouter
LANG=de_DE.UTF-8

case "$1" in
start)
  sudo -u i2pdaemon LANG=$LANG sh $I2PROUTERSCRIPT start
  ;;
restart|reload|force-reload)
  sudo -u i2pdaemon LANG=$LANG sh $I2PROUTERSCRIPT stop
  sudo -u i2pdaemon LANG=$LANG sh $I2PROUTERSCRIPT start
  ;;
stop)
  sudo -u i2pdaemon LANG=$LANG sh $I2PROUTERSCRIPT stop
  ;;
esac

exit 0

Ergänzung Dez. 2011 Die Varible LANG=de_DE.UTF-8 muss auf einen gültigen Wert des Unix Systems gesetzt werden, z.B. die des aktuellen Users: Abfrage mit "locale" im Terminal. Man sollte eine UTF-8 Codierung wählen. Ohne eine korrekte LANG Variable wird der Java I2PRouter mit ANSI_X3.4-1968 und Charset=US-ASCII ausgeführt. Hier werden keine deutschen Umlaute unterstützt und das führt damit zu Problemen, z.B. mit Torrents. Das verwendete Encoding und das Charset kann man im Router Log anschauen:

...
Encoding: UTF-8
Charset: UTF-8

Das Shell Script nur noch ausführbar machen:

i2puser@system:~$ sudo chmod u+x /etc/init.d/i2pdaemon

Jetzt kann mittels "sudo /etc/init.d/i2pdaemon start" bzw. "sudo /etc/init.d/i2pdaemon stop" I2P gestartet oder gestoppt werden.

Jetzt muss dieses Init.d Script nur noch automatisch als Dienst gestartet werden. Als Start Runlevel wird 2 verwendet (Mehrbenutzerbetrieb). Natürlich muss i2p auch beim herunterfahren sauber beendet werden:
In diesem Beispiel habe ich als Startnummer 73 verwendet.

i2puser@system:~$ sudo update-rc.d i2pdaemon start 73 S . stop 73 0 2 .

Jetzt entweder das System neu starten um das Startscript zu testen, oder I2P manuell starten:

i2puser@system:~$ sudo /etc/init.d/i2pdaemon start


Die I2P Router Console ist jetzt auf dem Server erreichbar: http://localhost:7657/index.jsp
Achtung: Die Seite kann noch nicht von anderen Clients im Netzwerk angesprochen werden. Falls das gewünscht ist, weiter zu Schritt 4.

Oder alternativ sich per SSH Tunnel (siehe weiter unten) auf den Linuxserver verbinden!

4. Router Konsole und Tunnel für andere Clients im LAN verfügbar machen
Hinweis: dieses ist gegebenfalls ein Sicherheitsleck, da dann jeder PC hinter dem Linux PC auf diese Konsole und Tunnel zugreifen können! Empfohlen wird der SSH Tunnel!
Zuerst muss die Router Console erreichbar gemacht werden. Dazu müssen Änderungen in der Datei clients.config im I2P Verzeichnis gemacht werden:

i2pdaemon@server:~/i2p$ nano ./i2p/clients.config

In der Zeile "clientApp.0.args=7657 127.0.0.1 ./webapps/ " das 127.0.0.1 durch 0.0.0.0 ersetzen.
Die neue Zeile sollte dann so aussehen: clientApp.0.args=7657 0.0.0.0 ./webapps/
Den I2P Prozess einmal neu durchstarten und schon ist die I2P Router Console auch von anderen Clients erreichbar:
http://[I2PServerIP]:7657/index.jsp
Um auch die Tunnel für weitere Clients zu öffnen, am Router Interface anmelden (Firefox, Internet Explorer) und folgende Schritte durchführen:
Image:001.png
Dem Link "I2PTunnel" folgen.
Image:002.png
Auf "eepProxy" klicken
Image:003.png Und "Reachable by" von Localhost auf Anyone ändern.
Unten auf den Button "Save" klicken um die Ändernungen zu speichern. Den Dienst "eepProxy" mit einem Klick auf "Stop" und "Start" einmal durchstarten.
Bei Bedarf die anderen Dienste auch noch dementsprechend freischalten (pop3, ircProxy, smtp). Zum reinen surfen im I2P Netz genügt es nur den eepProxy abzuändern.


5. Mögliche Probleme
a) Viele aktive Torrents mit vielen Dateien führen möglicherweise zur folgenden Fehlermeldng im Router Log: java.io.IOException: Too many open files. Lösung: I2P hat mehr als 1024 Dateien geöffnet. Erhöhe das Limit in deinem LINUX für den Parameter "nofile" hier:

/etc/security/limits.conf

username_of_the_i2p_account <spaces> nofile <spaces> 8192

und starte LINUX neu. Mit "ulimit -n" kannst du den Parameter "nofile" vorher und nachher überprüfen.

b) Die Ursache diverser Verbindungs Probleme in I2P könnte die IPV6 Unterstützung moderner LINUX Distributionen sein. Als Lösung könnte man den kompletten IPV6 Stack deaktivieren. Eleganter ist es jedoch, nur für die I2P JAVA Umgebung IPV6 mal testweise zu deaktivieren. Hierzu muss einfach die Java Variable java.net.preferIPv6Addresses=false gesetzt werden. Dies kann z.B. in der wrapper.config im Abschnitt wrapper.java.additional... mit folgender Ergänzung erfolgen:

wrapper.java.additional.6=-Djava.net.preferIPv6Addresses=false 

Die "6" ist dabei eine fortlaufende Zahl und muss ggf. in deiner Datei angepasst werden. I2P muss dannach komplett heruntergefahren werden und neu gestartet werden. Ein einfacher Restart reicht nicht.

Was man tunlichst unterlassen sollte ;-)

Das sind zum Glück nur ein paar Dinge, aber man sollte sie unbedingt beachten, wenn man nicht seine eigene Anonymität im I2P-Netz kompromittieren möchte.

1. Geheimhalten der eigenen Router-Identität sowie wichtiger Konfigurationsdaten

Jeder I2P-Router hat eine einzigartige ID, die im Abschnitt General über den view Link eingesehen werden kann:

General Ident: (view) Version: 0.7-3 Uptime: 12h Now: 12:26:47 (no skew) Reachability: OK


  Diese ID darf auf keinen Fall anderen mitgeteilt werden. Genauso wenig hat sie auf Screenshots verloren, die bei Supportanfragen  
  u.U. in den I2P-Foren auf dem Planet Peer Board veröffentlicht werden. Wenn diese ID versehentlich einmal publiziert wurde, dann
  gilt der I2P-Router als "verbrannt" und muß deinstalliert und neu installiert werden.
  Das gleiche gilt im übrigen auch für Screenshots, auf denen Namen von eespites sowie weitere Konfiguratonsangaben zu sehen sind!

2. Keine Details ausplaudern

Sollte eigentlich selbstverständlich sein, aber der Vollständigkeit halber möchte ich es nochmal kurz erwähnen.

Wer als Node im I2P-Netz agiert, ist anonym und ziemlich sicher. Von daher sollte man auch keinesfalls den Fehler begehen und vielleicht auch unbeabsichtigt Details ausplaudern, die Rückschlüsse auf die eigene Identität ermöglichen:

- Als Betreiber einer eepsite sollte man sich davor hüten, diese in öffentlichen Internet-Foren zu bewerben

- Wer Filesharingsysteme wie BitTorrent oder i2phex über I2P betreibt, tut sich selber keinen Gefallen, wenn er in öffentlichen Foren darüber spricht, welche Dateien er freigegeben hat

- Niemals mit dem gleichen Nickname sowohl in öffentlichen als auch in anonymen Netzen oder Foren auftreten

Konfiguration von I2P

Basiskonfiguration

Remote-Zugriff auf das Webinterface

Ich werde im folgenden 2 Wege erklären, wie es möglich ist auf das Webinterface des I2P-Routers von einem anderen Computer aus zuzugreifen. Die 2.te Möglichkeit ist für die meisten Linuxsysteme die bessere Wahl, da ein verschlüsselter SSH-Tunnel zwischen Server und Client aufgebaut wird und SSH auf den meisten Linuxsystemen zur Verfügung steht, bzw. einfach einzurichten ist. Für Windows hingegen würde ich eher 1.teres empfehlen, da man sich so den Zwischenschritt über den SSH-Server spart, der dort in den meisten Fällen nicht verfügbar ist, bzw. nicht so einfach zu konfigurieren ist wie auf einem Linuxsystem. Es ist allerdings kein Problem 1.tere Möglichkeit auch auf einem Linuxsystem anzuwenden, die Vorgehensweise ist diesselbe. Der in meinen Augen größte Unterschied auf einem Windowssystem zu den beiden Lösungen ist der, das im 2.teren Fall die Verbindung verschlüsselt wird in 1.terem nicht, sowie der Konfigurationsaufwand. Falls ihr euch für den 2. Weg entscheidet müsst ihr also evtl. o.g. SSH-Server installieren. Für Ubuntu beispielsweise findet ihr hier[1] eine Anleitung zum Einrichten eines solchen Servers. Für die meisten anderen Distributionen sind derartige Anleitungen im Netz zu finden, einfach etwas suchen beispielsweise mit Ixquick. Falls ihr Windows nutzt und euch für die SSH-Variante entscheidet hilft euch eventuell dieser Link weiter:[2]

Direktzugriff

Bei dieser Möglichkeit musst du nur 2 Dinge tuen:

1. Öffne die clients.config (im I2P-Hauptverzeichnis) und suche dort nach "clientApp.0.args=7657 127.0.0.1" und ersetze es durch "clientApp.0.args=7657 0.0.0.0" (Alles ohne die ""!).

2. Da jetzt jeder darauf zugreifen kann (0.0.0.0 ist ein Synonym für alle Adressen die es gibt) solltest du dringend ein Passwort setzen, dies machst du indem du auf das I2P-Webinterface gehst dort auf "Bandwidth in/out" klickst und dann auf "Advanced". In dem großen Feld fügst du irgendwo in einer neuen Zeile folgenden Text ein: consolePassword=DeinPasswort DeinPasswort ist verständlicherweise das Passwort, welches du haben willst, einfach hinter das = anhängen und drauf achten das keine Leerzeichen hinten dran sind, nich das du da evtl. Probleme kriegst weil es dir nicht aufgefallen ist.

Hinweis: I2P-Router neustarten damit Änderungen aktiv werden! Und: Falls du einen (Wlan-)Router hast, musst du dort ebenfalls eine Portweiterleitung einrichten, damit du von außen darauf zugreifen kannst. Vorausgsetzt du willst das überhaupt, wenn nicht solltest du schauen das der Port von außen nicht erreichbar ist, das gibt dir ein wenig mehr Sicherheit.

Zugriff über SSH-Tunnel

Die folgende Vorgehensweise setzt einen funktionstüchtigen SSH-Server voraus. Falls du diesen nicht besitzt lies dir Punkt 4.1.1 durch oder nimm den Direktzugriff (Punkt 4.1.1.1). Als ersters installierst du dir falls nicht schon vorhanden Putty. Beziehen kannst du dieses beispielsweise unter [3]. Nun startest du es und trägst die für dich passenden Werte im sich öffnenden Fenster ein.

Image:I2p_putty_1.JPG


1. IP-Adresse oder Hostname des Systems auf dem dein SSH-Server bzw. I2P-Router läuft. 2. Port auf dem der SSH-Server läuft (Normalerweise 22).

Image:I2p_putty_2.JPG

Im linken Bereich klappst du zuerst falls nötig die beiden Kategorien aus (rot markiert) und wählst den Unterpunkt "Tunnels" aus. 1. Hier trägst du einen Port ein, der auf dem System auf dem du gerade arbeitest(also der Client) frei ist. 2. Hier trägst du aus Sicht des Servers (deswegen 127.0.0.1) die Adresse ein, auf die der in Punkt 1 angegebene Port später zeigen soll. 3. Wenn du fertig bist klicke auf "Add". 4. Hier sollte dann deine eben angelegte Weiterleitung erscheinen.

Hinweis: Die Werte die dort stehen sind normalerweise zu gebrauchen, falls bei dir auf dem Client allerdings auch ein I2P läuft musst du wahrscheinlich einen anderen Port bei 1. eintragen als den 7657 da dieser vom I2P-Webinterface der lokal laufenden Instanz belegt ist.

Image:I2p_putty_3.JPG

Damit du die ganzen Einstellungen nicht bei jedem starten des Programms vornehmen musst, klickst du auf Session (als 1 gekennzeichnet), trägst unter 2 einen beliebigen Namen ein (damit du später weisst, das du dich über dieses Profil auf deinen I2P-Server verbindest) und dann auf den mit 3 gekennzeichneten Button. Nun ist das Profil unter dem eingegebenen Namen gespeichert und du kannst es beim nächten Mal einfach wiederverwenden. Nun klickst du nurnoch unten auf "Open" und der Client verbindet sich mit deinem Server, der wenn alles korrekt eingetragen ist dich nun nach deinem Benutzernamen und Passwort fragt. Nachdem du das eingegeben hast, kommt deine sog. Login-Shell. Du kannst nun dieses Fenster minimieren (nicht schließen :-)) und deinen Browser aufrufen. Dort gibst du dann http://127.0.0.1:7657 ein (es sei denn du hast einen anderen Port gewählt, dann musst du logischerweise den nehmen) und solltest dort das I2P-Webinterface deines Servers sehen.

Konfiguration einer eepsite

Erstellen einer eigenen eepsite

Eine Anleitung findest du in deinem Router, wenn du links auf "Webserver" klickst. http://localhost:7658/

eepsites von alten auf neuen I2P-Router transferieren

1. alter I2P Router > I2PTunnel > meine-www-seite > Edit server settings

2. Name, Website name, Pfad zur "Private key file" und "Local destination" merken

3. "Auto Start" deaktivieren

4. alten Router komplett beenden

5. neuer Router: > I2PTunnel > eepsite > Edit server settings

6. Name, Website name von Punkt 2 eintragen

7. "Local destination" ist noch leer

8. "Auto Start" aktivieren

9. neuen Router beenden

10. Dateien vom alten I2P-Router zum neuen kopieren:

11. - Datei ...\eepsite\eepPriv.dat (gut aufheben aber geheim halten !!!)

12. - Verzeichniss ...\eepsite\docroot\... mit allen Dateien und Unterverzeichnissen

13. Achtung: ...\eepsite\... bei einer neuen I2P Installation liegt unter hier Windows=C:\Dokumente und Einstellungen\wolfgang\Anwendungsdaten\I2P\... und hier bei linux hier =~/.i2p/

14. neuen Router starten

15. > I2PTunnel > meine-www-seite > Edit server settings > kontrollieren

16. Daten von Punkt 2. inkl. "Local destination" sollten jetzt hier stehen

17. Klick auf "Add to local addressbook"

18. meine-www-seite sollte jetzt auf dem neuen Router und für andere wieder funktionieren


Apache als Webserver fuer eine eepsite

Dieser Artikel richtet sich an Admins, die eine komplexe Web-Site in anonymen Netzen (I2P, Tor, ...) betreiben wollen.

Die Webserver, die in aP2P-Programmen enthalten sind (z.B. jetty unter I2P) sind bereits so eingestellt, daß sie von sich aus keine Informationen über sich/ihr Wirtssystem herausgeben.

Wer lediglich ein paar statische html-Seiten anonym veröffentlichen möchte, sollte daher die eingebauten Web-Server verwenden!

Wer allerdings eine komplexere Site betreibt und dabei auf Scriptsprachen wie PHP/MySQL angewiesen ist, braucht einen umfangreicheren Server. Ich gehe hier auf den Apache/2.0.x ein, der bei mir unter SUSE/Linux 10.0 läuft. Die von mir empfohlenen Einstellungen sind meine eigenen Überlegungen. Sie sind sicher nicht vollständig! Wer also weitere Tips zur Anonymisierung geben kann, oder Fehler findet, ist herzlich zur Ergänzung eingeladen!!

Ich gehe davon aus, daß bereits eine funktionierende Standard-Installation des Apachen auf dem Rechner läuft. Falls nicht, gibt es sehr gute Tutorials z.B. hier oder hier . Wie man einen Tunnel unter I2P einrichtet, hat Markus hier ausführlich beschrieben. Eine Anleitung für die Anbindung an Tor gibt es hier.

Der Apache muß an dem Port und der IP lauschen, die im I2P-Tunnel bzw. in der config-Datei des Tor-hidden-service definiert sind. Damit ist der Apache von außen erreichbar und grundsätzlich einsatzbereit.

1. keine persönlichen Daten in die Apache-Konfiguration

Der Apache zeigt bei vielen Gelegenheiten – z.B. bei jeder Fehlermeldung – in der Standardkonfiguration den Servernamen und die eMail-Adresse des Webmasters an! Diese Werte lassen sich in den Konfigurationsdateien (unter SUSE in /etc/apache2/default-server.conf) einstellen:

ServerName MyServer
ServerAdmin webmaster@myserver.local

Trivial, aber oft übersehen: Hier sollten Phantasienamen stehen und keinesfalls gültige Werte! Für Paranoide: Wer in öffentlichen Foren unter dem Nickname »King Arthur« auftritt und seinen Servernamen dann auf »Camelot« setzt, gibt damit vielleicht wertvolle Hinweise für Ermittler... Die Erweiterung ».local« bei der eMail-Adresse verhindert ungewollten externen Mailversand, falls die Domain im Web tatsächlich existiert. Wer seinen Usern trotzdem Feedback-Möglichkeiten geben will, sollte hier eine anonyme Adresse angeben (irgendwas@mail.i2p).

2. nicht anonymisierte Erreichbarkeit verhindern

Wenn die Firewall den Port 80 geöffnet hat (in vielen Firewalls Standard), ist der Apache über die IP-Adresse ganz normal und ungesichert mit jedem Browser aus dem Web zugänglich – parallel zum anonymen Weg über I2P/Tor!

Eine erste Sicherheitsmaßnahme besteht darin, den Apachen an einem unüblichen Port lauschen zu lassen (z.B. im Bereich 100 bis 500). Jetzt noch im I2P-Tunnel/Tor-Config den Port ebenfalls anpassen, dann ist die Masse der »Gelegenheitssurfer« ausgesperrt. Natürlich muß dieser Port in der Firewall geperrt sein!

Wer sich nicht alleine auf seine Firewall verlassen will, kann den Apachen auch für Zugriffe von außen komplett sperren:

3. Absichern über die conf-Dateien des Apache

Je nach Installation und Programmversion gibt es entweder viele einzelne conf-Dateien im (SUSE-)Verzeichnis /etc/apache2/ und in dessen Unterverzeichnissen oder eine einzige große Datei »httpd.conf«, in der die Zugriffsrechte für die Verzeichnisse verwaltet werden. Zunächst sollte der Zugriff komplett gesperrt werden. Dazu sucht man den Eintrag <Directory /> bis </Directory> und ändert die Werte in:

<Directory />

   Options None
   AllowOverride All
   Order deny,allow
   Deny from all
   Allow from 192.168.

</Directory>

- »Options None« sperrt u.a. den Verzeichnisaufruf, - »AllowOverride All« sorgt dafür, daß der Apache .htaccess-Dateien in den einzelnen Verzeichnissen verarbeitet. Werden keine .htaccess-Files benötigt, kann man AllowOverride auf »None« stellen. Vorsicht: Hat man per .htaccess-Datei ein Verzeichnis mit einem Login-Schutz versehen, ist das Verzeichnis durch »AllowOverride None« nicht mehr geschützt! (Was sich sonst noch alles mit .htaccess-Files anstellen läßt, erklärt http://de.selfhtml.org/servercgi/server/htaccess.htm ausführlich). - »Order deny, allow« legt die Reihenfolge der Zugriffssteuerung fest und - »Deny from all« sperrt das Verzeichnissystem für alle Zugriffe. - mit »Allow from 192.168.« wird der Zugriff aus dem lokalen Netz erlaubt. Dabei erhalten alle Rechner aus dem internen IP-Adressraum 192.168.xxx.xxx Zugriff das Verzeichnis (Wenn sich I2P/Tor auf derselben Maschine befinden, kann man hier auch »localhost« eintragen).

Hintergrund: Durch das Tunneln der Verbindungen über I2P oder Tor »sieht« der Apache immer nur die IP-Adresse des anonymisierungs-Client und behandelt Anfragen aus den I2P-/Tor-Netzen als interne Anfragen. Alle anderen werden abgeblockt. Wenn der Apache auch noch Aufgaben im »normalen« Web ausführen soll und dafür allgemein erreichbar bleiben muß, lassen sich so einzelne Verzeichnisse anlegen, die ausschließlich intern bzw. über I2P/Tor erreichbar sind.

Jetzt ist erstmal alles abgedichtet und nun kann man analog zum Verzeichnissystem die Freigaben für einzelne Verzeichnisse – z.B. des DocumentRoot-Verzeichnis – einrichten:

<Directory "/srv/www/htdocs/">

AllowOverride All
Options None
Order deny,allow
Deny from all
Allow from 192.168.

</Directory>

Die Einstellungen sind gleich wie beim Hauptverzeichnissystem, lediglich die Pfade in <Directory "..."> sind die absoluten Pfade im lokalen Dateisystem

4. Fehlermeldungen verraten viel

Bringt man den Apachen z.B. durch den Aufruf einer nicht vorhandenen Datei dazu, eine Fehlermeldung wie den »Error 404« auszugeben, verrät er einiges über seinen Status und sein Wirtssystem. Welche Infos bei einer Fehlermeldung ausgegeben werden, läßt sich entweder zentral über die Datei »errors.conf« regeln, oder wieder einzeln für jedes Verzeichnis in den <Directory /> bis </Directory> -Einträgen. Ich bevorzuge Letzteres und damit sieht der Eintrag für das DocumentRoot-Verzeichnis so aus:

<Directory "/srv/www/htdocs/">

AllowOverride All
Options None
Order deny,allow
Deny from all
Allow from 192.168.
       ErrorDocument 400 "Error 400: bad request"
       ErrorDocument 401 "Error 401: unauthorized"
       ErrorDocument 403 "Error 403: locked or not mounted..."
       ErrorDocument 404 "Error 404: not found..."
       ErrorDocument 405 "Error 405: method not allowed"
       ErrorDocument 408 "Error 408: request time out"
       ErrorDocument 410 "Error 410: gone"
       ErrorDocument 411 "Error 411: length required"
       ErrorDocument 412 "Error 412: precondition failed"
       ErrorDocument 413 "Error 413: request entity too large"
       ErrorDocument 414 "Error 414: request URI too large"
       ErrorDocument 415 "Error 415: unsupported media type"
       ErrorDocument 500 "Error 500: internal server error"
       ErrorDocument 501 "Error 501: not implemented"
       ErrorDocument 502 "Error 502: bad gateway"
       ErrorDocument 503 "Error 503: service unavailable"
       ErrorDocument 506 "Error 506: variant also varies"

</Directory>

5. Apache und SSL

SSL-Verschlüsselung für den Apachen in Verbindung mit I2P/Tor einzusetzen, halte ich nur sehr begrenzt für sinnvoll. Wer aber seine Web-Pages auch mal schnell vom Internet-Cafe ohne I2P/Tor erreichen will, sollte unbedingt die Verbindung verschlüsseln und die entprechenden Verzeichnisse über .htaccess-Dateien mit Passwort vor fremdem Zugriff schützen. Man sollte jedoch bedenken dass dies die Anonymität kompromittiern könnte da die eepSite in Verbindung mit der IP Addresse gebracht wird. Für die SSL-Verzeichnisse (das kann natürlich auch das DocumentRoot-Verzeichnis sein), muß in den SSL-Einstellungen »Allow from all« eingestellt sein, um aus dem normalen Web den Server zu erreichen. Wie SSL funktioniert und wie man die Module und Zertifikate unter Apache ans Laufen bekommt, ist unter http://lamps.efactory.de/lamps-2-0.php beschrieben.

6. Umgang mit PHP

Wenn es ein Angreifer schafft, den Apachen per I2P/Tor oder per SSL zu erreichen und über ein html-Formular Javascript oder anderen Code auszuführen, nützen die ganzen o.g. Sicherheitseinstellung nichts. Besonders gefährlich ist es, wenn der Angreifer es schafft, z.B. den Befehl phpinfo() auszuführen. Dann kann man auch gleich seine im Teledienstegesetz vorgeschriebene »ladungsfähige Adresse« veröffentlichen... Zumindest alle mit PHP auswertbaren Formular-Felder sollten daher mit strip_tags() unschädlich gemacht werden.

Anonymes Filesharing mit I2P

Grundsätzliches vorweg: Filesharing über I2P ermöglicht nur den Austausch von Dateien innerhalb des I2P-Netzes. Es ist also nicht möglich, per I2P anonym an den bekannten großen P2P-Netzen teilzunehmen. Stattdessen wurden bestehende Filesharing-Dienste für I2P adaptiert, so dass mit ihnen Daten mit anderen I2P-Nutzern ausgetauscht werden können. Derzeit werden hierfür vor allem BitTorrent und Gnutella genutzt.

BitTorrent over I2P (BToI2P)

i2psnark

i2psnark ist mittlerweile mein persönlicher Favorit geworden. Er läßt sich über die Router-Konsole von I2P ansprechen und leicht per Weboberfläche bedienen. Auch die Erstellung eigener .torrent-Dateien ist mit i2psnark recht einfach, aber dazu später mehr.


I2P-BT

Neben dem integrierten i2psnark gibt es noch zwei weitere für I2P angepasste BT-Clients. Einer davon ist I2P-BT, der allerdings schon seit geraumer Zeit nicht mehr weiterentwickelt wird. Er funktioniert zwar noch, setzt aber ein installiertes Python 2.4.x/2.5.x voraus und ist von der Bedienung her nicht so komfortabel wie i2psnark.

I2PRufus

I2PRufus ist ein weiter I2P Bittorrent client der auf Rufus/G3 basiert. Gui mäßig hat es jede menge features die ein I2PSnark webinterface oder I2P-BT nicht bieten kann.

Syndie: Anonyme Foren und Blogs leicht gemacht

Da viele mit Syndie und seinen Möglichkeiten wahrscheinlich erst einmal nur sehr wenig oder gar nichts anfangen können, möchte ich als kurze Einführung etwas näher auf Syndie eingehen.

Zunächst möchte ich darauf hinweisen, daß es ein altes als auch ein "neues" Syndie gibt. Ich beziehe mich in diesem How to ausschließlich auf das neue Syndie, da es wesentlich leistungsfähiger ist als die alte Version und - noch viel wichtiger - im Gegensatz zu der alten Version auch aktiv weiterentwickelt wird.

Nun zu Syndie. Syndie ist ein anonymes, sicheres und zensurresistentes Tool zur Erstellung von verteilten Foren oder Blogs. Beiträge werden in Archiven gespeichert, sowohl lokal auf dem PC als auch auf Archivservern. Die Archive werden dann mit den Archivservern abgeglichen ("syndication") und von dort wieder an andere Syndie-User weiterverteilt. Mit dieser Vorgehensweise wird sichergestellt, daß es nahezu unmöglich ist, Beiträge zu zensieren, da diese wie oben beschrieben verteilt gespeichert werden. Ebenso ist es problemlos möglich, Beiträge mit Dateianhängen zu versehen.

Syndie sieht im übrigen verschiedene Sicherheitsstufen vor, was die Anonymität angeht. Wer nur lesend auf Foren zugreifen möchte, kann dies bedenkenlos tun. Im Logfile des Archivservers taucht bei der Synchronisierung des lokalen Archivs zwar die eigene IP-Adresse auf, aber keinerlei Information darüber, welche Foren gelesen werden. Wer es etwas sicherer haben und auch eigene Beiträge erstellen möchte, sollte den Weg über I2P oder Tor wählen. Wie wir weiter unten sehen werden, kann man jederzeit die gewünschte Zugangsmethode auswählen.

Darüber hinaus bietet Syndie selbstverständlich noch viele Features mehr, wie beispielsweise eine Schnittstelle zu Freenet. Ich werde darauf nicht näher eingehen, da dies den Rahmen dieses Tutorials zweifelsohne sprengen würde.

Installation von Syndie unter Windows

Als erstes muß Syndie heruntergeladen und installiert werden. Die jeweils aktuelle Version findest du unter http://syndie.i2p2.de/download.html

Die Installation von Syndie ist absolut simpel und bedarf keiner weiteren Erklärung. Folge einfach den Screenshots.

Image:Syndie_install_1.png

Image:Syndie_install_2.png

Image:Syndie_install_3.png

Image:Syndie_install_4.png

Image:Syndie_install_5.png

Image:Syndie_install_6.png

Image:Syndie_install_7.png

Image:Syndie_install_7.png

Konfiguration von Syndie unter Windows

Vorab: Wer Syndie nur verwenden möchte, um Informationen abzurufen (d.h. keine eigenen Beiträge schreiben) und auf bestimmte Foren zuzugreifen, muß nichts weiter tun als Syndie zu installieren und das gewünschte Forum zu abonnieren. Derartige Zugriffe erfolgen über das öffentliche Internet; I2P oder Tor müssen dazu nicht installiert sein!

Identität unter Syndie erzeugen

1. Beim ersten Start fordert Syndie dazu auf, einen Namen zu vergeben, unter dem eigene Beiträge in Syndie veröffentlicht werden. Aus naheliegenden Gründen verwendet man hier selbstverständlich keinen Nick, mit dem man sich in den letzten 10 Jahren in jedem Board auf diesem Planeten registriert hat ;)


Image:Syndie_config_1.png


Zugriffsmöglichkeiten auf Archive (anonym/nicht anonym)

2. Als nächstes definieren wir, wie wir auf Syndie-Archive zugreifen wollen bzw. wie diese abgeglichen werden. Diese Abfrage taucht übrigens nur beim ersten Start von Syndie auf:


Image:Syndie_config_2.png

Zugriff auf Archivserver über das öffentliche Internet

3. Standardmäßig erfolgen Zugriffe auf Syndie-Archive über das öffentliche Internet (nur lesend, d.h. in der Betriebsart "pull" werden keine Beiträge versendet). Wer nicht vorhat, in Syndie ein eigenes Forum zu eröffnen oder eigene Beiträge zu verfassen, der kann es bei dieser Einstellung belassen:


Image:Syndie_config_3.png


Zugriff auf Archivserver über I2P/Tor

4. Für den Fall, daß auch eigene Beiträge anonym verfasst werden sollen, sorgen wir erst einmal dafür, daß zukünftig auch nur noch anonym zugegriffen wird. Wir deaktivieren deshalb zunächst den "pull only"-Task über das Kontextmenü (mit der rechten Maustaste auf die Beschreibung klicken):

Image:Syndie_config_4.png

Einstellungen für Zugriff über I2P anpassen

5. Wer einen aktiven I2P-Knoten in Betrieb hat, wählt die Option "over I2P" aus und korrigiert ggf. die Einstellungen:


Image:Syndie_config_5.png

Zugriff über einen entfernten I2P-Knoten

6. Sollte der I2P-Knoten auf einem entfernten System laufen, dann muß die IP-Adresse bzw. der Hostname hier geändert werden:


Image:Syndie_config_6.png


Suchen und hinzufügen von Foren

7. Jetzt kommen wir zum spannenden Teil, nämlich dem Suchen und hinzufügen von Foren. Das geschieht über "Forums -> Find forums". Es gibt verschiedene Suchkriterien für Foren wie Name, Stichwörter oder Hashwerte. Wenn ein Forum gefunden wird, dann wird es links angezeigt und kann mit dem Button ACCEPT übernommen werden:


Image:Syndie_config_9.png


Image:Syndie_config_10.png


Image:Syndie_config_11.png

Handling von Syndie-Foren

8. Nun befinden wir uns auch schon im gerade hinzufügten Forum. Beiträge, die mit Pfeil nach rechts versehen sind, können aufgeklappt werden (Threads). Zusätzlich taucht dieses Forum auch als neuer Reiter oben auf:


Image:Syndie_config_12.png

Anzeigen aller aktiven Foren

9. Selbstverständlich gibt es nicht nur ein Forum in Syndie, sondern viele. Wer alle aktiven Foren auf einen Blick sehen möchte, kann dies über "Forums -> Read all by forum" tun. Wenn diese Option ausgewählt wird, werden alle vorhandenen Foren mit Inhalten angezeigt. Die Zahl in der Klammer gibt übrigens die Anzahl der Beiträge im jeweiligen Forum an:


Image:Syndie_config_14.png

Erstellen von Beiträgen in einem Forum

10. Zurück zu unserem Beispielforum. Beiträge zu lesen ist eine Sache, selber welche zu posten eine andere. Dies geht in Syndie ganz einfach über den Button POST, der eine neue Maske auf den Schirm zaubert. An dieser Stelle muß ich ein paar wichtige Hinweise loswerden:

- Beim Veröffentlichen von Screenshots wie auf meinem Beispiel unbedingt darauf achten, daß der Author nicht erkennbar ist. Andernfalls ist eure Syndie-Identität verbrannt und ihr müßt euch eine neue erstellen!

- Vor dem erstellen eines Beitrags sollte man auf "Anyone can read the post" umstellen, da Beiträge andernfalls nur für authentifizierte User sichtbar sind

- Beiträge können ganz normal erstellt werden. Nach dem posten klicken wir am besten gleich auf "Post the message", mit "Save the message for later" wird sie nämlich zunächst als Entwurf gespeichert

Image:Syndie_config_15.png

Image:Syndie_config_16.png

Abgleich von Archiven

11. Wenn wir unseren Beitrag gleich versenden wollen, wechseln wir auf den Reiter "Syndicate" und stoßen die Synchronisierung mit dem Archivserver manuell an. Dazu klicken wir mit der rechten Maustaste auf den Eintrag "...(over IP)" und wählen den zweiten Menüpunkt im Kontextmenü aus:


Image:Syndie_config_17.png

Personal tools