• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

IP-Adressen verbannen in Apache

S_O

Member
Ich habe vor zum Schutz vor den sogenannten Mail-Spider-Programmen, die das Internet nach Emails absuchen um Spam dorthin zu verschicken, eine automtische Verbannung auf meine Seite zu bauen: Ganz oben auf der website ist ein kleiner (für den bernutzer fast nicht sichtbarer) Link angebracht, der auf eine php-datei zeigt, die dann jede Menge schrott-adressen generiert um die das Programm zu vergiften. Ganz oben ist wieder ein Link der auf eine php-datei zeigt, die dann in einer Datei den eintrag macht:

#t64654654
deny from 123.123.123.123

Hinter dem "#t" steht die aktuelle Zeit (als unix-timestamp) + 10000 Sekunden.
Ein programm läuft per cronjob jede Stunde einmal durch diese Datei, vergeleicht die Zeit mit der aktuellen und sollte die eingetargende Zeit überschritten sein, wir der Eintrag entfernt. Somit ist die IP die da drauf klickt für ca. 2 3/4 bis 3 3/4 Stunden verbannt. Soweit funktioniert auch alles perfekt.
Fast. ich muss diese datei natürlich irgdnwie in Apache einbinden. Mein erste idee, in der httpd.conf habe ich einfach bei den VirtualHosts folgendes eingefügt:

<Directory *>
Order allow, deny
Include banlist.conf
Allow from all
</Directory>

Funktionierte auch, aber leider hat er die Änderungen immer erst geschluckt nachdem ich Apache neugestartet habe. Dann habe ich mir gedacht, mache ich es mit .htaccess:

Order allow, deny
Include banlist.conf
Allow from all

Dann gibts aber ein internal server error, weil Include in htaccess nicht erlaubt ist. Ich könnte es natürlich auch direkt in htaccess eintragen, nur mit VirtualHosts muss ich das dann in jeder htaccess machen und muss auch alle htaccess jede Stunde durchlaufen lassen.

Irgendeine Idee wie man das machen könnte?
 

audi

Newbie
mach nen php skript was du irgendwie alle halbe stunde oder so automatisch ausführen lässt:

öffne .htaccess
füge banlist.conf hinzu
speichere
 
OP
S

S_O

Member
mach nen php skript was du irgendwie alle halbe stunde oder so automatisch ausführen lässt:

öffne .htaccess
füge banlist.conf hinzu
speichere
Das würde zwar technisch gehen, aber seinen Zweck nicht erfüllen. Wenn diese Mail-Spider nun auf den Verbannungs-Link klicken, soll die IP _sofort_ auf dem kompletten Server gesperrt sein, und nicht erst in einer halben Stunde. Theoretisch könnte man natürlich die .htaccess direkt mit der PHP-datei bearbeiten (funktioniert, habe ich ausprobiert), aber bei mehreren Sub-Domains brauche ich auch mehrere .htaccess Dateien und ich muss dann auch mehrere dateien durch mein programm laufen lassen um dei IPs wieder freizuschalten. Das will ich vermeiden.
Gibt es für Apache kein bann-modul? Es gibt eine Datei mit gesperrten IPs, die wird bei jedem Zugriff überprüft, oder per Befehl neugeladen, ohne das Apache neugestartet wird. Gibts sowas nicht?
 
Oben