Lighttpd Passwortschutz: Piwik Verzeichnis mit einem Passwort versehen

2010-01-26 - kostaki Keine Kommentare »

Ich wollte gerade meine Piwik Installation mit einem htaccess Passwort schützen, wie im Piwik Forum beschrieben, bis mir auffiel das ich ja gar keine .htaccess Dateien habe auf einem lighttpd Server. Da ich das Verzeichnis aber unbedingt mit einem Passwort versehen wollte, habe ich dies gleich zum Anlass genommen mich mit dem lighttpd Auth Modul zu beschäftigen. Bei weit verbreiteter Software (besonders bei Open Source Software, bei der jeder direkt im Code nach Fehlern suchen kann) sollte man immer vorsichtig sein. Hier werden sehr oft Lücken ausgenutzt, deshalb versuche ich diese immer besonders zu schützen. Das Gewünschte Ergebnis war auch sehr einfach zu erzielen. Nur 10 Minuten später hatte ich genau das was ich wollte.

lighttpd module auth aktivieren

Als erstes mal das Modul aktivieren und ggf. Konfigurieren.

$ nano /etc/lighttpd/conf-available/05-auth.conf
$ lighttpd-enable-mod auth

Interessant ist hier eigentlich nur die server.modules Zeile, die das Modul lädt. Alles andere habe ich entfernt.

server.modules += ( "mod_auth" )

Wenn die Config stimmt und das Modul gelinkt wurde, noch den Server neu starten und schon kann man die gewohnten Passworteingaben erstellen.

$ /etc/init.d/lighttpd restart

Piwik Verzeichnis mit Passwort schützen (lighttpd Style)

Die Dateien piwik.php, piwik.js und die robots.txt müssen ohne Passwort ausgeliefert werden, aber alle anderen Dateien können geschützt werden. Welches auth Backend man benutzen möchte ist jedem selbst überlassen. Ich mag das vom Apache kommende htpasswd, da ich so auch gleich die alten User Dateien benutzen kann. Mehr zu den Möglichkeiten gibt es wie immer im lighttpd Wiki unter mod_auth, sowie hier die mod_auth Config Variablen.

Hier nun also meine Vhost Konfiguration.

$HTTP["host"] =~ "urlto\.piwik\.tld" {
    server.document-root = "/var/www/piwik/"
    
    $HTTP["url"] !~ "^/piwik\.(js|php)|robots\.txt$" {
        auth.backend = "htpasswd"
        auth.backend.htpasswd.userfile = "/var/www/.htpasswd"
        auth.require = ( "/" => ( "method" => "basic", "realm" => "admin", "require" => "valid-user" ) )
    }
}

Die $HTTP["url"] !~ "^/piwik\.(js|php)|robots\.txt$" Zeile ist die eigentliche Bedingung. Die folgenden Regeln sollen für alle Dateien die nicht dem Muster entsprechen angewandt werden.

$ /etc/init.d/lighttpd restart

Jetzt sollten auf den Seiten auf denen Piwik eingebunden ist um sie zu tracken, kein Passwortfenster aufgehen! Ruft man aber seine Piwik Seiten auf um die Statistiken einzusehen kommt eine Passwortabfrage. Das ganze klappt natürlich nur solange man nicht auf andere Dateien von außen zugreift, wie zum Beispiel mit der Api oder die Widgets. Hierfür müssten noch weitere Dateien freigegeben werden.

Kommentar schreiben

*

*