Schuleigene Cloud-Speicherlösung mit ownCloud

In den letzten Jahren befand sich die Cloud immer weiter im Aufwind. Alle namhaften IT-Riesen sind auf diesen Zug aufgesprungen, indem sie eigene Angebote aufgebaut haben oder entsprechende Anbieter aufgekauft haben. Als Systembetreuer und Nutzer diverser Online-Speicherlösungen habe ich mich daher schon bald mit dem Gedanken beschäftigt, welche Möglichkeiten die Cloud für die Schule und den Unterricht haben kann.

Sicher könnten bereits vorhandene Angebote auch für schulische Zwecke eingesetzt werden. Dies bedeutet jedoch, das die Hoheit über die Daten gewissermaßen aus der Hand gegeben wird. Da im Unterricht aber kaum sicherheitsrelevante Dateien produziert werden, wäre dies zu verschmerzen. Allerdings ist es kaum zu erreichen, dass sich alle Schüler beim gleichen Anbieter einen Zugang einrichten. Auch als Schule ist es aus Gründen des Datenschutzes wohl bedenklich, für alle Schüler einen Account anzulegen, da Schülerdaten das Haus verlassen würden.

Für den schulischen Unterricht bringt es jedoch erst dann die erwünschten Vorteile, wenn alle Schüler einen Account bei derselben Lösung haben. Nur so kann ein Lehrer allen Schülern der Klasse Dateien bereitstellen oder eine Gruppe an Schülern kann gemeinsam an denselben Dateien arbeiten.

Vor diesem Hintergrund begann ich mit diversen Möglichkeiten zu experimentieren und ihren Einsatz in Verbindung mit unserer bereits vorhandenen Infrastruktur zu testen. Hier stand u.a. im Vordergrund, dass es möglich sein sollte die bereits vorhandenen Zugangsdaten von Lehrern und Schülern zu verwenden. Dies bringt nicht nur dem Systembetreuer Vorteile, sondern auch dem Benutzer, da er sich nur einmal Login-Daten merken muss. Die Benutzerdaten von Lehrern und Schülern sind bei uns in zwei Active Directories gespeichert, die über eine unidirektionale Vertrauensstellung miteinander verbunden sind.

Schlussendlich habe ich obige Anforderungen mit der Open Source Variante von ownCloud umgesetzt. Der ownCloud-Server selbst ist eine virtuelle Maschine, die sich auf einem unserer mit vmWare ESXi betriebenen Server befindet. Da der noch vorhandene Festplattenplatz auf unseren Servern für eine vielgenutzte Cloud-Speicherlösung jedoch zu knapp bemessen wäre, liegt der eigentlich zur Verfügung gestellte Speicherplatz auf einer relativ günstigen NAS-Box. Um dennoch eine rudimentäre Datensicherheit zu gewährleisten, wird diese mit mehreren Festplatten in einem Raid5-Verbund betrieben.

Die eigentliche Installation habe ich unter Ubuntu 14.04 nach [1] durchgeführt. Diese Anleitung ist zwar für ownCloud 7, lässt sich jedoch ohne große Änderungen auf neuere ownCloud-Versionen und/oder neuere Ubuntu-Versionen übertragen. Sympathisch war mir dieser Artikel auch deshalb, da ich mit Nginx bereits positive Erfahrungen als Reverse Proxy (vgl. zugehöriger Beitrag) gemacht habe.

Um wie oben beschrieben den Speicherplatz der NAS-Box einzubinden, habe ich auf dieser eine Freigabe owncloud für einen Benutzer owncloud erstellt. Diesen Ordner habe ich über einen Eintrag in der Datei /etc/fstab unter /media/owncloud eingebunden. Für die Verwendung in ownCloud musste dort der Ordner /media/owncloud/data und darin eine leere Datei mit dem Namen .ocdata angelegt werden. Anschließend musste in /usr/share/owncloud/config/config.php der Eintrag datadirectory auf /media/owncloud/data gesetzt werden.

Damit lief meine ownCloud-Installation prinzipiell bereits, aber es wurden noch zwei Sicherheitswarnungen angezeigt, die ich folgendermaßen beseitigen konnte:

  1. Die Meldung zu Strict-Transport-Security-HTTP-Header konnte ich durch Hinzufügen der folgenden Zeilen zu /etc/nginx/conf.d/default.conf beseitigen:
    add_header Strict-Transport-Security „max-age=3153600;
    includeSubDomains;
    preload“;
  2. Den PHP Cache habe ich folgendermaßen eingerichtet:
    1. In /usr/share/owncloud/config/config.php die Zeile memcache.local => \OC\Memcache\APC eingefügt
    2. In /etc/php5/fpm/php.ini die Zeile apc.enable_cli=1 eingefügt
    3. Paket php-apc installiert (evtl. vorher Update auf php5.6 durchführen)

Die Integration der Benutzerdaten aus den beiden Active Directories habe ich nach [2] durchgeführt. Damit die Freigabe auch klassenweise erfolgen kann habe ich dort in der für die Schüler zuständigen AD noch Klassengruppen angelegt.

Nun war es prinzipiell soweit: Unter https://cloud.meineSchule.de konnte die schuleigene ownCloud-Lösung aufgerufen werden. Jeder Schüler und Lehrer konnte sich mit den Zugangsdaten anmelden, die auch an den Schulcomputern verwendet werden. Damit ist das wesentliche Ziel erreicht.

Der Flaschenhals an der hier vorgestellten Lösung stellt sicher die Upload-Richtung unseres Internetzugangs dar. Aber die bisherigen Erfahrungen zeigen, dass es für die üblicherweise verwendeten Dateigrößen (mehrere MB) ohne große Probleme ausreicht.

Um einer zu extensiven Nutzung und damit ein Blockieren für alle Benutzer zu verhindern, habe ich für Schüler eine Quota in der Größe von im Moment 10GB eingerichtet.

Für maximale Sicherheit habe ich in ownCloud die servereigene Verschlüsselung aktiviert. Damit ist nicht nur der Transport sondern auch die Speicherung der Daten vollverschlüsselt. Dies funktioniert nach meinen Erfahrungen ohne größere Probleme. Lediglich bei der Erstverwendung und Freigabe von Daten muss eine gewisse Reihenfolge beachtet werden:

Wird eine Datei für einen Schüler freigegeben, der sich noch nie angemeldet hat, so erscheint beim Versuch diese Datei zu öffnen eine Fehlermeldung. Dies liegt darin, dass aufgrund der Verschlüsselung dessen Schlüssel für das Anlegen der Freigabe benötigt wird. Da er jedoch noch nie angemeldet war, existiert dieser Schlüssel zu diesem Zeitpunkt (noch) nicht. Daher muss sich in diesem Fall der Schüler, für den die Freigabe erstellt werden soll, zunächst einmalig anmelden und erst dann darf die Freigabe erfolgen.

Verwendete Links:

[1] Setup ownCloud 7 with Nginx on Ubuntu 14.04.1

[2] Add ownCloud 6.0 to Active Directory 2012 R2

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.