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" )