Netaddict



Sie befinden sich hier: Netaddict.de » howtos » Lighttpd Notziblock

Lighttpd Notziblock

Lighttpd mit IPv4 und IPv6

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

Lighttpd selbst kompilieren

Meine Configure-Zeile:

./configure --with-lua --with-fam --with-openssl --with-zlib --with-bzip2

Lighttpd-Chroot mit PHP

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:

/etc/makejail/lighttpd.py
# 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.

CaCert SSL

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.

Lua

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 in Lighttpd

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

 
XHTML 1.1 CSS 2 Creative Commons License
Netaddict Version 6.0 - © 1996-2017 by netaddict.de - Kontakt