Nachdem ich mittlerweile einen recht potenten Internetzugang zu Hause habe, wollte ich mal versuchen, wie es sich denn verhält, wenn man Owncloud wirklich zu 100% selbst hostet und nicht auf einen externen Serveranbieter angewiesen ist.
Zu diesem Zwecke, hatte ich zuletzt in einen Raspberry PI3 investiert.
Als Betriebsystem kommt Raspian Lite (Jessie) zum Einsatz.
phpmyadmin installieren
Zuerst installiere ich mysql-server5, anschließend dann phpmyadmin. Phpmyadmin zieht den Apache Webserver und div. Php-Module mit. Bei der Vergabe des MySql-Rootpasswortes sollte man kein zu einfaches Passwort wählen!
/var/www auf SSD mounten
Anmerkung: Im Nachhinein gesehen, wäre es wahrscheinlich besser gewesen, das komplette /var Verzeichnis auszulagern!
Ich mounte also per /etc/fstab/ die erste Partition der SSD /dev/sda1 auf /var/www. Das Verzeichnis liegt somit auf einer rund 60GB großen Partition auf der SSD-Festplatte.
Owncloud Repo hinzufügen und installieren
Wie man auf der Site https://download.owncloud.org/download/repositories/stable/owncloud/ beschrieben, binde ich das Repository in apt ein. Die installation von Owncloud geschieht mittels:
apt-get update
apt-get install owncloud
Datenbank für Owncloud erstellen
Per phpmyadmin lege ich die für Owncloud notwendige Datenbank an.
Natürlich brauchen wir auch noch einen User, der auf die DB zugreifen soll. Bitte nicht den MySql – Root User verwenden!
Nachdem User und Datenbank erstellt sind, müssen noch die Berechtigungen des User auf die Datenbank vergeben werden (Klick für größeres Bild).
SSL Vhost aktivieren, SSL Zertifikat einbinden
Owncloud sollte NICHT per HTTP angesprochen werden. Es sollte eine strikte Umleitung auf SSL erfolgen. Dies wiederum, erfordert ein entsprechends SSL Zertifikat. Ein solches Zertifikat kann man sich entweder selbst erstellen, oder aber günstig erwerben. Ich habe mit AlphaSSL gute Erfarhungen gemacht. Es spricht jedoch nichts dagegen, ein selfsigned Zertifikat zu verwenden. Es geht ja primär um die Verschüsselung.
Genauere Infos dazu u.a. bei Digitalocean
Eine Bespielkonfiguration (Apache Vhost-Datei unter /etc/apache2/sites-available/dein.vhost.conf), mit permanenter Umleitung auf https kann z.B.: so aussehen (Apache Version 2.4):
<VirtualHost *:80>
ServerName owncloud.server.at
DocumentRoot /var/www/owncloud
SSLVerifyClient optional
Redirect permanent / https://owncloud.server.at
</Virtualhost>
<VirtualHost *:443>
ServerName owncloud.server.at
<IfModule mod_headers.c>
Header always set Strict-Transport-Security „max-age=15768000; includeSubDomains; preload“
</IfModule>
SSLEngine on
SSLCertificateKeyFile /etc/ssl/private/zertifikat.key
SSLCertificateFile /etc/ssl/certs/zertifikat.crt
SSLCaCertificateFile /etc/ssl/certs/AlphaSSLroot.crt
DocumentRoot /var/www/owncloud
<Directory /var/www/owncloud>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/owncloud_error.log
CustomLog /var/log/apache2/owncloud_access.log combined
</VirtualHost>
Oben FETT geschrieben = permanente Umleitung auf HTTPS
Die Konfiguration muss dann noch per a2ensite <vhostfile> aktiviert werden! (Achtung Apache Restart nicht vergessen!)
Apache Modul SSL und headers aktivieren
a2enmod ssl
a2enmod headers
service apapche2 restart
Memory Cache apcu installieren
apt-get install php5-apcu
Danach diese Zeile (unten fett geschrieben) in /var/www/owncloud/config/config.php einfügen:
‚dbpassword‘ => ‚wPCn5EhH5q4E4ZcB‘,
‚logtimezone‘ => ‚UTC‘,
‚installed‘ => true,
‚memcache.local‘ => ‚\OC\Memcache\APCu‘,
Apache Restart nicht vergessen.
Owncloud Installation starten
Nun sollten die grundlegenden Vorarbeiten erledigt sein. Nach Aufruf des entsprechenden URL der Owncloudinstallation, gibt man nun DB_User, Datenbank, Host, Owncloud-Admin-User inklusive Passwort in die erscheinende Maske im Browser ein und klickt auf „Installation Fertigstellen“.
Ist alles glatt gegangen, sollte man im Backend von Owncloud landen.
Weitere wichtige Schritte
Serverseitige Verschlüsselung aktivieren
Im Backend sollte die serverseitige Verschlüsselung (Anklicken des angemeldeten User – Administration – links auf Serverseiteige Verschlüsselung – Haken setzen bei Serverseiteige Verschlüsselung aktivieren + Klick auf Verschlüsselung aktiveren) eingeschaltet werden.
Verschlüsselungsmodul laden
Aktivieren des Verschlüsselungsmodules über Klick (links) auf: Apps – Nicht aktiviert – Default encryption module – > auf Aktivieren klicken.
Danach bitte nochmals ab- und wieder anmelden, damit der Schlüssel initialisiert werden kann.
fail2ban installieren
apt-get install fail2ban
Danach kopiert man /etc/fail2ban/jail.conf nach jail.local und aktiviert die entsprechenden jails in der Datei.
Am Beispiel von ssh sieht die Konfig so aus (enabled einfach auf true stellen):
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
rkhunter installieren
apt-get install rkhunter
rkhunter –propupd –update
Sollte man in eine Fehlermeldung a la: „Invalid SCRIPTWHITELIST configuration option: Non-existent pathname: /usr/bin/lwp-request“ laufen, muss in /etc/rkhunter.conf die Zeile
SCRIPTWHITELIST=/usr/bin/lwp-request
auskommentiert werden. Danach sollte das Updatescript problemlos durchlaufen und einen Fingerabdruck des Systemes erstellen.
mod_evasive aktivieren
apt-get install libapache2-mod-evasive
Nach der Installation sollte man das Logginverzeichnis erstellen und dem Apache-User (in der Regel www-data bei einsatz von mod_php) Zugriff auf dieses Verzeichnis gewähren.
chown www-data /var/log/mod_evasive
Unter /etc/apache2/mods-available/evasive.conf muss die Konfiguration angepasst werden. Eine nicht so scharf eingestellte Beispielkonfiguration wäre:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 20
DOSSiteCount 100
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify hostmaster@it-networker.at
#DOSSystemCommand „su – someuser -c ‚/sbin/… %s …'“
DOSLogDir „/var/log/mod_evasive“
DOSWhitelist 127.0.0.1
</IfModule>
Dies sollte es vorerst gewesen sein. Im folgenden Teil (noch in Arbeit), werde ich kurz auf die zusätzliche Absicherung des Systemes eingehen und auch eine Benachrichtigung einrichten.
Vor allem kann ich dann eventuell schon Aussagen bezogen auf die Leistungsfähigkeit des PI3 tätigen.