Ich habe dies ursprünglich auf webmasters.stackexchange.com gepostet , aber mir wurde gesagt, dass ich hier einen besseren Empfang bekommen würde.
In den letzten Tagen habe ich an einem (vermutlich unbeabsichtigten) DDOS-Angriff gelitten. Ich habe so viele Anfragen von einem Agenten erhalten, der sich als "Mozilla / 4.0 (kompatibel; ICS)" identifiziert, dass Apache den gesamten verfügbaren Speicher verschlingt.
Infolgedessen möchte ich alle Anfragen blockieren, die von diesem Benutzeragenten begleitet werden. Deshalb habe ich versucht, dies in httpd.conf zu tun:
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
Aber wenn ich Apache neu starte, beschwert es sich über die Verwendung deny
hier. Gibt es eine Möglichkeit, den Zugriff auf den gesamten Server zu verweigern, ohne ihn in einen location
oder einen directory
Block einschließen zu müssen, was bedeuten würde, dass ich für jede Site einen neuen Block hinzufügen müsste?
UPDATE: Der Fehler, den ich bekomme
- Neustart des Webservers apache2
Syntaxfehler in Zeile 4 von /etc/apache2/httpd.conf: Verweigern hier nicht erlaubt [fehlgeschlagen]
quelle
<Location>
da es alle anderen Autorisierungsbeschränkungen in<Directory>
außer Kraft setzt , es sei denn, Sie fügen hinzuAuthMerging And
. Siehe die SicherheitswarnungRequire
in den Apache-Dokumenten: httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requiremod_rewrite kann auf Serverebene gemäß den folgenden Dokumenten konfiguriert werden:
Vergessen Sie nicht, dem regulären Ausdruck in der
RewriteCond
quelle
<!-- -->
zum BearbeitenVorausgesetzt, die Syntax in den SetEnv-Zeilen ist korrekt, sollten Sie in der Lage sein, dies wie folgt in die conf zu werfen:
Sollte es ermöglichen, dass dies auf allen virtuellen Hosts funktioniert - gerade auf 2.2.24 getestet, hat wie ein Zauber funktioniert.
quelle