迷惑系ボットやクローラーは、サーバー負荷を上げたり、サイトの解析データを汚すので対策が必要です。方法としては.htaccessでブロックする、アクセス解析で対象のIPやユーザーエージェントを除外する、WordPressの場合「Wordfence」などのプラグインで行うなどの方法があります。

同一ドメインからのアクセスが急増
先日アクセス解析を眺めていると、異様なアクセス増。。。

11時と12時にアクセスが急激に増えています。
なんじゃこれ??
アクセス解析を導入していると、ユーザーがどこから来たのを調べることができるのですが、アメリカとアイルランドのamazonaws.comかららしいです。。。。


amazonaws.comとは、Amazon Web Services (AWS) のサービスを利用しているユーザーとのことで、AWS自体に危険性はないようなのですが、これはスパムボット(クローラー)の可能性があります。
そんなのに大量にアクセスされては、アクセス解析の計測がまともに出来なくなってしまいますので明らかな営業妨害💢
個々のデータを調べてみると、IPは同じですが、ブラウザも違うし、OSも違います。




こんなときはどうしたら良いのでしょうか。
対策方法
まずやるべきは特定のIPアドレスのブロックです。

大量アクセスが発生している特定のIPアドレスは、アクセス解析で分かりますので、その特定のIPアドレスをブロックすることができます。
方法としては。
.htaccess ファイルによるブロック
これが一番確実かも!!
Apache/LiteSpeedサーバーを使用している場合、.htaccessファイルで特定のIPアドレスをブロックすることができます。
サーバー上にある.htaccessファイルの一番上(WordPressの場合は「# BEGIN WordPress」という行よりも上に全て半角で)に以下を追記します。
<RequireAll>
Require all granted
Require not ip xxx.xxx.xxx.xxx
Require not ip yyy.yyy.yyy.yyy
</RequireAll>※「xxx.xxx.xxx.xxx」や「yyy.yyy.yyy.yyy」がIPです。
Apache 2.2以前のバージョンの場合はこちら。
order allow,deny
allow from all
deny from xxx.xxx.xxx.xxx
deny from yyy.yyy.yyy.yyy.htaccessは、サーバー上にあるので、お手軽さでは劣りますが、この方法は最も確実です。
アクセス解析ツールでIPをブロック
当サイトが導入しているアクセス解析は、アクセス解析研究所のものなのですが、これで特定のIPやドメインを除外したり、アク禁にしたり出来ます。

IPアドレスを指定する:
例えば54.248.183.74と指定すれば、特定のIPアドレスだけを対象にできます。あるいは254.248.183.*と指定すれば、末尾が.0から.255までの合計256個のIPアドレスを一括指定できます。
サブネットマスクをご存知の方は 254.248.183.0/24という書式でも指定できます。
ホスト名でも指定できます:
IPアドレスの代わりにホスト名を指定できます。例えばec2-54-248-183-74.compute.amazonaws.comと指定すれば、特定のホストだけを対象にできます。あるいは*.amazonaws.comと指定すれば、ホスト名の末尾がこれと一致するホストを一括指定できます。
アクセス解析研究所のマニュアルにも”amazonaws.com”の文字がwwwやはり悪さすることが多いのでしょうか??
除外する:
「除外する」を有効にすると除外アクセスとして扱われ、アクセス数にカウントされなくなります。アク禁にする:
ビジターをGoogleへ強制転送させることでページの内容を見られなくします。一方でアクセスそのものは解析結果として記録されるので、訪問の有無は解析結果ページで確認できます。

アクセス解析研究所より引用
ビジターをGoogleへ強制転送してくれるとは、なかなかやりますね👍️
他に、ユーザーエージェントを指定することも可能です。

「google-proxy」とは、自分がサイトにアクセスすると、自分のアクセスを除外設定しているにも関わらず、自分のアクセスがそのまま “google-proxy” としてカウントされてしまうケースがあります(google-proxyはGoogleのクローラーではありません)。
これは、実際のユーザーアクセスではないノイズですので、除外しています。
「headlesschrome」とは、画面を表示しない状態で動作するブラウザ(ヘッドレスブラウザ)の一種で、自動化ツールやクローラー、テストプログラムなどによる機械的なアクセスです。
これもアクセス解析に含めるとデータが歪んでしまいますので、「google-proxy」や「headlesschrome」を除外設定に追記することで、より正確な正確なデータを取得することができます。
※Google Analyticsは特に設定していませんがこのようなノイズはありません。
こいつらが来ることで、このようにアクセス解析がめちゃくちゃに荒されてしまいます。


この設定はあくまでもアクセス解析から除外するだけで、仮に正規のクローラーやボットが混じっていてもブロックするわけではないので安心です。
もしもに備えWordfenceプラグインも導入
今回の異様なアクセスは、2時間程度で治まったようなので、とりあえずは一安心ですが、もしもに備えWordfenceプラグインも導入しました。
Wordfenceは、初心者には敷居の高い.htaccessを意識することなく悪質なボットやクローラーをブロック可能です。
ただしWordfenceは、悪質度の低い単なる迷惑系ボットやクローラーは通過させてしまうため、個別にIPブロックやレート制限が必要です。

レート制限とは、一定時間内のアクセス回数に制限をかける機能のことです。
IPブロックは効果的ではあるものの、相手がIPを変えてくると”いたちごっこ”になりがちです。
その点レート制限は、「短時間に異常な回数アクセスする挙動」そのものを制御できるため、IPが変わっても継続的に対策できるのが大きなメリットです。
ボットやスクレイピング対策として有効で、サーバー負荷の軽減にもつながります。
※当サイトでは SiteGuard WP Pluginというセキュリティープラグインも導入していますが、両方を入れると「機能が重複」するので、Wordfenceを入れる場合は、SiteGuard WP Pluginの削除、残す場合は Wordfenceのブルートフォース保護機能はOFF にしましょう。

Wordfenceを導入したらレート制限(Rate Limiting)も設定しておこう
Wordfenceのレート制限(Rate Limiting)とは、「短時間に異常な回数のアクセスを行う接続を、自動で一時的に出入り禁止(ブロック)にする機能」です。
セキュリティ対策として、以下の2つの非常に重要な役割を持っています。
サーバーダウン(負荷)の防止
悪意あるbotやプログラムが超高速でページを連打すると、サーバーに大きな負荷がかかり、サイトの表示が極端に重くなったりダウンしたりします。レート制限をかけることで、これらの無駄なアクセスを玄関口で即座にシャットアウトし、サイトの快適な表示速度を守ります。
「お宝ファイル(脆弱性)」の探索を防ぐ
ハッカーは、サイト内にうっかり残された設定ファイルのバックアップや、古いプラグインの隙(脆弱性)がないか、存在しないURLを片っ端から自動プログラムで叩いて探します。
Wordfenceのレート制限で、404エラー(ページが見つからない)の連発を制限することで、この「総当たりでの脆弱性探し」を途中で強制終了させ、侵入を未然に防ぐことができます。
Wordfence公式のレート設定
Wordfenceの公式のヘルプページには、レート制限の推奨設定が記載されています。
Wordfence > ファイアウォール > ファイアウォール設定 > レート制限 から設定可能です。
• Google のクローラーの取り扱い(重要)
○ ⇒ 「検証済みの Google クローラーはレート制限されない」 にチェックを入れる。
• 誰かのリクエスト数が超過
○ ⇒ 1分あたり 「120」 回 | 「制限する」
• クローラーのページビューが超過
○ ⇒ 1分あたり 「120」 回 | 「制限する」
• クローラーのページが見つからない (404) が超過
○ ⇒ 1分あたり 「30(または60)」 回 | 「ブロックする」
• 人間のページビューが超過
○ ⇒ 1分あたり 「120」 回 | 「制限する」
• 人間のページが見つからない (404s) が超過
○ ⇒ 1分あたり 「30(または60)」 回 | 「ブロックする」
• ルール違反時に IP アドレスがブロックされる期間
○ ⇒ 「30」 分 または 「60」 分
これはあくまでも「誤判定で一般ユーザーや良いボットを締め出さないこと」を最優先にした安全設定です(1分あたり120リクエストは Bing などのクローラーもブロックされませんとのこと)。そのため、単発の怪しいアクセスはすり抜けますが、万が一大規模なツール攻撃(DoS攻撃や脆弱性スキャン)があったときに、サーバーが落ちるのをガッチリ防ぐことができますので、この設定をベースに適宜調整してください。
また、WordPressのフォーラムではWordfenceのサポートの方の推奨設定が掲載されていました。
こちらはブロックではなく、すべて「スロットル(制限)」にしているのがポイントです。なぜブロック(403エラー)ではなく制限(503エラー)なのかは以下の通り。
また、ルール設定は「ブロック」ではなく「スロットリング」にすることをお勧めします。スロットリングは一般的にブロックよりも優れています。なぜなら、優れた検索エンジンであれば、誤ってブロックされた場合でも何が起こったのかを理解できるため、サイトがペナルティを受けることがないからです。
レート制限ルールは現実的な値に設定し、IPアドレスをブロックする時間を30分以上に設定してください。
迷惑系クローラーは、エラーページが表示されてもどんどんページを叩きますが、正規のクローラーは制限(503エラー)を受けると速度を落としてくれるらしいので、ブロック(403エラー)よりも制限(503エラー)を返すほうが確かにリスクはないかもしれません。
▶詳しくは公式ヘルプページをお読みください(英語)
Wordfenceのレート制限にさっそく引っかかりました!
Wordfence公式レート設定は非常に緩い設定ですが、早速網にかかりました。

ノットファウンドエラーとは404エラーのことですが、果たしてこのブロックは問題ないのかをAIに分析してもらいました。
早速通知が届いたのですね!これを見て「えっ、設定したばかりなのにもう!?」と驚かれたかと思います。
結論から言うと、これは「狙い通り、防犯カメラ(404エラー30回制限)が完璧に機能して、怪しいbotを自動で仕留めてくれた証拠」です。
今回ブロックされた状況について、分かりやすく解説します。
1. このブロックされた相手(IP: 20.**.**.**)は誰?
このIPアドレス「20.**.**.**」を調べると、Microsoft(マイクロソフト)が保有しているクラウドサーバー(Azureなど)のIPアドレスであることが分かります。普通の人間がわざわざMicrosoft(マイクロソフト)のクラウドサーバーを経由してあなたのブログを読みに来ることはありません。
これは、「Microsoft(マイクロソフト)のサーバーを借りて(あるいは踏み台にして)動いている、全自動の巡回bot(クローラー)」です。
2. なぜブロックされた?(通知メールの理由)
通知メールにある以下の理由がすべてを物語っています。理由: “人間の1分あたりページノットファウンドエラーの最大数を超えた。”
今回、Wordfenceの設定で「404エラー(存在しないページ)」の制限を「30回」にしましたよね。
このMicrosoft(マイクロソフト)発のbotは、あなたのブログにやってきて、わずか1分間のうちに「存在しないページ(URL)」を30回以上も執拗に叩いたため、設定した防犯カメラ(404制限)に見つかり、一発でアウト(1時間のブロック)になりました。
3. このbotは何をしようとしていたの?
通常、普通の読者は1分間に30回も404エラーを出しません。
このbotは、以下のような悪さをしようとしていた可能性が高いです。脆弱性スキャン(コソ泥行為):
「WordPressの古いプラグインや、セキュリティの穴になるファイルが転がっていないか」を、ありもしないURL(例: /wp-content/plugins/… など)を自動で片っ端から入力して探っていた。強引な巡回:
古いリンク情報などを頼りに、すでに削除されたページや存在しないURLを短時間に超高速でクロールしようとした。いずれにせよ、サイトにとって百害あって一利なしのアクセスです。
設定は大成功です!
もし、この設定を行っていなければ怪しいファイルをスキャンし続けられていたでしょう。
「404制限を30回にし、もしものためにブロック時間を1時間にしておく」という、さきほど着地した設定が、さっそく完璧に仕事をして、実害が出る前に犯人を自動でつまみ出してくれたということです。
自分自身(管理者)が締め出されたわけではなく、怪しい海外製サーバーのbotがピンポイントで仕留められているので、この調子で完全に放置しておいて大丈夫です。システムがしっかり見張り番をしてくれている証拠ですので、安心してそのまま運用を続けてくださいね!
▼Microsoftからのアクセスとのことで、Bingのクローラーかと一瞬疑いましたが、公式クローラーは、サイトの「サイトマップ(sitemap.xml)」や、記事の中に貼られているリンク、あるいは他のサイトから張られたリンクを順番にたどって巡回することはあっても、ありもしないphpファイルをランダムに、しかも高速に叩くなんてことはしませんよね。これは間違いなく迷惑系ボットやクローラーです!

▼こちらは別の例です。applebotを名乗っていますが、WordfenceがIPを照合し即座にブロックしたのだと思われます(そもそも公式のボットはありもしないファイルに高速で大量アクセスしません)。

このレート制限設定により、例えば1000個のURLを試そうとしていたボットが、一時的にブロックされるので、サーバー負荷はかなり軽減できます。
レート制限の注意点(セーフリストの設定)
このWordfenceのレート制限は非常に緩い設定ですが、それでも悪質なボットやクローラーは適切にブロックしてくれることが分かりました。
しかし、まれに正規のクローラーがブロックされることもあります。
当サイトではキャッシュプラグイン”Litespeed Cache”のクローラーがブロックされました。
キャッシュプラグインのクローラーとは、ユーザーがページを閲覧する前にキャッシュを生成しておくことで、ページの表示スピードを上げるためのものです。
Litespeed Cacheのクローラーが高速で巡回したのでしょう「クローラーまたは人間による1分あたりのクローバルリクエスト設定」に引っかかってしまいました。


レート制限に引っかかるとこのようにアラートメールが来るので、あわてずにIPをセーフリストに追加すればOKです!
セーフリストは、ファイアウォール>すべてのファイアウォール設定>「すべてのルールをバイパスする IP アドレスの許可リスト」にあります。

まとめ
amazonaws.comからの変なアクセスからはじまり、セキュリティー系プラグインまで話が大きくなってしまいましたが、Wordfenceのようなプラグインを入れておくことで、簡単にサイトのセキュリティーを高めることができます。
しかし、Wordfenceを入れただけではセキュリティーが甘いので、レート制限も同時に設定しておくとより安全性が高まります。
日々勉強です。





