Kurzanleitung: Hidden Service mit Tor aufsetzen

Es ist verblüffend einfach, einen Hidden Service mit Tor aufzusetzen. Ich beschreibe hier das Vorgehen, das weniger als fünf Minuten Lebenszeit in Anspruch nimmt, für Linux. Für alle Aktionen an der Kommandozeile setze ich root-Rechte voraus.

Schritt 1: Einen Webserver besorgen und installieren.

Ob es sich um apache handelt, der inzwischen ziemlich »moppelig« geworden ist, oder um nginx, ist dabei eine Geschmacksfrage. Für einfache Aufgaben ist nginx wesentlich einfacher zu konfigurieren und außerdem deutlich performanter, während apache doch eine Menge Lesen verlangt. Und nein, das bedeutet nicht, dass man mit nginx nichts »komplexeres« machen kann…

Wer ein debianoides Linux (Debian, Ubuntu, Raspbian, Mint, Trisquel und viele mehr) verwendet, tippt einfach als Admin in der Konsole…

# apt-get install apache2

…oder…

# apt-get install nginx

…und hat hinterher einen laufenden Webserver, der beim Systemstart automatisch gestartet wird. Über die Konfiguration kann ich mich hier nicht in der gebotenen Ausführlichkeit auslassen, aber dafür gibt es im Web jede Menge Dokumentation.

Andere Distributionen mit rpm-Paketmanagement (insbesondere RedHat, Fedora oder SuSE) gehen natürlich anders vor, und wer Slackware benutzt, hat hoffentlich schon gelernt, wie man sich in einer Distribution ohne Paketmanagement behilft (es ist auch nicht so schwierig). Freunde von Arch Linux und Gentoo wissen sich sowieso zu helfen. 😉

Schritt 2: Die eigene IP-Adresse herausbekommen

# ifconfig | grep inet | grep -v '127.0.0.1'
inet addr:192.168.13.199  Bcast:192.168.13.255  Mask:255.255.255.0
# _

Diese IP-Adresse wird später, in Schritt 4, für die Konfiguration von Tor benötigt.

Schritt 3: Tor besorgen und installieren

Hier wieder der Teil für die debianoiden Linuxe:

# apt-get install tor

Das wars.

Schritt 4: Hidden Service in Tor konfigurieren

Hierfür muss die Konfigurationsdatei torrc im Editor bearbeitet werden – und tatsächlich sind nur zwei Zeilen einzufügen, die folgendermaßen aussehen (die IP-Adresse muss natürlich durch die richtige aus Schritt 2 ersetzt werden):

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 192.168.13.199:80

Unter unixoiden Betriebssystem, die sich an den Dateisystemstandard halten, liegt diese Datei im Verzeichnis /etc/tor, für andere Betriebssysteme kann ich nichts sagen.

Nachdem die beiden Zeilen eingefügt wurden, steht noch die kleine Arbeit an, das Verzeichnis hidden_service an der konfigurierten Stelle anzulegen und die Rechte entsprechend zu setzen – dabei wird der im Folgenden verwendete technische User, unter dem der Tor-Dienst läuft, in nicht-debianoiden Distributionen aus naheliegenden Fiesheitsgründen völlig anders heißen.

Es ist aber nicht so viel Arbeit.

# cd /var/lib/tor
# mkdir hidden_service
# chown debian-tor:debian-tor hidden_service
# chmod 0700 hidden_service
# _

Nun gilt es nur noch zwei Dinge zu tun: Als erstes wird der Tor-Dienst neu gestartet, damit er die neue Konfiguration verwendet.

Wenn es sich um ein Linux mit systemd handelt, geht das so:

# systemctl restart tor
# _

Und wenn es sich um ein Linux mit sysvinit handelt, geht es so:

# /etc/init.d/tor restart
# _

Danach sollten im Verzeichnis hidden_service zwei Dateien liegen:

# ls -l
-rw------- 1 debian-tor debian-tor  23 Jan 29 22:10 hostname
-rw------- 1 debian-tor debian-tor 887 Jan 29 21:42 private_key
# _

In der Datei hostname steht der Onion-Domainname, unter dem der Hidden Service erreichbar ist – der wird natürlich anders sein als hier:

# cat hostname
z6bacnlvodyije26.onion

Wenn das nicht geklappt hat, noch einmal die Bearbeitung der torrc überprüfen und auch einen Blick auf die Rechte des Verzeichnisses hidden_service werfen.

Schritt 5: Hidden Service testen

Hierfür muss der Browser für die Benutzung von Tor konfiguiert werden. Beim Firefox ist hierzu in den Einstellungen der Punkt »Erweitert« auszuwählen, dort der Unterpunkt »Netzwerk«, wo dann unter »Verbindung« auf »Einstellungen« zu klicken ist. (Ja, ich weiß, im Gegensatz zu den einfachen Dingen an der Kommandozeile hirnt das alles ein bisschen…) Es ist »Manuelle Proxy-Konfiguration« auszuwählen und unter SOCKS-Host 127.0.0.1, Port 9050 einzutragen. Darunter ist SOCKS v5 zu aktivieren. Das Firefox-Projekt hat sich nicht gerade Mühe gegeben, diese Einstellungen leicht auffindbar oder leicht bedienbar zu machen. Für andere Browser kann ich keine Aussagen machen, aber das Internet ist voller Dokumentation.

Nach abschließendem Klick auf »OK« kann man hier schnell überprüfen, ob der Browser Tor verwendet. Dies sollte immer der Fall sein.

Ich empfehle übrigens, sich gut zu merken, wie man diese Einstellung wieder rückgängig macht – sonst bekommt man bei eventuellen Problemen nicht einmal mit seinem Webbrowser mehr eine Verbindung zum Internet. Die Einstellung »Kein Proxy verwenden« dürfte bei fast jedem richtig sein.

Aber warum hat der Proxy jetzt die IP-Adresse 127.0.0.1, also die Loopback-Adresse des Rechners, an dem man gerade arbeitet? Nun, es läuft ja ein in Schritt 2 installierter Tor-Dienst auf dem lokalen Rechner, den wir natürlich benutzen. Port 9050 ist der Standardport; um einen anderen Port zu verwenden, müsste man SocksPort in der Datei torrc verändern. Dies wird wohl niemals nötig sein.

Schritt 6: Endlich! Ein laufender Hidden Service!

So, und damit zum Spaß an der Sache: In die Adresszeile des Browsers den Rechnernamen aus der Datei hostname eingeben – gut, dass es eine Zwischenablage gibt – und nach einer gewissen Wartezeit (es können beim ersten Aufruf schon zehn bis zwanzig Sekunden werden) erscheint die Startseite des in Schritt 1 lokal installierten Webservers. Diese kann unter dieser Adresse aus dem gesamten Internet heraus aufgerufen werden, und das recht anonym und schwierig überwachbar. Einzige Voraussetzung dafür ists, dass Tor benutzt wird. Die in diesem Webserver zur Verfügung gestellten Inhalte sind nicht öffentlich sichtbar, was ja auch die Bedeutung des Wortes Hidden Service ist – um jemanden Zugriff darauf zu geben, muss man ihm (oder ihr) also die Adresse zukommen lassen. Wenn es um empfindliche, private Dinge geht, aber besser nicht in einer unverschlüsselten E-Mail, die offen wie eine Postkarte durch das Internet befördert wird, denn sonst kann man sich die Mühe mit dem Hidden Service gleich sparen.

Wer so etwas ständig laufen lassen möchte, ist vermutlich gut mit einem Raspberry Pi beraten, der deutlich weniger Energie verbraucht als ein PC.

Ach ja: Wer ab jetzt nicht ständig mit Tor surfen möchte, sollte hinterher die Proxy-Einstellungen im Browser zurücksetzen. Und wer es vielleicht doch manchmal möchte, ist gut beraten, sich ein Browser-Addon für das schnelle Umschalten zwischen verschiedenen Proxy-Konfigurationen zu besorgen.

Veröffentlicht unter Technisches | Verschlagwortet mit , , | 13 Kommentare

Ein WordPress-Problem mit OEmbed

In der aktuellen WordPress-Version 4.4 gibt es ein ärgerliches, kleines Problem mit der neuen OEmbed-Funktion, die dafür sorgt, dass andere Websites (insbesondere S/M-Sites¹) eine Vorschau des Blogbeitrages einbetten können.

Wenn man – um die Installation ein bisschen zu härten, was ich übrigens unbedingt empfehlen würde – sein wp-admin-Verzeichnis mit einem Passwort geschützt hat, kann es dabei zu folgendem Problem kommen:

Eine Darstellung der eingebetteten Ansicht im Browserfenster mit einem Blogartikel, überlagert von einer Eingabeaufforderung für Benutzername und Passwort

Der Betrachter wird aufgefordert, ein Passwort für das geschützte Verzeichnis wp-admin einzugeben.

Die Ursache dieses Problemes ist folgende:

Detail aus der eingebetteten Ansicht mit dem Namen des Blogs und einem WordPress-Logo

Das WordPress-Logo in der eingebetteten Ansicht wird aus dem Verzeichnis wp-admin genommen.

Ich halte das für einen Fehler und habe deshalb eben ein Ticket dafür aufgemacht. Der Fehler liegt in der manchmal falschen Annahme, dass das Verzeichnis wp-admin für das gesamte Web frei lesbar ist. Zur Behebung habe ich vorgeschlagen, ein Bild mit dem WordPress-Logo im besser geeigneten Verzeichnis wp-includes zu platzieren und innerhalb der eingebetteten Ansicht zu verwenden, so dass es möglich bleibt, den Zugriff auf wp-admin einzuschränken.

Da es sich um einen Fehler handelt, der nur bei wenigen Menschen auftritt, kann es sein, dass er nicht schnell behoben wird. Ich habe eher schlechte Erfahrungen mit der Behandlung derartiger Fehler gemacht, die auch mal ganz nach hinten gerückt werden und jahrelang in der Versenkung verschwinden, während unser aller Lieblingsbloatware zu meinem Missfallen mit allerlei neuen »Beglückungsideen« der Entwickler aufgeplustert wird. (Nachtrag: Der Fehler wird in der kommenden WordPress-Version 4.5 behoben. Da es einen einfachen Workaround gibt, sehe ich in der Verzögerung kein Problem.)

Zum Glück gibt es einen sehr einfachen

Workaround

Wenn man dem Blog ein Website-Icon gibt, wird dieses in der eingebetteten Ansicht anstelle des WordPress-Logos verwendet. Das geht folgendermaßen (Beschreibung für die gegenwärtige deutsche Sprachdatei):

  1. Passendes PNG-, JPEG- oder GIF-Bild, am besten mit 512×512 Pixeln, anfertigen
  2. Auf der Startseite des Blogs oben im Menü auf »Anpassen« klicken
  3. Dort »Website-Informationen« auswählen
  4. Das Bild als »Website-Icon« hochladen, gegebenenfalls gewünschten Bereich ausschneiden
  5. Nicht vergessen, diese Änderung auch zu speichern
  6. Das eben beschriebene Problem ist damit behoben

Diesen Workaround habe ich hier und in Unser täglich Spam getestet.

Nebenwirkung: Dieses Website-Icon wird auch im Browser als Favicon angezeigt. In den meisten Fällen sollte dies kein Problem sein.

Mein Dank geht an R., die mich auf diesen Fehler hingewiesen hat. Um den Fehler einzugrenzen, habe ich eine unerfreulich lange Zeit mit den Logdateien zugebracht, und dabei habe ich bemerkt, dass dieser Fehler wohl in den letzten Tagen tausendfach durch Links bei Facebook, Twitter und im Fediverse aufgetreten ist, ohne dass jemand auf die Idee gekommen wäre, mir das mitzuteilen. (Außerdem habe ich bemerkt, dass es eine gute Idee ist, wp-admin ein bisschen besser zu schützen, denn Hacker hacken nun mal.) Nur ein beseitigter Fehler ist ein guter Fehler… 😉

¹S/M ist meine Abk. für »social media«. Aus Gründen.

Veröffentlicht unter Technisches | Verschlagwortet mit , , , , , | Schreibe einen Kommentar

TCP-D1

Direktlink zu Soundcloud

Veröffentlicht unter Musik | Verschlagwortet mit , , | Schreibe einen Kommentar

Heise-Forum (Symbolbild)

Junkfood-Tütchen mit Aufdruck: Trolli -- Sour Glowworms. Dazu der Text: Heise-Forum (Symbolfoto)

Zum Inhalt der Tüte lässt sich nur sagen: Es schmeckt zwar intensiv, aber wenn man seinen Gaumen ehrlich befragt, auch recht synthetisch und eklig. 😀

Veröffentlicht unter Allgemeines | Verschlagwortet mit , , , , | Schreibe einen Kommentar

Warum ich »Let’s encrypt« (vorerst) nicht nutze

Ich bin heute allen Ernstes einige Male gefragt worden, warum ich hier nicht ein freies TLS-Zertifikat von »Let’s encrypt« nutze und immer noch keine HTTPS-Verbindungen anbiete.

Nun, um es nicht ständig wiederholen zu müssen, sondern einfach verlinken zu können, meine ziemlich ausführliche Antwort darauf:

  1. Generell gilt: Verschlüsselung löst hier¹ exakt kein einziges Problem. (Niemand muss hier jemals persönliche Daten oder Ähnliches angeben, und wer verschlüsselt und darüber hinaus sogar anonym lesen möchte, hat Tor zur Verfügung.) Es gibt hier nur veröffentlichte, öffentlich sichtbare, mit jedem Browser unmittelbar zugängliche Ressourcen. Verschlüsselung vergrößert aber die Komplexität der Installation. Das ist in meinen Augen ein schlechter Tausch².
  2. »Let’s encrypt« ist in der Beta-Phase. Wenn ich das nicht gerade tun muss, nehme ich nichts, was als »Beta« deklariert ist, sondern warte, bis die übelsten Bugs draußen sind und ein robustes Produkt entstanden ist. Ich flicke nicht gern hinter unfertigen Lösungen hinterher.
  3. »Let’s encrypt« bietet mir einen vollständig automatisierbaren Prozess an. Niemand verstehe mich falsch! Ich bin stinkefaul. Ich automatisiere auch alles mögliche, aber die Skripten dafür schreibe ich selbst. Es sind kleine Skripten, oft brachial einfach, aber eben auch selbst unter den Bedingungen einer gewissen Dringlichkeit unmittelbar verständliche Skripten. Ich habe noch nie eine gute Erfahrung mit Software gemacht, die mir als »bequem«, »mühelos«, »einfach« und »automatisch« angeboten wird. Dafür habe ich es mehr als einmal erlebt, dass der Aufwand für Nacharbeiten erheblich wird, wenn mir eine Software mit derartigen Attributen angeboten wird.
  4. »Let’s encrypt« verlangt von seinen Nutzern, eine relativ komplexe Installation auf dem Server aufzusetzen. Es handelt sich nicht um ein einfaches Perl-Skript, das so, wie es geliefert wird, einfach läuft. Ich habe außerordentlich große Hemmungen, die Installation eines Servers komplexer zu gestalten, als dies unbedingt erforderlich ist. Komplexität ist das genaue Gegenteil von Sicherheit, Robustheit und Zuverlässigkeit. Wie Menschen, die ebenfalls kompetent, die aber als richtige Fachleute für Computersicherheit noch eine Spur fundamentalistischer an die Sache herangehen, auf die eingeforderte Laufzeitumgebung für »Let’s encrypt« reagieren, lässt sich etwa in Fefes Blog nachlesen. Sehr geschmacksintensiv sind dort auch die Anmerkungen zu den Automatismen…
  5. »Let’s encrypt« hat Sponsoren, die überhaupt nicht vertrauenswürdig sind, wenn es um Fragen der Sicherheit und Privatsphäre von Web-Nutzern geht:

    Die Sponsoren von Let’s Encrpyt sind unter anderem Akamai, Cisco und Mozilla. Diese haben sich zur Internet Security Research Group (ISRG) zusammengefunden, um HTTPS zum Standard im Internet zu machen. Neuerdings ist auch Facebook mit an Bord

    Cisco ist eine Unternehmung, die sich dabei erwischen ließ, vorsätzlich über das Internet zugreifbare Hintertüren in die Firmware ihrer Netzwerkhardware einzuprogrammiert zu haben. Eine Software, bei der die in meinen Augen verbrecherische und offen kundenverachtende Unternehmung Cisco auch nur in die Nähe gekommen ist, werde ich garantiert auf keinem Server installieren, über den ich die Verantwortung habe. Und dass ausgerechnet der bekannte Internetüberwacher, Datensammler, Privatsphärenverachter, Menschenvermarkter und Spammer namens Facebook daran beteiligt ist, lässt mir das Brötchen wieder hochkommen, das ich eben gegessen habe.

Wer immer noch glaubt, dass »Let’s encrypt« eine tolle Idee ist, weil es ja in diversen journalistischen Produkten – die übrigens wegen der eingeblendeten Werbung praktisch niemals selbst HTTPS für ihre Websites verwenden und wegen der Beliebtheit von Werbeblockern immer häufiger bezahlte Reklame als einen redaktionellen Artikel ausgeben – als tolle Idee angepriesen wird: Immer nur zu! Ihr seid allesamt erwachsene Menschen. Aber jammert nicht, wenn sich das als die größte Scheiße des Jahrzehnts herausstellt. Ein Gehirn wird durch Benutzung übrigens viel nützlicher.

Warum ich dieses »Let’s encrypt« nicht nutze, sollte jedenfalls klar und hoffentlich auch verständlich sein.

Nun noch etwas, was für andere vielleicht etwas unverständlicher klingt, ja, vielleicht sogar wie das wirre Gestammel eines Verschwörungstheoretikers.

In meinen Augen wäre für alle Menschen viel mehr damit gewonnen, dass man eine große Kampagne für verschlüsselte E-Mail – also für prinzipiell schützenswerte und oft empfindlich weit in die Privatsphäre oder in geschäftliche Schutzbereiche hineinreichende Kommunikation zwischen Menschen unter den Bedingungen monströser staatlicher Überwachungsapparate – macht, als dass man mit riesen Reklameaufwand und unter Beteiligung diverser Medien die Auffassung in jedes Hirn stanzt, der verschlüsselte Transport offener, für den einfachen Zugang im Web veröffentlichter Inhalte sei eine Lösung für irgendein Problem. Die Tatsache, dass diese gezielte Verschiebung der Aufmerksamkeit von einem Problem auf ein Scheinproblem ausgerechnet von Unternehmen aus genau demjenigen Staat vorgetragen wird, der mit monströsem Aufwand eine Totalüberwachung menschlicher und geschäftlicher Kommunikation im Internet durchführen will, ist dabei gewiss kein Zufall.

Eine Kampagne für verschlüsselte E-Mail wäre gleichzeitig eine Kampagne für digitale Signatur von E-Mail. Wenn E-Mails standardmäßig digital signiert sind, sind diverse Formen der Internet-Kriminalität stark erschwert, da der Absender einer E-Mail jenseits jedes vernünftigen Zweifels sichergestellt werden kann. Weder das allgemeine Phishing, noch der Versand von Schadsoftware mit gefälschtem Absender eines Geschäftspartners, Unternehmens oder oberflächlichen Bekannten noch der personalisierte Betrug der Marke »Ich sitze hier in Sevilla fest, habe meine Tasche verloren, habe keinen Ausweis mehr, kannst du mir kurz 300 Euro über Western Union rüberbeamen, damit ich zur Botschaft komme, kriegst du auch nächste Woche zurück« sind möglich, wenn die Menschen durchgehend digital signierte E-Mail verwenden und die Signaturen auch überprüfen (was sich sehr gut durch eine Mailsoftware unterstützen lässt). Hier würden also – im Gegensatz zu »Let’s encrypt« – konkrete Probleme gelöst, nämlich das Problem der gegenwärtigen Internetkriminalität.

Bei einer derartigen Kampagne für verschlüsselte E-Mail könnte die Mozilla Foundation auch gleich als Allererstes damit anfangen, dafür zu sorgen, dass ihre beliebte Mailsoftware »Thunderbird« in absehbarer Zeit nicht mehr eines Plugins bedarf, um PGP nutzen zu können. Aber die Mozilla-Foundation (die ebenfalls in den USA sitzt) setzt zurzeit lieber andere Schwerpunkte als die Verschlüsselung persönlicher Kommunikation, nämlich den verschlüsselten Transport offener verfügbarer Inhalte, der in vielen Fällen exakt null Probleme löst.

Bei mir, der ich zugegebenermaßen ziemlich das Gras wachsen höre, klingen da alle Alarmglöckchen auf einmal.

Konzentriert euch aufs Wesentliche, Leute! Konzentriert euch auch dann noch aufs Wesentliche, wenn euch eine ganze Horde von Journalisten und PR-Fratzen allmedial entgegenschreit, etwas anderes sei wesentlich. Haltet private Kommunikation verschlüsselt, und lasst euch nicht und niemals erzählen, dass der verschlüsselte Transport offener Inhalte ein Problem löst¹! Ich schreibe diesen (vielleicht etwas merkwürdigen) Text doch auch nicht mit Zaubertinte, die erst wieder lesbar gemacht werden müsste, nein, ich schreibe ihn, damit er lesbar ist. Für jeden lesbar ist.

Ach!

¹Es gibt mehrere Situationen, in denen TLS ein Problem löst. Überall, wo Daten übertragen werden, die nicht offen durch das Internet übertragen werden sollten, ist TLS eine Lösung.

²Das einzige Projekt, wo ich zurzeit ernsthaft drüber nachdenke, ist das Spamblog – denn dort gibt es immer wieder einmal Kommentare von Opfern der gängigen Betrugsmaschen, und die halte ich für schutzwürdig.

Veröffentlicht unter Technisches | Verschlagwortet mit , , , | 3 Kommentare