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?
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