IPs mit lighttpd blockieren
Da wir in letzter Zeit ein kleines Spamproblem auf Xairro haben, suchte ich eine Lösung um diese IP zu blockieren, da alle Spam-Kommentare von der selben IP kamen.
Da lighttpd include_shell unterstützt, wodurch man die Ausgaben eines Scripts als Konfiguration nutzen kann, habe ich ein einfaches Python-Script geschrieben, dass die IPs aus einer Datei ausliest und in einen regulären Ausdruck für die Konfiguration umwandelt.
Das Format der IP-Datei wird ganz einfach sein:
1 2 3 | 127.0.0.1
10.0.1.1
10.0.1.2
|
Das folgende Script liest diese Datei aus und leitet alle Anfragen einer "bösen IP" auf eine bestimmte Domain weiter, die dann aber manuell eingerichtet werden muss.
1 2 3 4 5 6 7 8 9 10 11 12 13 | #!/usr/bin/env python
IP_FILE = '/etc/lighttpd/blocked'
BLOCK_DOMAIN = 'blocked.xairro.com'
ip_list = [ip.strip() for ip in file(IP_FILE).readlines()]
ip_regex = '('+'|'.join(['\\.'.join(ip.split('.')) for ip in ip_list])+')'
print '''$HTTP["remoteip"] =~ "%s" {
$HTTP["host"] != "%s" {
url.redirect = ("" => "http://%s/")
}
}''' % (ip_regex, BLOCK_DOMAIN, BLOCK_DOMAIN)
|
Die Konfiguration von lighttpd könnte dann so aussehen:
1 2 3 4 5 | include_shell "/etc/lighttpd/blocked-config.py"
$HTTP["host"] == "blocked.xairro.com" {
server.document-root = "/var/www/blocked"
}
|
Post comment
Zum Kommentieren musst du angemeldet sein.

2 comments
Warum schreibt ihr in der .htaccess Datei eures Servers dasselbe? Nur aus reiner Neugier
Dort werden ja bloß 3 Zeilen verwendet:
Oder meintet ihr etwas anderes ?
Welche .htaccess meinst du? Weder besitzen wir eine, noch würdest du wenn sie existieren würde den Inhalt kennen, noch unterstützt lighttpd .htaccess Dateien.