BUFFALO Linkstation Webserver (LIGHTTPD) mit SSL/HTTPS-Umleitung und Verzeichnisschutz

Buffalo Logo

Ziel ist der Schutz eines Webseiten-Ordners auf der BUFFALO Linkstation durch SSL und Verzeichnisschutz (Umleitung von http nach https). Praktisch habe ich einen 1und1 Account per DYNDNS und Fritz.Box dynamisch auf die LSDUO aufgeschaltet. Die eigentliche Webseite habe ich dann noch per CNAME Eintrag auf das DYNDNS-Account weitergeleitet. Dies funktioniert selbst mit HTTPS.

1. SSH Zugriff via PUTTY

1.1. Möglichkeiten

Die Script-Alternative ist einfach, aber hat den Nachteil, dass, wenn der Webserver wegen Fehlern stoppt, nicht mehr per SSH darauf zugegriffen werden kann. Man muss die LSDUO erst per Werkseinstellung neu initialisieren. Dieser Zugang eignet sich daher eher für kleinere Änderungen an der Konfiguration des Webservers (Lighttpd). Voraussetzung ist der eingeschaltete Webserver und das Kennen des angegebenen Ordners.

1.2. Script von http://buffalo.nas-central.org/wiki/Category:LS-WXL

<?php
$file = ‚../../../../etc/pam.d/sshd‘;
$fh=fopen($file, ‚w‘) or die(„can’t open file“);
$stringData = „account required pam_unix.so\n“;
fwrite($fh, $stringData);
$stringData = „session required pam_unix.so\n“;
fwrite($fh, $stringData);
$stringData = „auth required pam_permit.so\n“;
fwrite($fh, $stringData);
fclose($fh);
?>

1.3. Offene Firmware hier aus dem Forum von Shonk

Die andere Alternative ist, die Firmware von Shonk zu flashen. Damit entfällt das jeweilige Setzen auf Werkseinstellungen.

hxttp://www.mediafire.com/file/25zmjmf50mh/ls_series-131-mod1.rar Wenn man eine neuere Firmware als die 1.31 verwendet muss man die Updater-Konfig anpassen (Debug-Modus):

htxtp://www.discountnetz.com/buffalo-linkstation/software/76-wie-mache-ich-aus-einer-linkstation-live-eine-linkstation-pro?start=2

2. Zertifikat

Zum Beschaffen des Zertifikates habe ich mich grob an die Anleitung in [url]http://www.asconix.com/howtos/debian/lighttpd-ssl-howto[/url] gehalten. Ich habe den Key per Linux auf einem separaten Rechner mit OPENSSL erstellt. Ca-Cert kann ich nicht empfehlen, da es in den aktuellen Browsern nicht unterstützt wird (Nachinstallation notwendig). Der startssl-Key (bekanntester kostenloser Anbieter) mit der Länge von 4000 Byte funktionierte bei mir nicht auf der LSDUO. Zur 2 KByte-Version kann ich nichts sagen. Man hat bei startssl nur eine einzige Möglichkeit ein kostenloses Zertifikat zu erwerben!

Quellen:

hsttp://www.startssl.com

hsttp://de.wikipedia.org/wiki/StartCom

Für das SSL-Zertifikat habe ich die beiden erhaltenen Dateien xyz.de.key und xyz.de.crt in die Verzeichnise ssl.key und ssl.crt abgelegt unter /etc/ abgelegt (mittels Befehle mkdir und cp). Die Zertifikatdateien habe ich in den Web-Ordner abgelegt und dann per Putty an das Ziel kopiert.

Privater Schlüssel: /etc/ssl.key/example.com.key

Zertifikat: /etc/ssl.crt/example.com.crt

Für das Vereinen:

cat /etc/ssl.key/example.com.key /etc/ssl.crt/example.com.crt >> /etc/lighttpd/example.com.pem

Das Verwenden anderer Verzeichnisse führt zum Stoppen des Servers. Zu beachten sind die Rechte- und Gruppenzuweisungen.

Quelle: http://www.ssl-sicherheit.info/ssl-zert … httpd.html

3. Bearbeiten der LIGHTTPD-Konfiguartion

Mit

vi /etc/lighttpd/lighttpd.conf

wird die Konfiguration bearbeitet.

Am Anfang müssen drei Module durch Entfernen der „#“ aktiviert werden (rewrite, redirect und auth):

server.modules = (
„mod_rewrite“,
„mod_redirect“,
„mod_alias“,
„mod_access“,
# „mod_cml“,
# „mod_trigger_b4_dl“,
„mod_auth“,
# „mod_status“,
# „mod_setenv“,
# „mod_proxy“,
# „mod_simple_vhost“,
# „mod_evhost“,
# „mod_userdir“,
# „mod_compress“,
# „mod_ssi“,
# „mod_usertrack“,
# „mod_expire“,
# „mod_secdownload“,
# „mod_rrdtool“,
# „mod_webdav“,
„mod_accesslog“
)

Am Ende wird folgender Code eingefügt:

$SERVER[„socket“] == „:81“ {
$HTTP[„host“] =~ „(.*)“ {
url.redirect = ( „^/(.*)“ => „https://%1/$1“ )
}
}

$SERVER[„socket“] == „:444“ {
ssl.engine = „enable“
ssl.pemfile = „/etc/lighttpd/xyz.de.pem“
}

auth.debug = 2
auth.backend = „plain“
auth.backend.plain.userfile = „/mnt/array1/WWW/password.txt“

auth.require = ( „“ =>
(
„method“ => „basic“,
„realm“ => „Password protected area“,
„require“ => „user=xxxx“
)
)

In der Zeile auth.require kann man zwischen den „“ den Pfad des zu schützenden Verzeichnisses angeben. Wenn hier nichts hinterlegt ist, bleibt der gesamte Ordner gesperrt.

Es ist auch möglich den Lighty so zu konfigurieren, dass er nur auf https://… reagiert (Quellen).

In der passwort.txt wird der User:Key „xy:12345“ angegeben. Die Rechte- und Gruppenzuweisungen sind zu beachten.

Port 81 ist zum Erreichen der ungesicherten Version aktiv. Auf Port 80 hört das WEBIF.
Normalerweise läuft https auf Port 443. Da hat aber die LSDUO schon den APACHE mit dem WEBIF gesichert. Somit musste ich den Port 444 verwenden.

Jetzt kann Putty per exit geschlossen werden. Die LSDUO muss jetzt per WEBIF System/Wartung/Neustart neu initialisiert werden. Leider gibt es aus meiner Erfahrung (viele Versuche) keine Möglichkeit den LIGHTTPD einzeln zu re-starten.

Quellen:
http://redmine.lighttpd.net/wiki/lightt … ttpToHttps
http://www.root-on-fire.com/2010/06/17/ … eichnisse/

4. Portfreischaltung in der Fritz.Box o. a. Routern

In der Fritz Box müssen jetzt nur noch die folgenden Ports umgeleitet werden:

TCP 80 LS-WXL188 81

TCP 443 LS-WXL188 444

Damit sollte alles funktionieren.

Quelle des eigenen Textes: httxp://forum.discountnetz.com/buffalo-linkstation-duo/webserver-lighttps-mit-ssl-https-umleitung-und-verzeichnisschutz-t682.html

Buffalo Logo
Buffalo Logo