
Webserver (LIGHTTPD) mit SSl+HTTPS-Umleitung und Verzeichnisschutz
Ziel ist das Absichern eines Webseiten-Ordners auf der LS -Duo 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öglichkeitenDie 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). Vorraussetzung ist der eingeschaltete Webserver und das Kennen des angegebenen Ordners.
1.2. Script von http://buffalo.nas-central.org/wiki/Category:LS-WXL
Code:
<?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);
?>
Das Script wird in die index.
php Datei des Web-Verzeichnisses eingefügt und im Browser aufgerufen. Damit kann man sich dann per PUTTY-SSH auf der LS anmelden als: root (Passwort leer). Das Script funktioniert mit Firmware 1.34 und nicht mehr mit 1.37.
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.
http://www.mediafire.com/file/25zmjmf50mh/ls_series-131-mod1.rarWenn man eine neuere Firmware als die 1.31 verwendet muss man die Updater-Konfig anpassen (Debug-Modus):
http://www.discountnetz.com/buffalo-linkstation/software/76-wie-mache-ich-aus-einer-linkstation-live-eine-linkstation-pro?start=22. Zertifikat Zum Beschaffen des Zertifikates habe ich mich grob an die Anleitung in
http://www.asconix.com/howtos/debian/lighttpd-ssl-howto gehalten. Ich habe den Key per Linux auf einem separaten Rechner mit OPENSSL erstellt. Das 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 2000 Längen-Version kann ich nichts sagen. Man hat bei startssl nur eine einzige Möglichkeit ein kostenloses Zertifikat zu erwerben!
Quellen:
http://www.startssl.comhttp://de.wikipedia.org/wiki/StartComFü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.
Zitat:
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.html3. Bearbeiten der LIGHTTPD-KonfiguartionMit
Code:
vi /etc/lighttpd/lighttpd.conf
wird die Konfiguration bearbeitet. Am Anfang müssen drei Module durch Entfernen der "#" aktiviert werden (rewrite, redirect und auth):
Code:
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:
Code:
$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 kannn 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 restarten.
Quellen:
http://redmine.lighttpd.net/wiki/lightt ... ttpToHttpshttp://www.root-on-fire.com/2010/06/17/ ... eichnisse/4. Portfreischaltung in der Fritz.Box o. a. RouternIn der Fritz Box müssen jetzt nur noch die folgenden Ports umgeleitet werden:
Zitat:
TCP 80 LS-WXL188 81
TCP 443 LS-WXL188 444
Damit sollte alles funktionieren.