概要
先日、AWSで運営しているサイトのデータベースインスタンスに負荷がかかり、アラートが発生しました。アクセスログを確認したところ、botから大量のアクセスが来ていることが判明しました。このような場合、このbotが公式のクローラーなのか、なりすましの攻撃なのかを調査する必要があります。
IPアドレスからのなりすまし攻撃か公式からのアクセスかの調査方法
このbotのクローラーがなりすまし攻撃なのか、それとも公式のクローラーなのかをIPアドレスから確認する方法を紹介します。
IPの逆引き
まず、ターミナルで調べたいIPアドレスに対して逆引きを行います。以下のコマンドを使用します。
% host "調べたいIPアドレス"
このコマンドを実行することで、IPアドレスに対応するホスト名を取得できます。公式のクローラーであれば、信頼できるドメイン名が表示されます。例えば、Googlebotであれば、google.comドメインが含まれているはずです。
例えば、以下はGoogleが公式で公開しているGooglebotのIPアドレスを逆引きしたものになります。
% host 66.249.64.32
32.64.249.66.in-addr.arpa domain name pointer crawl-66-249-64-32.googlebot.com.
IP アドレス: 66.249.64.32
ホスト名: crawl-66-249-64-32.googlebot.com
組織: Google LLC
地域: カリフォルニア州、アメリカ合衆国
ISP: Google LLC
ホスト名の確認
次に、取得したホスト名を再度IPアドレスに変換して確認します。これにより、なりすましの可能性を排除できます。以下のコマンドを使用します。
% host example.com
例として先ほどGooglebotのホスト名を確認した結果
% host crawl-66-249-64-32.googlebot.com
crawl-66-249-64-32.googlebot.com has address 66.249.64.32
この手順を踏むことで、ホスト名とIPアドレスが一致しているか確認できます。一致していれば、公式のクローラーである可能性が高いです。
公式クローラーリストの参照
最後に、公式クローラーリストを参照して確認します。多くの検索エンジンやサービスプロバイダは、公式のクローラーIPリストを公開しています。例えば、Googleの公式クローラーリストはGoogleの公式ドキュメントで確認できます。
https://developers.google.com/search/docs/crawling-indexing/verifying-googlebot?hl=ja
まとめ
botによる大量アクセスがDBインスタンスに負荷をかけている場合、まずIPアドレスの逆引きとホスト名の確認を行い、なりすまし攻撃かどうかを判断します。さらに、公式クローラーリストを参照することで、より確実に判別することができます。この方法を用いることで、不審なアクセスに対して迅速かつ適切に対応することが可能です!