web-dev-qa-db-ja.com

Apacheからユーザーエージェントをブロックする方法

Apache Webサーバーの設定ファイルで正規表現によってUA文字列ブロックを実現するにはどうすればよいですか?

たとえば、debianサーバー上のApacheからすべてのボットをブロックしたい場合、ユーザーエージェントに/\b\w+[Bb]ot\b/または/Spider/という正規表現が含まれています。

これらのボットはサーバー上のページを見ることができず、アクセスログにもエラーログにも表示されません。

http://global-security.blogspot.de/2009/06/how-to-block-robots-before-they-hit.htmlはそのためにmod_securityを使用することを想定していますが、http.conf?の単純なディレクティブはありませんか?

2
rubo77

Apacheで書き換えエンジンを有効にしました。

a2enmod rewrite

このブロックを/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>

apacheを再起動しました:

Apache2ctl graceful

現在、これらのスパイダーからのこれらの呼び出しはすべて403エラーを引き起こします。

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