lernstick-Klassenraumverwaltung mit iTALC

März 30, 2012

Einige Lehrpersonen, die mit dem lernstick unterrichten, haben sich von uns eine Lösung zur Klassenraumverwaltung gewünscht. Das bekannteste Programm dazu in der Welt der Freien Software ist iTALC. Mit diesem Programm können Lehrpersonen die Bildschirme der SchülerInnen beobachten, fernsteuern, sperren, eine Demo zeigen, an-/ausschalten und noch vieles andere mehr.

Die Installation unter Debian-basierenden Distributionen ist denkbar einfach: Auf den lernsticks der SchülerInnen muss das Softwarepaket „italc-client“ installiert werden und auf den lernsticks der Lehrpersonen das Softwarepaket „italc-master“. Damit beide Programme auch im Startmenü erscheinen, haben wir für den lernstick noch das Paket „lernstick-italc“ erstellt, das ebenfalls installiert werden sollte. In der nächsten lernstick-Version werden alle diese Softwarepakete sogar schon vorinstalliert sein, so dass die nachträgliche Installation dann nicht mehr notwendig sein wird.

Da der Zugriff auf die Computer der SchülerInnen nur über einen Schlüssel möglich ist, muss die Lehrperson zuerst das entsprechende Schlüsselpaar erzeugen. Dazu muss im Startmenü „System -> Terminal“ geöffnet und folgender Befehl eingegeben werden:

sudo ica -createkeypair

Das durch diesen Befehl erzeugte Schlüsselpaar besteht aus dem privaten Schlüssel, der nur für die Lehrperson selbst zugänglich sein soll, und dem öffentlichen Schlüssel, der auf die lernsticks aller SchülerInnen verteilt werden muss. Nach der Ausführung des obigen Befehls sind beide Schlüssel jedoch aus Sicherheitsgründen nur für den Systemadministrator lesbar. Damit die Schlüssel auch für die Lehrperson lesbar sind, muss folgender Befehl eingegeben werden:

sudo chmod 644 /etc/italc/keys/public/teacher/key /etc/italc/keys/private/teacher/key

Der öffentliche Schlüssel, der in der Datei /etc/italc/keys/public/teacher/key abgelegt ist, muss nun auf die lernsticks der SchülerInnen (im gleichen Pfad!) verteilt werden. Dazu kann man sich verschiedener Methoden bedienen. Entweder legt man den öffentlichen Schlüssel auf einem Netzwerkspeicher (Dateifreigabe im lokalen Netzwerk, Webdienste, …) ab, so dass sich alle SchülerInnen den öffentlichen Schlüssel selbst herunterladen können, oder man kopiert den Schlüssel manuell vom lernstick der Lehrperson auf die jeweiligen lernsticks der SchülerInnen. Da man zum Kopieren des Schlüssels in den Pfad /etc/italc/keys/public/teacher/key Administrationsrechte benötigt, muss man zum Kopieren auch im Startmenü „System -> Dateimanager mit Administratorrechten“ starten und den Kopiervorgang mit diesem Dateimanager durchführen. Man muss ebenfalls darauf achten, dass die SchülerInnen den öffentlichen Schlüssel lesen können. Wenn man sich nicht sicher ist, ob beim Kopieren die Berechtigungen korrekt gesetzt worden sind, kann man auf dem lernstick der SchülerInnen folgenden Befehl in einem Terminal eingeben:

sudo chmod 644 /etc/italc/keys/public/teacher/key

Nachdem nun die Schlüssel alle richtig verteilt worden sind, müssen nun die notwendigen Softwarekomponenten gestartet werden. Sowohl die SchülerInnen als auch die Lehrperson(!) müssen dazu im Startmenü „System -> iTALC-Client“ starten. Die Lehrperson muss zusätzlich noch „System -> iTALC-Master“ starten.

Im iTALC-Master muss nun zuerst die Klassenraum-Verwaltung aufgerufen werden:

Im (noch) leeren Bereich muss dann mit der rechten Maustaste das Kontextmenü aufgerufen werden und der Menüeintrag „Klassenraum hinzufügen“ ausgewählt werden:

Nachdem Sie einen Klassenraum hinzugefügt haben, können Sie nun wieder mit der rechten Maustaste das Kontextmenü aufrufen und anfangen, die Computer der SchülerInnen hinzuzufügen:

Geben Sie mindestens die IP-Adresse und einen Namen für den Computer ein:

Wenn Sie in Ihrem Netzwerk die IP-Adressen nicht manuell sondern per DHCP vergeben, so sollten Sie darauf achten, dass der DHCP-Server den verwalteten Computern immer die gleiche IP-Adresse gibt, da iTALC die Zuordnung nur anhand der IP-Adresse vornehmen kann. Die feste Zuordnung zwischen Computer und IP-Adresse erfolgt dann mittels der MAC-Adresse der Computer im DHCP-Server. Für Details kontaktieren Sie bitte Ihren Netzwerkadministrator.

Die Computer, die Sie zum Klassenraum hinzugefügt haben, können Sie nun wieder mit der rechten Maustaste anklicken und den Menüpunkt „Zeigen/verstecken“ auswählen, um den ausgewählten Computer im iTALC-Master anzuzeigen:

Wenn Sie dann noch die Klassenraum-Verwaltung wieder einklappen, erhalten Sie so eine übersichtliche Sammlung der Miniaturansichten von allen verwalteten Computern:

Nun können Sie alle anderen Funktionen der Klassenraum-Verwaltung nutzen. Für weitere Details sehen Sie bitte in der iTALC-Dokumentation nach: http://italc.sourceforge.net/documentation.php


DOS-Partitionen mit Linux umbenennen

März 29, 2012

Die lernstick-Speichermedienverwaltung erlaubt die Installation auf beliebig viele Speichermedien. Der vollständige Name des lernstick-Standardbenutzers wird dabei automatisch auf „Debian Live user“ gesetzt. Wenn man bei der Installation zusätzlich auf jedem lernstick eine Austauschpartition anlegt, kann man deren Namen zwar festlegen, er ist dann jedoch für alle Speichermedien, die im gleichen Durchgang installiert werden, identisch. Wenn nun ein ganzer Klassensatz lernsticks in einem Durchgang produziert wird, so heissen alle Benutzer und auch deren Austauschpartition gleich. Beides ist nicht optimal, da wohl niemand wirklich „Debian Live user“ heisst und wenn mehrere lernsticks am selben Computer eingesteckt werden, so kann man sie nicht anhand der Bezeichnung der Austauschpartitionen unterscheiden.

Aus diesen Gründen wurde das Willkommensprogramm des lernsticks wurde um die Funktion erweitert, dass ein Benutzer beim ersten Start mit seinem lernstick sowohl seinen Namen als auch die Bezeichnung der Austauschpartition anpassen kann. Die Anpassung des Namens passiert dann im Hintergrund mit dem folgenden Befehl:

sudo chfn -f <neuer Name> user

Die Austauschpartition ist eine FAT32-Partition. Nun gibt es mehrere Möglichkeiten, die Bezeichnung einer FAT32-Partition zu ändern. Die meisten Seiten, die man im Internet zu diesem Thema findet, empfehlen den Befehl „mlabel“ aus dem Softwarepaket mtools. Dazu müsste folgender Befehl verwendet werden:

sudo mlabel -i <device> ::<neue Bezeichnung>

Leider werden bei dieser Variante alle Kleinbuchstaben in der Bezeichnung in Grossbuchstaben umgewandelt. Da die wenigsten Vor- oder Nachnamen nur aus Grossbuchstaben bestehen, erschien die Verwendung von mlabel an dieser Stelle eher ungeeignet.

Interessanterweise gibt es noch einen weiteren Befehl zur Umbenennung von FAT32-Partitionen, nämlich „dosfslabel“ aus dem Softwarepaket dosfstools. Wenn man folgenden Befehl verwendet:

sudo dosfslabel <device> <neue Bezeichnung>

kann man für die Bezeichnung, wie unter anderen Betriebssystemen gewohnt, auch Gross- und Kleinbuchstaben in beliebiger Kombination verwenden. Aus diesem Grund haben wir uns für diese Variante entschieden. Trotzdem bleibt die Einschränkung, dass die Partitionsbezeichnung nur 11 Zeichen lang sein darf. Wenn man nicht gerade stolzer Träger eines Doppelnamens ist, sollte das also reichen, ohne sich eine Abkürzung einfallen lassen zu müssen.


Fernwartung mit Freier Software

März 23, 2012

Grundlagen

Ein wichtiger Bestandteil der lernstick-Infrastruktur ist die Fernwartung, da es immer wieder Anwender gibt, die bei der Installation oder der Benutzung Hilfe brauchen.

Der erste Impuls, eine einfache und etablierte Software in die lernstick-Distribution zu integrieren, scheiterte daran, dass es leider bis jetzt noch keine wirklich einfache und etablierte Software zur Fernwartung im Open-Source-Umfeld gibt. Auch proprietäre (und trotzdem kostenlose) Software, wie z.B. TeamViewer, liess sich nicht auf dem lernstick integrieren, da entweder die jeweiligen Hersteller die Weitergabe ihrer Software nicht gestatteten oder in der (kostenlosen) Unterstützung von lernstick-Anwendern einen kommerziellen Einsatzzweck sahen und aus diesem Grund auf sehr heftigen Lizenzzahlungen bestanden. Also mussten wir wieder einmal eine Lösung auf Basis der bereits vorhandenen Open-Source-Komponenten aufbauen…

Bei der Recherche stellt man schnell fest, dass die meisten Open-Source-Programme, die Funktionen zur Fernwartung bereitstellen, VNC verwenden. VNC ist eine Client-Server-Software, bei der der Server die Bildschirmausgaben liefert und der Client die Bildschirmausgaben empfängt und die Maus- und Tastatureingaben des Benutzers an den Server schickt:

Wie so häufig im Open-Source-Umfeld gibt es in Debian (der Basis für den lernstick) verschiedene Softwarepakete für VNC. Wir haben uns für den VNC-Server x11vnc und für den VNC-Client xtightvncviewer entschieden.

Wenn man nun per VNC einem Anwender helfen möchte, so muss der Client auf unserer Seite mit folgendem Aufruf gestartet werden:

xtightvncviewer -listen

Ein Hilfe suchender Anwender muss die Verbindung zu uns mit folgendem Aufruf herstellen:

x11vnc -connect <unsere IP-Adresse>

Damit die Fernwartung auch über das Internet funktioniert, benötigen wir also für unsere eigene Supportstation eine öffentliche IP-Adresse. Wer über keine statische öffentlich IP verfügt, kann sich auch mit einer Kombination aus DynDNS und Portweiterleitung behelfen:

Mobile Supporter

Das ganze funktioniert wunderbar, hat jedoch einen entscheidenden Nachteil: Um Anwender zu unterstützen, müssen wir uns physisch immer direkt an der Supportstation befinden. Also brauchen wir noch eine Lösung, um von überall her auf den Bildschirm unserer Supportstation zugreifen zu können. Und das geht… wieder mit VNC!

Auf unserer Supportstation muss also ständig ein VNC-Server laufen. Dieser wird durch folgenden Aufruf gestartet:

x11vnc -forever

Jetzt könnte man unterwegs auch wieder einen VNC-Client starten, um auf die Supportstation zuzugreifen. Allerdings hat man nicht immer und überall eine VNC-Client-Software zur Verfügung. Aus diesem Grund haben wir auf der Supportstation Guacamole installiert, einen einfachen VNC-Client, der auf HTML5 basiert. Guacamole haben wir dann so konfiguriert, dass er auf den lokalen VNC-Server zugreift. So benötigt ein mobiler Supporter nur noch einen Browser und eine funktionierende HTTP-Verbindung zur Supportstation, um einem Anwender helfen zu können:

Absicherung

Im obigen Szenario werden alle Daten im Klartext übertragen, was gravierende Vertraulichkeitsprobleme (z.B. Mitschneiden von Bildschirminhalten, Passwörtern, …) mit sich bringen kann. Aus diesem Grund müssen beide Verbindungen durch Verschlüsselung der Daten abgesichert werden. Die Verbindung zum Supporter kann einfach abgesichert werden, indem anstatt HTTP die sichere Variante HTTPS verwendet wird. Dazu reicht es, Apache Tomcat, die Ausführungsumgebung von Guacamole, nach folgender Anleitung entsprechend zu konfigurieren: http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

Zur Absicherung der VNC-Verbindung verwenden wir stunnel, ein universeller SSL-Tunneling-Dienst. Zunächst müssen wir auf der Supportstation ein Zertifikat erzeugen, z.B. mit openssl:

openssl req -x509 -nodes -day 36500 -subj /C=/ST=/L=/CN=tmp -newkey rsa:1024 \
-keyout zertifikat.pem -out zertifikat.pem

Dieses Zertifikat kann dann verwendet werden, um einen sicheren Tunnel an einem bestimmten Port anzubieten, der alle Daten an den VNC-Client weiterleitet (der an Port 5500 lauscht). Beispiel für einen sicheren Tunnel an Port 50000:

stunnel -f -P '' -p zertifikat.pem -d 50000 -r 5500

Der Anwender muss dann den Aufruf zum Verbindungsaufbau um die Option „-ssl TMP“ ergänzen:

x11vnc -connect <unsere IP-Adresse> -ssl TMP

Jetzt wird eine verschlüsselte Verbindung zwischen Anwender und Supportstation aufgebaut. Somit sind beide Verbindungen gegen passives Abhören abgesichert:

Da die involvierten Zertifikate in diesem Szenario weder vom Supporter noch vom Anwender überprüft werden, ist die Verbindung nicht gegen Man-in-the-middle-Angriffe sicher. Die erforderlichen Massnahmen zur Absicherung gegen solche aktiven Angriffe würden jedoch den Rahmen dieses Artikels sprengen.

Vereinfachung

Da die benötigten Befehle recht kompliziert sind, haben wir eine grafische Oberfläche entwickelt, die sowohl für den Supporter als auch für den Anwender die syntaktischen Details versteckt. Der Supporter kann neben den sicheren Portnummern auch Bildeigenschaften wie Kompression, Qualität und Farbtiefe spezifizieren:

Da wir nicht die einzige Stelle sind, die Unterstützung für den lernstick anbietet, kann der Anwender aus einer Liste von Anbietern auswählen und diese Liste auch bearbeiten. Ausserdem kann er angeben, mit welcher Skalierung das Bild verkleinert wird, bevor es zum Supporter übertragen wird. Das kann z.B. dann sinnvoll sein, wenn der Supporter einen kleineren Bildschirm als der Anwender hat oder die Bandbreiten sehr gering sind.

Fazit und Ausblick

Die bisher entwickelte Lösung funktioniert sehr zufriedenstellend. Sie besteht ausschliesslich aus Freier Software und die Vertraulichkeit der Fernwartungsverbindungen ist sehr hoch, da die Daten nur zwischen den Anwendern und Supportern und nicht über die Infrastruktur eines Anbieters von Fernwartungssoftware ausgetauscht werden.

Wir haben allerdings auch Anwender, deren Computer sich hinter sehr restriktiven Firewalls befinden, die z.B. nur HTTP-Verkehr zulassen. Dort funktioniert die Fernwartung bisher nicht. Also müssen wir die Lösung irgendwann noch um eine Komponente erweitern, die Firewalls „austrickst“ und das VNC-Protokoll über HTTP tunnelt. Das klingt doch nach einer ziemlich spannenden Aufgabe! 🙂