Wenn man mit Lighttpd IPv6 ebenfalls bedienen will, ist man versucht die Option „server.use-ipv6“ auf „enable“ zu stellen. Grundsätzlich ist der Server danach via IPv6 erreichbar, nur leider fehlt die Erreichbarkeit direkt über IPv4. Zumindest werden, wenn die Linux-Distribution entsprechend1) konfiguriert ist, die IPv4-Adressen in das IPv6-Format gekapselt, was natürlich ungünstig ist, weil die meiste Websoftware mit IP-Adressen wie „::ffff:127.0.0.1“ nichts anfangen kann.
Und so sieht die richtige Lösung aus. Man lässt die Option „server.use-ipv6“ weg und konfiguriert die Sockets in der Konfiguration manuell2) auf IPv4 und IPv6, z. B. so:
$SERVER["socket"] == "[2001:dead::dead:dead:dead:beaf]:443" { ssl.engine = "enable" }
Meine Configure-Zeile:
./configure --with-lua --with-fam --with-openssl --with-zlib --with-bzip2
Zum Erstellen eines Chroots für Lighttpd unter Debian hat sich die Software makejail bewährt. Makejail baut ein Chroot vollständig auf, Handarbeit ist nur bei der Konfiguration erforderlich.
Eine Beispiel-Konfiguration für ein einfaches Chroot mit PHP:
# chroot target chroot="/var/webroot" # test command for php testCommandsInsideJail=["/usr/bin/php5-cgi", "/usr/bin/php-cgi" "/usr/bin/php-cgi /var/www/test.php"] processNames=["php5-cgi"] # only user and group www-data users=["www-data"] groups=["www-data"] userFiles=["/etc/password","/etc/shadow"] groupFiles=["/etc/group","/etc/gshadow"] # clean jail on rebuild, but preserve a few files cleanJailFirst=1 maxRemove=1500 preserve=["/var/www", "/var/log/lighttpd", "/var/cache/lighttpd/compress/", "/var/cache/lighttpd/uploads/", "/usr/share/zoneinfo/", "/var/lib/php5/"] # packages to install in chroot packages=["php5-common", "php5-cgi", "php5"] # files and dirs we need in every case forceCopy=["/dev/zero", "/etc/hosts", "/etc/mime.types", "/etc/localtime", "/etc/resolv.conf", "/etc/services", "/usr/lib/libnss_dns.*", "/usr/share/zoneinfo/*/*", "/var/log/lighttpd", "/var/cache/lighttpd/compress/", "/var/cache/lighttpd/uploads/", "/tmp"]
Im Chroot sollte dann noch eine Datei im Pfad /var/www/test.php (Absoluter Pfad: /var/webroot/var/www/test.php) erstellt werden, die etwas Demo-Code wie ein „Hello World“ oder phpinfo() enthält. Dann kann Makejail automatisiert mittels ldd prüfen, ob alle notwendigen Libs im Chroot sind.
CSR bei Cacert hochladen, Cert in domain_cert.pem speichern, dann Cert und Key zusammenführen:
cat domain_cert domain_key > domain.pem
Beim erneuern, einfach immer das Cert im domain.pem löschen und durch das neue ersetzen.
Da Lighttpd so etwas wie mod_security fehlt, ist man darauf angewiesen zu improvisieren. Das Magnet-Modul mit einer handvoll Lua-Code hat sich hier als ganz nützlich erwiesen.
http://www.nullamatix.com/529-attacks-in-9-days-id1txt-rfi-more/ http://www.whmcr.com/2009/06/19/lighttpd-mod_security-via-mod_magnet/
Mediawiki und Lighttpd zur Zusammenarbeit zu bewegen, wenn man schicke URL's will, ist nicht so einfach. Folgende Rewrite-Bedingungen funktionieren für mich. Damit sind hochgeladene Bilder zugänglich, die Suche funktioniert und URLs sind in der schönen Form „wiki/TollerArtikel“.
url.rewrite-once = ( "^/wiki/upload/(.+)" => "/wiki/upload/$1", "^/wiki/([^?]*)(?:\?(.*))?" => "/wiki/index.php?title=$1&$2", "^/wiki" => "/wiki/index.php" )