In meiner Apache-Konfiguration möchte ich eine Umgebungsvariable festlegen, wenn ich sehe, dass der Besucher aus einem bestimmten IP-Bereich stammt. Derzeit mache ich es so:
SetEnvIfNoCase Remote_Addr "^194\.8\.7[45]\." banned=spammer-ip
SetEnvIfNoCase Remote_Addr "^212\.156\.170\." banned=spammer-ip
Was ich bevorzugen würde, ist so etwas:
SetEnvIfIpRange 194.8.74.0/23 banned=spammer-ip
SetEnvIfIpRange 212.156.170.0/24 banned=spammer-ip
... weil ich denke, dass das Konvertieren einer IP-Adresse in einen String und das anschließende Ausführen eines regulären Ausdrucks eine völlige Verschwendung von Ressourcen ist.
Ich könnte eine machen
Deny From 194.8.74.0/23
... aber dann bekomme ich keine Variable, die ich auf meiner 403-Fehlerseite überprüfen kann - um den Grund zu finden, warum der Zugriff verweigert wurde.
Irgendwelche Vorschläge, was ich vermissen könnte? Gibt es einen Apache2-MOD, der Umgebungsvariablen basierend auf "IP-Adressbereichen" festlegen kann?
Sie können die CIDR-Formatierung mit Apache 2.4 verwenden, die Folgendes ermöglicht
<If>
:quelle
Das ist nicht wirklich eine Lösung aus gehen RegExp zu IP - Bereichen , aber ich fand ein schönes Skript von Google gehostet einen IP - Bereich zu einem passenden regulären Ausdruck zu konvertieren. Könnte auch für einige von Ihnen von Nutzen sein ...
Wie schließe ich Datenverkehr aus einem Bereich von IP-Adressen aus?
[Aktualisieren]
Es sieht so aus, als hätte Google das IP-Adress-Tool entfernt (oder zumindest der Link auf seiner Website ist defekt), aber hier gibt es ein ähnliches Tool: http://www.analyticsmarket.com/freetools/ipregex
quelle