Dienste die man im Tor-Netzwerk bereit stellt, können bei Bedarf ausschließlich autorisierten Gegenstellen verfügbar gemacht werden.
Alle Befehle dieser Anleitung werden am Client-Rechner ausgeführt. Einerseits vereinfacht dies die Erläuterungen, andererseits wird vermieden den privaten Schlüssel an weiteren Orten zwischen zu speichern.
Voraussetzungen
- Es wird davon ausgegangen, dass SSH-Zugriffe zum Server als root möglich sind.
- Der versteckte Dienst muss bereits am Server eingerichtet und aktiv sein (siehe HiddenServiceDir in
/etc/tor/torrc
). - Am Client muss PyNaCl vorhanden sein. Unter Void Linux wird es beispielsweise via
xbps-install -Su python3-pynacl
installiert. - Am Client muss der Befehl openbsd-nc vorhanden sein. Unter Void Linux installiert man das entsprechende Paket beispielsweise via
xbps-install -Su openbsd-netcat
.
Umgebung definieren
Diese Konstanten müssen im Verlauf der gesamten Anleitung korrekt gesetzt sein.
Schlüsselpaar generieren
Zum Generieren des Schlüsselpaars wird ein einfaches Python-Skript verwendet, dessen Inhalt zumindest auf verdächtige Auffälligkeiten geprüft werden sollte.
Öffentlichen Schlüssel zu Server kopieren
Privaten Schlüssel am Client hinterlegen
Vorgenommene Änderungen in Tor übernehmen
Wichtig: Man sollte eine neue Konfiguration sehr vorsichtig übernehmen. Schränkt man hier beispielsweise den Zugang zu SSH-über-Tor ein, sollte sicher gestellt sein, dass auch von Tor unabhängig eine SSH-Verbindung aufgebaut werden kann.
Test vor dem Einschränken
Da vor dem Neustart der Dienste die Client Authorization noch inaktiv ist, muss die Verbindung an dieser Stelle noch möglich sein.
Server-Konfiguration neu laden
Der Befehl hierzu hängt von der verwendeten Diensteverwaltung ab.
Test nach dem Einschränken
Da der Server nun bereits auf autorisierte Gegenstellen begrenzt ist, muss an dieser Stelle jeder Verbindungsversuch scheitern:
Client-Konfiguration neu laden
Der Befehl hierzu hängt von der verwendeten Diensteverwaltung ab.
Test nach Aktivieren des Client-Schlüssels
Da sich der Client dem Server gegenüber nun ordnungsgemäß authentifiziert, muss an dieser Stelle die Verbindung wieder möglich sein: