Meine eigene Daten-Cloud

Da ich gerne Daten mit Freunden und Familie teilen möchte und mir die kostenlosen Services von Dropbox, GoogleDrive oder OneDrive nicht ausreichen möchte ich den Schritt zur eigenen Cloud gehen. In diesem Beitrag möchte ich meine Schritte zur Einrichtung und Konfiguration der Software Owncloud dokumentieren.

Host initialisieren

Als Plattform für Owncloud habe ich eine Ubuntu Server 16.04 64Bit VM aufgesetzt, mit 1GB RAM (4GB swap), 20GB Speicher und 2 vCPUs. Bei der Installation habe ich die folgenden Funktionen des Ubuntu Servers gleich mit ausgewählt:

  1. OpenSSH
  2. LAMP

!WICHTIG! während der Installtion der LAMP komponente wird ein Passwort für den MySQL Nutzer root vergeben. Dieses Passwort wird während des MySQL Setup gebraucht.

Nach der Installation habe ich mich erstmals um die Sicherheit der Installation gekümmert.

Hardening (1/2)

Die Apache2 und MySQL Komponenten der LAMP Installation werden vor der eigentlichen Owncloud Installation abgesichert.

Firewall

Die relevanten Applikationen der VM sind OpenSSH sowie Apache Full. Alle weiteren Ports dürfen nicht öffentlich zugänglich sein, weshalb die folgenden 3 Befehle diese durch die Ubuntu Firewall blocken.

  1. sudo ufw allow in "Apache Full"
  2. sudo ufw allow OpenSSH
  3. sudo ufw enable

MySQL Secure Installation

MySQL bringt ein Tool zur Steigerung der Sicherheit mit. Das Tool führt den Nutzer mit gezielten Fragen durch den Prozess und ermöglicht die De-/Aktivierung von sicherheitsrelevanten Features. Aufgerufen wird das Tool durch folgenden Befehl:  sudo mysql_secure_installation . Nach der Anmeldung mit dem MySQL-Root-Passwort können folgende Aspekt verändert werden:

  1. Nutzung des Validate Password Plugin
  2. Passwort von Root
  3. Entferne Anonymen Nutzer
  4. Verbindungen nur von dieser Maschine erlauben
  5. Test Datenbank entfernen

Installation / Setup

MySQL

Damit Owncloud mit der bereits installierten MySQL Datenbank kommunizieren kann, legen wir mit den folgenden Befehlen über die MySQL CLI die Datenbank samt Benutzer und Rechte an.

  1. Anmeldung in MySQL als Root: (hier wird das Passwort aus der Host initialisieren benötigt)
    mysql -u root -p
  2. Lege die owncloud Datenbank an:
    CREATE DATABASE owncloud;
  3. Lege den Benutzer owncloud an und ermögliche den Zugriff auf die zuvor angelegte Datenbank:
    GRANT ALL ON owncloud.* to 'owncloud'@'localhost' IDENTIFIED BY 'individuellesPasswort';
  4. Aktualisiere Informationen
    FLUSH PRIVILEGES;
  5. Beende die Bearbeitung
    exit

Owncloud

Nachdem die Kernkomponenten für die Owncloud-Installation vorhanden sind, ist es an der Zeit Owncloud zu installieren und notwendige Anpassungen vorzunehmen. Eine Anleitung für Ubuntu und weitere Linux Distributionen ist hier zu finden. Hier die von mir benutzen Befehle:

  1. Release Informationen herunter laden:
    wget -nv https://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/Release.key -O Release.key
  2. Release Schlüssen hinzufügen:
    sudo apt-key add - < Release.key
  3. Füge dem Betriebssystem das Repository hinzu:
    sudo sh -c "echo 'deb http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/ /' > /etc/apt/sources.list.d/owncloud.list"
  4. Aktualisiere Repository informationen und installiere Owncloud
    sudo apt-get update && sudo apt-get install owncloud -y
  5. Prüfe Installation in einem beliebigen Browser:
    http://<ip-der-owncloud-vm>/owncloud

Als nächstes können die individuellen Einstellungen für die Owncloud Installation ausgefüllt werden. Für meine Installation werde ich kein alternatives Datenverzeichnis auswählen und trage neben dem Administrator Konto ausschließlich die Datenbankinformationen ein.

Snapshot

Ganz wichtig für mich war an dieser Stelle ein Snapshot der VM zu machen. Denn leider habe ich diese Prozedur nicht nur einmal gemacht. Die vorherigen Male habe ich an der einen oder anderen Stelle einen Parameter zu viel, oder zu wenig eingegeben, was mir die VM zerschossen hat. Also die VM funktionierte reibungslos, doch die Owncloud Installation war teilweise fehlerhaft oder gar unerreichbar. Deshalb kann ich nur jedem empfehlen (sofern möglich) eine Sicherheitskopie des aktuellen Status abzulegen.

Hardening (2/2)

SSL Zertifikat erstellen

Für die spätere https Verbindung wird ein SSL Zertifikat benötigt. Dieses kann mit folgendem Befehl des Tools openssl erstellt und an einer zentralen Stelle abgelegt werden.

Mit diesem Befehl wird ein so genanntes self-signed Zertifikat (samt privatem Schlüssel) erstellt mit einer Laufzeit von 365 Tagen. Einen weiteren Befehl habe ich in einem online Tutorial gefunden, welcher für den nächsten Schritt notwendig ist:

Apache2 mit SSL Zertifikat

Für die Nutzung des SSL Zertifikats müssen wir Änderungen an der Virtual Host Einstellungen des Apache2 vornehmen. Zuerst werden wir eine Datei anlegen mit den gewünschten SSL Konfigurationen.

Bevor Änderungen an der aktuellen SSL Virtual Host Datei durchgeführt werden, habe ich mir eine Sicherheitskopie angelegt.

Die relevanten Aspekte der .conf Datei werden im folgenden aufgeführt. Die markierte Zeile muss mit der aktuellen IP oder einer DYNDNS Adresse ersetzt werden. Die restlichen Eingaben sind auf mein aktuelles Setup (Pfade) zugeschnitten.
!WICHTIG! neben den unten angegebenen Eingaben sind noch weitere Angaben in der Datei, welche ich jedoch nicht angefasst habe. Diese sollten demnach auch weiterhin in der Datei zu finden sein -.-

Die Einstellungen habe ich nach meinen Änderungen mit diesem Befehl geprüft sudo apache2ctl configtest  und durch diese Befehle aktiviert:

  1. sudo a2enmod ssl
  2. sudo a2enmod headers
  3. sudo a2ensite default-ssl
  4. sudo a2enconf ssl-params
  5. sudo service apache2 restart

Eigener IP vertrauen

Die IP, mit der die initiale Owncloud Konfiguration durchgeführt wurde, wird als einzige vertrauenswürdige IP hinterlegt. Wer bei der Einrichtung die lokale IP verwendet hat, anstatt der öffentlich zugänglichen, kann diese nachträglich hinzufügen. Diese Einstellung ist in der config.php im <owncloud_installation>/config/ Order zu ändern.

Die markierten Zeilen definieren den zu vertrauenden IP Adressen. Nun kann ich in meinem lokalen Netzwerk genau wie aus dem Internet auf meine eigene Daten-Cloud zugreifen.

Ausblick

Ich werde (hoffentlich) den nächsten Tagen mit den beiden Netzwerkkarten in meinem ESXi Server eine DMZ einrichten und die Owncloud entsprechend platzieren. Für die Kommunikation zwischen DMZ und privatem Netzwerk werde ich wahrscheinlich bestehende Konfigurationen anpassen müssen. Vor allem das Plugin Externer Speicher wird neu konfiguriert werden müssen. Aktuell greife ich über SMB/CIFS auf meinen Filemanager zu.

Des Weiteren besitzt die VM nur 20GB aktuell und wird demnach schnell an ihre Grenzen stoßen. Wie ich neuen Speicherplatz hinzufügen kann durch Skalierung oder zusätzlichen (virtuellen) Festplatten werde ich mir bald anschauen müssen. Denn ohne diese Speichererweiterung hat mein aktuelles Setup keinen Vorteil im Gegensatz zu den bereits genannten Anbietern.

Quellen

Die Grundlage für diesen Beitrag habe ich mir aus den folgenden Seiten entnommen:

In diesem Beitrag habe ich die folgende Quellen zwar nicht thematisiert, habe diese jedoch trotzdem (teilweise) in meinem Setup verwendet.

Der Artikel ist auch in english verfügbar.

Schreiben Sie einen Kommentar

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