Piwigo Sicherheit: das Absichern unserer Installation

Piwigo Sicherheit: warum darüber nachdenken, das ist doch Open Source, und damit „sicher“?

Definitiv falsch. Welche Aspekte sind zu bedenken?

1.) Die Sicherheit der in das System hochgeladenen Bilder. Diese liegen in voller Auflösung vor, und wir wollen nicht, dass diese von Suchmaschinen und Bilderdieben einfach heruntergeladen werden können.

2.) Die Sicherheit des Admin-Bereiches. Der ist zwar Passwortgeschützt, aber wie bei jeder von Menschen gemachten Software ist auch hier nicht ausgeschlossen, dass sich Sicherheitslücken im Quellcode finden.

Wie sichern wir also unsere Piwigo-Installation einigermassen verlässlig ab, wie erhöhen wir unsere Piwigo Sicherheit?

Punkt 1: Sicherheit der hochgeladenen Bilder

Die Bilder liegen standard-mässig im Ordner „upload“. Man könnte den Ordner auch verschieben, nach außerhalb des Web-Rootes. Das sorgte hier aber für üble Effekte, und erschien mir daher nicht als gangbarer Weg. Wir packen da in den upload-Ordner also eine .htaccess Datei rein mit folgenden Inhalt:

Deny from all

Das sorgt dann dafür, dass an die hochgeladenen Bilder niemand mehr von außen rankommt. Jetzt kann man sagen „aber wie lesen wir die Bilder dann noch, wir wollen sie ja darstellen?“ Und hier kommt Piwigo mit seinen tollen Optionen zum Tragen.

Für jede der im System definierten Größen erstellt Piwigo eine eigene Datei, spätestens beim Aufruf der entsprechenden Bilddatei in der entsprechenden Größe. Diese Dateien liegen unter „_data“, und dieses Verzeichnis dürfen wir natürlich nicht schützen!

Bilder mit Wasserzeichen „schützen“

„Aber dann kann ja wieder jeder auf meine Dateien zugreifen!“ – Richtig. Dafür gibt es die „Wasserzeichen“. Wir erstellen uns ein Wasserzeichen in Form einer PNG-Datei. Arbeitet ruhig auch mit Transparenz, und speichert das Bild ab als PNG. Unter „Admin/Konfiguration/Optionen/Wasserzeichen“ ladet ihr das Bild hoch. Ich habe dann hier „Anpassung“ ausgewählt, 10% X-Position, 50% Y-Position, 10 X-Wiederholung, Deckkraft 4. Das verschandelt nicht meine Bilder, hinterlässt aber ein dennoch sichtbares Wasserzeichen. Außerdem habe ich ausgewählt, dass alle Bilder ab Breite oder Höhe 400px ein Wasserzeichen erhalten sollen, die kleinen Vorschaubilder muss ich nicht schützen.

Unter „Fotos/Stapelverarbeitung“ wählt ihr nun alle Bilder aus, markiert alle, und geht ganz unten in der Auswahlbox auf „Mehrfache Bildgrößen generieren“, wählt „Alle Größen“ aus, und wendet die Aktion an. Alle bisher im System befindlichen Bilder erhalten damit das Wasserzeichen, außer eure Originale. Damit habt ihr keine von außen lesbaren größeren Bilddateien mehr auf dem Server, welche kein Wasserzeichen enthalten. Für Bilderdiebe sind diese damit eher wertlos.

Jetzt sind nur noch ein paar Einstellungen zu machen, damit Gäste keine Bilder herunterladen können, und niemand sich auf der neuen Bilderseite registrieren kann um so zum „Nicht-Gast“ zu werden.

Ein paar weitere Optionen im Admin-Bereich

„Admin/Konfiguration/Option/Allgemein“:

Die Fotoanordnung habe ich bei dieser Gelegenheit auf „Aufnahmedatum neu -> alt“ gestellt

„Neuregistrierung von Benutzern erlauben“ habe ich deaktiviert. Damit kann kein Fremder mehr ein Nutzerkonto erzeugen. Wenn ich jemanden Nutzerrechte einräumen möchte, kann ich das über die Benutzerverwaltung immer noch tun – darf dann aber die Anmeldeoption nicht ausblenden (siehe weiter unten).

„Admin/Konfiguration/Option/Anzeige“:

„Icon Datei herunterladen aktivieren“ habe ich deaktiviert.

„Admin/Konfiguration/Option/Kommentare“:

Ich habe die Kommentare aktiviert, aber „Freigabe durch Administrator“ aktiviert. Außerdem habe ich den Nutzern nicht erlaubt, Links zu posten, udn deren eigene Kommentare zu ändern oder zu löschen. Beide Benachrichtigungsoptionen habe ich aktiviert.

„Admin/Konfiguration/Menu“:

Hier habe ich das Menü „Identifikation“ ausgeblendet. Ich benötige das für meine Zwecke nicht, da ich mich über den Adminbereich auf der Webseite anmelden kann. Wer plant, anderen Zugriff zu gewähren, muss diesen Schritt überspringen!

Unter „Benutzer/Verwaltung“ habe ich den „guest“ bearbeitet. Hier ist wichtig, „Hohe Auflösung aktiviert“ zu deaktivieren. Damit kann der Gast die Bilder nicht mehr in Originalgröße ohne Wasserzeichen herunterladen. Auf Grund der oben angeführten Änderungen ist das so oder so nicht möglich, aber so rennen eure Gäste nicht erst in konfuse Fehlermeldungen.

Punkt 2: Sicherheit des Admin-Bereiches

Natürlich ist für eine hohe Piwigo Sicherheit selbstverständlich, ein gutes Passwort auszuwählen. Aber keiner der Piwigo-Entwickler wird seine Hand dafür ins Feuer legen (können), dass nicht doch eine Sicherheitslücke im Quellcode besteht. Diese könnten Angreifer ausnutzen. Was liegt also näher, als die admin.php auch server-seitig zu sichern – dem Angreifer also eine weitere Barriere in den Weg zu räumen noch bevor er überhaupt Zugriff auf die Admin-Seite bekommt? Ich nutze dazu wieder den Mechanismus htaccess und htpasswd. Euer Server muss das nur unterstützen, meiner tut das (Apache). Andere Server haben ähnliche Mechanismen, das Zauberwort heisst „Basic Authentication“. Schlagt also notfalls in der Doku zu eurem Server nach, oder fragt den Admin.

Für Apache erstelle ich im root der Piwigo-Installation ein .htaccess-Datei mit folgendem Inhalt:

AuthUserFile /Pfad/zur/.htpasswd
AuthName "Admin Panel"
AuthType Basic
<Files "admin.php">
require valid-user
</Files>

Auf der Konsole erstelle ich nun die .htpasswd-Datei.

htpasswd -c /Pfad/zur/.htpasswd <meinNutzername>

Ich werde zur Eingabe eines Passworts aufgefordert, wiederhole das noch mal. Mit cat /Pfad/zur/.htpasswd kann ich noch schauen, was das bewirkt hat. <meinNutzername> habe ich natürlich ersetzt. Meine .htpasswd schaut etwa so aus:

peter:hjkdhasdIOUOjklkjlkjiOIUO

Mein Nutzername steht also vor dem : und mein Passwort verschlüsselt dahinter. Zum Testen könnt ihr am besten das Inkognito-Fenster eures Browsers starten, und den Adminbereich ansurfen. Ihr werdet nun zur Eingabe von Nutzername und Passwort aufgefordert, noch bevor ihr den Admin-Login zu sehen bekommt. Das Ausnutzen eventueller Sicherheitslücken wird damit wesentlich erschwert.

Richtig cool seid ihr, wenn ihr für die Webserverauthentifizierung und den Adminbereich verschiedenen Nutzernamen und Passwörter verwendet. In Sachen Piwigo Sicherheit sind wir nun ein wesentliches Stück besser aufgestellt.

Schreibe einen Kommentar

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

PS PHPCaptcha WP
PS PHPCaptcha for Wordpress