Webサーバ運用の負担を増やすBaiduからのクロールをブロックする
久々に技術系の記事です。ITエンジニア以外の方にはまったく意味のわからない内容だと思いますので、読み飛ばして頂ければと。
Baiduからのクロールにより、Logwatchに大量のexploit警告が残って面倒
Logwatchでは、リクエストに"\x81"の文字列が含まれるとexploit(脆弱性を攻撃するためのコード)扱いになり、対象リクエストがLogwatchのレポートに一覧表示されます。
サーバ攻撃の目的以外でこれに該当するリクエストが来ることはまずないのですが、中国の検索エンジンで2008年から日本でもサービスを開始した「Baidu(百度)」が、検索クエリなどを引数としたURLに含まれる"%"を"\x"としてクロールしてくるため、ExploitではないリクエストがExploitとしてLogwatchのレポートに記録されるので、かなり面倒なことになります。
そのため、以下のいずれかでの対処を検討していました。
- Logwatchのスクリプトを修正して"\x81"をexploitとして認識させないようにする
- Baiduからのリクエストをaccess.logに残さないようにする
- そもそも何かとサーバに迷惑をかける仕様のクローラーなので、
hosts.deny(webアクセスは対象にならない)iptablesに登録して完全にブロックする。
検討した結果、Logwatchのスクリプトを修正するのはリスクが高いので1はやらない。リクエストのログを残さないのはセキュリティ上あるべきではないので2もやらない。最後の3も、Baiduからの検索でアクセスして頂いている方もそれなりにいるかもしれないのでやらない。と、これまでこの問題は許容(悪く言えば先送り)してきました。
その後、国内でのBaiduの利用者が伸びている感じもなく、Webページ検索に使ってる人はほとんどいないと思いますので、Baiduのクローラー側の問題が解消されるまで、3での対処を行うことにしました。
ただし、極めて少ない数ではあると思いますがアクセス数が低下する可能性がありますので、クライアントのWebサイトについては今のところ適用していません。
(追記)
BaiduのIPアドレスですが、Baiduが「180.76.0.0/16」、Baidu Japanが「119.63.192.0/21」です。他にも持ってるみたいですが今のところ上記のIPからしかアクセスされていないようです。