À l'origine, j'ai publié cet article sur webmasters.stackexchange.com , mais on m'a dit que j'aurais une meilleure réception ici.
Depuis quelques jours, je souffre de ce qui semble être une attaque DDOS (probablement par inadvertance). J'ai reçu tellement de demandes d'un agent s'identifiant comme "Mozilla / 4.0 (compatible; ICS)" qu'apache mange à travers toute la mémoire disponible.
Par conséquent, je voudrais bloquer toutes les demandes accompagnées de cet agent utilisateur, j'ai donc essayé de le faire dans httpd.conf:
SetEnvIfNoCase User-Agent "Mozilla/4.0 (compatible; ICS)" bad_user
Deny from env=bad_user
Mais quand je redémarre apache, il se plaint de l'utiliser deny
ici. Sans avoir à l'envelopper dans un bloc location
ou directory
, ce qui signifierait que je devrais ajouter un nouveau bloc pour chaque site, existe-t-il un moyen de refuser l'accès à l'ensemble du serveur?
MISE À JOUR: L'erreur que j'obtiens
- Redémarrage du serveur Web apache2
Erreur de syntaxe sur la ligne 4 de /etc/apache2/httpd.conf: refus non autorisé ici [échec]
la source
<Location>
car il remplace toutes les autres restrictions d'autorisation dans<Directory>
, sauf si vous ajoutezAuthMerging And
. Voir l'avertissement de sécurité surRequire
dans les documents apache: httpd.apache.org/docs/2.4/mod/mod_authz_core.html#requiremod_rewrite peut être configuré au niveau du serveur selon les documents:
N'oubliez pas d'échapper aux regex dans le
RewriteCond
la source
<!-- -->
à l'éditionPourvu que la syntaxe sur les lignes SetEnv soit correcte, vous devriez être capable de jeter cela dans la conf comme ceci:
Devrait permettre que cela fonctionne sur tous les hôtes virtuels - vient d'être testé sur 2.2.24, a fonctionné comme un charme.
la source