2016-05-24 7 views
1

Ich bin einen Load Balancer vor meinem Web-Server mit, was bedeutet, alle Verbindungen von 192.168.x.x (oder anderem internem LAN-Segment) kommen. Meine Benutzer zeigen ihre ursprüngliche IP-Adresse in der Kopfzeile x-forwarded-for an. Ich versuche, Benutzer (IP-Adressen) dynamisch zu verbieten, so dass ich automatisch/leise schwarze Liste ohne manuellen Admin-Eingriff kann.Wie blockierst du IP-Adressen innerhalb von Apache dynamisch?

Derzeit mache ich dies manuell mit .htaccess Regeln. Die automatische Blockierung von Benutzern auf Anwendungsebene ist nicht akzeptabel.

Gibt es Apache-Module oder Methoden, die eine ipset Liste gelesen werden, eine Datenbank oder andere, mir zu erlauben Benutzer automatisch zu verweigern, basierend auf den x-forwarded-for-Header?

Antwort

2

See: Ban IPs from text file using htaccess

Grundsätzlich können Sie eine RewriteMap nutzen, um entweder aus einer Textdatei lesen, ein Skript ausführen (die auf eine Datenbank zugreifen können) oder auch eine SQL-Abfrage mit DBD auszuführen. Denken Sie daran, dass Sie die Karte nicht in einer htaccess-Datei definieren können, aber Sie können die Karte in einem verwenden.

Und Sie haben die %{HTTP:X-FORWARDED-FOR} Zustand anstelle des %{REMOTE_ADDR} werden überprüft:

RewriteEngine On 
RewriteCond ${access:%{HTTP:X-FORWARDED-FOR}} deny [NC] 
RewriteRule^- [L,F]