In der Zwischenzeit sind alle einzelnen Artefakte erstellt und für sich selbst lauffähig. Wie bereits im Beitrag zu XMPP- und Tor erklärt, ist der Tor Client in der Lage, eine Verbindung mit dem Netzwerk herzustellen und über eine Onion-Adresse erreichbar zu sein. Bei korrekter Konfiguration des VHosts (Onion-Adresse) kann Prosody auch erfolgreich den Server starten und eine Verbindung über einen XMPP-Client (z.B. Conversations) hergestellt werden. Auch das Webinterface auf NodeJS-Basis ist soweit lauffähig. All diese Teile müssen jedoch in das Image integriert werden und dafür gesorgt werden, dass diese beim Boot erfolgreich starten. Zu diesem Zweck wurde ein zentrales Start-Script erstellt, welches wiederum alle Bestandteile des SDIM-Projekts startet. Dazu gehören die folgenden Teile:

  • Konfigurieren und Starten von Tor
  • Warten auf eine Tor Verbindung
  • Konfigurieren und Starten von Prosody
  • Start der Webanwendung (NodeJS)

Tor

Beim Erstellen des Images wird das Tor-Paket installiert. Dadurch stellt der Client automatisch eine Verbindung mit dem Netzwerk her und speichert sein Schlüsselpaar ab. Da wir jedoch vermeiden müssen, dass jede SDIM-Instanz aus dem gleichen Image auch den gleichen Onion-Hostname erhält, wird dieses Schlüsselpaar am Ende der Imageerstellung gelöscht. Beim ersten Start des RaspberryPis prüft ein Script deshalb auf die Existenz des Schlüsselpaars: Ist das Schlüsselpaar nicht vorhanden, wird ein neuer Schlüssel (und damit eine neue Onion-Adresse) generiert. Dies tritt primär beim ersten Start des RaspberryPis auf. Zu den nachfolgenden Zeitpunkten hat der RaspberryPi jeweils ein eigenes Schlüsselpaar und muss deshalb kein neues generieren.

Prosody

Auch die Prosody-Pakete werden bei der Imageerstellung direkt im Image integriert. Auch hier generiert der Server direkt ein Schlüsselpaar, welches für die Transportverschlüsselung zwischen Client und Server dient. Auch dieses Zertifikat sollte idealerweise bei jeder SDIM-Instanz unterschiedlich sein, damit der Anwender eine mögliche Man-In-The-Middle-Attacke erkennen kann.

Da Tor aber erst beim Start des RaspberryPis seinen Onion-Namen bezieht; diese Adresse aber für die Zertifikatserstellung und die Konfiguration des VHosts benötigt wird, setzen wir auch hierbei auf ein Bash-Script. Dieses Script bezieht die Onion-Adresse von Tor und prüft auf Vorhandensein des Prosody-Schlüsselpaars. Ist das Schlüsselpaar nicht vorhanden, wird ein Neues passend für die Onion-Adresse generiert. Anschließend erstellt das Script die VHost-Konfiguration für Prosody, durch die der Server erst die Information erhält, welchen Hostname/Domainname er für die Jabber-IDs verwenden soll. Abschließend wird der Prosody-Dienst neugestartet, damit alle Änderungen aktiv werden.

NodeJS

Die letzte Herausforderung ist die Integration der Node-Anwendung (Webinterface zur Administration). Das Grundpaket „nodejs“ wird bei der Imageerstellung aus den offiziellen Paketquellen installiert. Ebenfalls durch das Installationsscript wird die Webanwendung in das Image kopiert und in /opt/sdim/webinterface abgelegt (vgl. Overlay-Verzeichnis).  Das zentrale SDIM-Startscript werden abschließend noch alle benötigten Node-Module per npm install -a installiert und die Node-Anwendung gestartet.

 

Abschließend sind noch kleine Modifikationen an dem Webinterface selbst nötig, die jedoch keine Anpassung am Image-Erstellungs-Prozess erfordern. Zusätzlich stehen noch abschließende Teste zur vollständigen Funktionalität des Images an.

SDIM: Das Image lernt Prosody, Tor und NodeJS

2 Gedanken zu „SDIM: Das Image lernt Prosody, Tor und NodeJS

Kommentare sind geschlossen.