"Refuser tout" pour tous les files dans un directory

Mon server est touché fort par des robots, etc., à la search de différents files dans /cgi-bin/ , comme search.cgi, YaBB.pl, gitweb.perl, perl, gitweb.pl, htsearch, et ainsi de suite.

Je souhaite nier tout access (envoie un en-tête interdit 403) pour tous les noms de files possibles et les extensions dans /cgi-bin /. (Ceci est un server partagé, donc j'ai seulement access à .htaccess, pas à vhosts ou à httpd ).

Dans un .htaccess in cgi-bin j'ai essayé

 deny from all 

aussi bien que

 <FilesMatch "\.cgi?$"> Order Allow,Deny Allow from All </FilesMatch> <FilesMatch "\ .cgi? $"> <FilesMatch "\.cgi?$"> Order Allow,Deny Allow from All </FilesMatch> 

pour les extensions .cgi , sans chance pour l'un ni l'autre.

Comment puis-je refuser l'access pour tout dans /cgi-bin/ ?

Dois-je énumérer tous les noms de files et les extensions dans une directive <FilesMatch ?

Connaissez-vous l'ip ou l'agent user qui cause un trafic élevé?

 <Directory /cgi-bin> order deny,allow deny from all </Directory> <Directory / cgi-bin> <Directory /cgi-bin> order deny,allow deny from all </Directory> 

Alt,

 RewriteRule "cgi(.*)" "go_away" 

Il existe beaucoup de moyens pour y parvenir:

  1. Utilisation du directory (version Apache 2.2):

     <Directory /var/www/cgi-bin/> order deny,allow deny from all </Directory> 
  2. Utilisation de la condition de réécriture:

     RewriteCond %{REQUEST_URI} ^/cgi-bin RewriteRule .* - [END,R=406] RewriteCond% {REQUEST_URI} ^ / cgi-bin RewriteCond %{REQUEST_URI} ^/cgi-bin RewriteRule .* - [END,R=406] 

vous pouvez modifier 406 par n'importe quel code que vous voulez que 403 soit interdit, vous pouvez find ici la list du code d'état: https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

Et vous pouvez même étendre la condition de réécriture pour couvrir plus de bot:

 RewriteCond %{HTTP_USER_AGENT} ^-? [OR] RewriteCond %{REQUEST_URI} ^/cgi [OR,NC] RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR] RewriteCond %{REQUEST_URI} !^/ RewriteRule .* - [END,R=406] RewriteCond% {HTTP_USER_AGENT} ^ -? RewriteCond %{HTTP_USER_AGENT} ^-? [OR] RewriteCond %{REQUEST_URI} ^/cgi [OR,NC] RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR] RewriteCond %{REQUEST_URI} !^/ RewriteRule .* - [END,R=406] RewriteCond% {REQUEST_URI} ^ / cgi [OR, NC] RewriteCond %{HTTP_USER_AGENT} ^-? [OR] RewriteCond %{REQUEST_URI} ^/cgi [OR,NC] RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR] RewriteCond %{REQUEST_URI} !^/ RewriteRule .* - [END,R=406] RewriteCond% {REQUEST_METHOD}! ^ (GET | HEAD | POST) $ [OU] RewriteCond %{HTTP_USER_AGENT} ^-? [OR] RewriteCond %{REQUEST_URI} ^/cgi [OR,NC] RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR] RewriteCond %{REQUEST_URI} !^/ RewriteRule .* - [END,R=406] RewriteCond% {REQUEST_URI}! ^ / RewriteCond %{HTTP_USER_AGENT} ^-? [OR] RewriteCond %{REQUEST_URI} ^/cgi [OR,NC] RewriteCond %{REQUEST_METHOD} !^(GET|HEAD|POST)$ [OR] RewriteCond %{REQUEST_URI} !^/ RewriteRule .* - [END,R=406] 

Les règles suivantes empêchent l'agent d'utilisation vide, la request commençant par / cgi, la méthode de limitation à GET / HEAD / POST, la request ne commence pas par /

  1. En utilisant la manière plus logique:

Déplacez simplement ou supprimez cgi-bin de votre dossier Web si vous ne les utilisez pas.