迷惑系クローラー(bot)からのアクセスを拒否する設定について調べてみた(Apache)

迷惑系Botクローラーとは?

迷惑系Botクローラーは、インターネット上のウェブサイトを自動的に巡回し、データを収集するために設計されたプログラムです。

ウェブサイトのトラフィックやサーバーリソースを消費し、不正な活動を行うため、ウェブサイト所有者にとって迷惑な存在です。

ウェブサイト所有者は、適切なセキュリティ対策をして、迷惑系Botクローラーのアクセスを制限することが重要です。

設定方法

bot拒否の設定をする場合は.htaccessに設定する方法もありますが今回は別の設定方法でやっていきます。

1.今回拒否するbotは下記

SetEnvIf User-Agent "archive.org_bot" denybot
SetEnvIf User-Agent "ia_archiver" denybot
SetEnvIf User-Agent "special_archiver" denybot
SetEnvIf User-Agent "AhrefsBot" denybot
SetEnvIf User-Agent "bidswitchbot" denybot
SetEnvIf User-Agent "BLEXBot" denybot
SetEnvIf User-Agent "CriteoBot" denybot
SetEnvIf User-Agent "DataForSeoBot" denybot
SetEnvIf User-Agent "Scrapy" denybot
SetEnvIf User-Agent "GrapeshotCrawler" denybot
SetEnvIf User-Agent "ias-sg" denybot
SetEnvIf User-Agent "MegaIndex" denybot
SetEnvIf User-Agent "MJ12bot" denybot
SetEnvIf User-Agent "Pinterestbot" denybot
SetEnvIf User-Agent "proximic" denybot
SetEnvIf User-Agent "SemrushBot" denybot
SetEnvIf User-Agent "SerendeputyBot" denybot
SetEnvIf User-Agent "SMTBot" denybot
SetEnvIf User-Agent "Superfeedr" denybot
SetEnvIf User-Agent "trendictionbot" denybot
SetEnvIf User-Agent "VelenPublicWebCrawler" denybot
SetEnvIf User-Agent "WooRank" denybot
SetEnvIf User-Agent "ZoominfoBot" denybot

2.Includeディレクティブを使用するのでファイルを作成する。

vim /etc/httpd/conf.d/vhosts/include/denybot.conf

denybot.confに1.今回拒否するbotを記述する

3.Directoryディレクティブに下記の設定を追加

<Directory "/var/www/vhosts/example.com/public_html">
  Options All -Indexes
  AllowOverride All

  #Require all granted

  <RequireAll>
  Require all Granted
  Require not env denybot
  </RequireAll>

Include /etc/httpd/conf.d/vhosts/include/denybot.conf

</Directory>

4.Apacheを再起動する

systemctl restart httpd

上記でbotからのアクセスが拒否されるようになります。

補足1

botからのアクセスが弾かれるかどうかはcurlコマンドで確認できます。

curl  -H "User-Agent: AhrefsBot" https://example.com/

上記で403が返って来れば成功です。

補足2

Includeディレクティブを使用するメリット

シンプルな管理: Includeディレクティブを使うことで、大きな設定ファイルを小さな部分に分割することができます。それぞれのファイルには特定の設定が含まれており、必要な場所でそれらをインクルードすることで、設定全体をシンプルに保つことができます。
                         このようにすることで、特定の設定を含むファイルを追加または削除するだけで、他の設定に影響を与えずに簡単に構成を変更できます。

可読性の向上: 設定ファイルが分割されているため、各ファイルは特定の目的や機能を持っています。これにより、個々のファイルがシンプルで読みやすくなり、設定の意図や目的が明確になります。

視認性と保守性の向上: Includeディレクティブを使用すると、メインの構成ファイルが簡潔で読みやすくなります。重要な設定を個別のファイルにまとめ、それらを必要な場所でインクルードすることで、構成ファイル全体の可読性と保守性を向上させることができます。

再利用性: Includeディレクティブを使用すると、同じ設定を複数の場所で再利用することができます。例えば、denybot.confのようなファイルにボットを弾く設定をまとめておき、複数のバーチャルホストでそれをインクルードすることができます。これにより、設定の一貫性を保ちながら、重複を排除することができます。

分離された管理: Includeディレクティブを使用すると、特定の設定を担当するチームやユーザーがそれに対応するファイルを管理できます。たとえば、denybot.confをボット管理のチームが管理することができます。これにより、異なるグループが異なる設定を管理し、誤って他の設定を変更するリスクを減らすことができます。