はじめに
UAを Googlebot になりすまして短時間でサイトに大量アクセスし、CPUやメモリに高負荷をかけるケースも昨今少なくありません。
大量アクセスしているものが、本当に Googlebot などの本物の Googleクローラであるか、それとも不正になりすましたものであるかを確認する方法を紹介します。
確認手順
GoogleにてGoogleクローラか確認する方法 が公開されています。
hostコマンドで該当のIPアドレスを調べることで、本物の Googlebot かを確認できます。
該当アクセスのIPアドレスにて、DNS逆引き(IPアドレスからドメイン名を調べる)、DNS正引き(ドメイン名からIPアドレスを調べる)を実行した結果が、この手順の通りにならない場合、Googlebot になりすましたアクセスであるということが判断できます。
それでは実際にやってみましょう!
- アクセスログ確認
まず、アクセスログから大量アクセスしているIPアドレスを割り出します。
94.177.118.30 - - [31/Oct/2021:05:50:23 +0900] "GET / HTTP/1.1" 200 1536 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
UA見る限り、Googlebot になっていますね。
それでは、このIPアドレスからドメイン名を調べます。
- DNS逆引き(IPアドレスからドメイン名を調べる)
ターミナルを起動し、上記で割り出したIPアドレスを、hostコマンドでDNS逆引きします。
$ host 94.177.118.30 Host 30.118.177.94.in-addr.arpa. not found: 3(NXDOMAIN)
結果は「not found」。。。DNS逆引きできないですね><
ということで、このアクセスは、Googlebot になりすまして大量アクセスしている悪質 bot の可能性が高いことが確認できました。
本物のGoogleクローラの場合
本物の Googleクローラは下記のようにDNS逆引き、正引きができます。当然ですね(^^;)
- アクセスログ確認
66.249.66.76 - - [31/Oct/2021:04:48:05 +0900] "GET / HTTP/1.1" 200 9082 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Chrome/94.0.4606.81 Safari/537.36"
このIPアドレスからドメイン名を調べます。
- DNS逆引き(IPアドレスからドメイン名を調べる)
$ host 66.249.66.76 76.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-76.googlebot.com.
ドメイン名が、「googlebot.com」になっていますね。
コマンド結果にある「crawl-66-249-66-76.googlebot.com」をDNS正引きします。
- DNS正引き(ドメイン名からIPアドレスを調べる)
$ host crawl-66-249-66-76.googlebot.com crawl-66-249-66-76.googlebot.com has address 66.249.66.76
元IPアドレス「66.249.66.76」と同じであることが確認できましたね。これで本物のGoogleクローラであることがわかりました。
まとめ
いかがでしたでしょうか?今回は、hostコマンドにてIPアドレスをDNS逆引き・正引きすることで、大量アクセスしているのが本物のGoogleクローラか、それともなしすまし悪質 bot かを、確認する手順を紹介しました。
この手順で悪質 bot だと判断できたら、該当IPアドレスをブロックするなどの対策検討ができますね。
しかし、IPアドレスをブロックしたとしても、こういった悪質 bot は毎回IPアドレスを変えてくるので、イタチごっこになってしまうのもまた悩みどころですね。