web-dev-qa-db-fra.com

Comment bloquer un agent utilisateur depuis Apache

Comment réaliser un bloc de chaîne UA par expression régulière dans les fichiers de configuration de mon serveur Web Apache?

Par exemple: si je souhaite bloquer tous les bots d'Apache sur mon serveur Debian, ceux-ci ont l'expression régulière /\b\w+[Bb]ot\b/ ou /Spider/ dans leur agent utilisateur.

Ces robots ne devraient voir aucune page de mon serveur et ils ne devraient apparaître ni dans les journaux d'accès ni dans les journaux d'erreur.

http://global-security.blogspot.de/2009/06/how-to-block-robots-before-they-hit.html suppose d'utiliser mod_security pour cela, mais n'y a-t-il pas une directive simple pour http.conf?

2
rubo77

J'ai activé le moteur de réécriture dans Apache:

a2enmod rewrite

et ajouté ce bloc à mon /etc/Apache2/httpd.conf

<Directory /var/www/>
       <IfModule mod_rewrite.c>
                RewriteEngine on
                RewriteCond %{HTTP_USER_AGENT} googlebot [NC,OR]
                RewriteCond %{HTTP_USER_AGENT} sosospider [NC,OR]
                RewriteCond %{HTTP_USER_AGENT} BaiduSpider [NC]
                # Allow access to robots.txt and forbidden message
                # at least 403 or else it will loop
                RewriteCond %{REQUEST_URI} !^/robots\.txt$
                RewriteCond %{REQUEST_URI} !^/403\.shtml$
                RewriteRule ^.* - [F,L]
       </IfModule>
</Directory>

et redémarré Apache:

Apache2ctl graceful

maintenant, ces appels de ces araignées causent tous erreurs 4:

grep -E 'spider|bot' /var/log/Apache2/*.log
1
rubo77