以前は、ネガティブSEO攻撃(逆SEO攻撃とも)を一掃する方法をご紹介しましたが、今回は小規模なWordPressのECサイトに対するDDoS攻撃を阻止する方法とトラブルシューティングをご紹介します。DDoS攻撃はいつ起こるかわかりません。攻撃に対処する準備ができていない小規模なサイトでは、特に心配です。

「もしサイトが明日攻撃されたら」と想像し、攻撃に対処する備えができていない場合は、この記事をブックマークして、今すぐにでもDDoS対策を講じましょう。

DDoS攻撃とは

DDoS(分散型サービス拒否)攻撃は、トラフィックを大量に送信し、ウェブサーバーを圧倒して、サイトを停止またはダウンさせる攻撃です。この種の攻撃でイライラさせられる点は、通常攻撃者が得られるものは特になく、ハッキングもされないことが多いということです(WordPressサイトのハッキング対策はこちら)。

DDoS攻撃の大きな問題は、それに伴う圧倒的な負荷にあります。帯域幅が信じられないほど急増し、数万円から数十万円に支払いが膨れ上がる可能性があります。安価なレンタルサーバーや共用サーバーを使用している場合は、アカウントの停止につながることもあります。

遡ること2016年10月21日、史上最大のDDoS攻撃(DNS関連)が発生し、PayPal、Spotify、Twitter、Reddit、eBayなどの大企業のサイトがダウンしました。インターネット上ではこの事件を「DNS Doomsday(DNS終末の日)」と呼ぶ人も。ウェブが成長し続けるにつれ、DDoS攻撃も増加しています。easyDNSのデータによれば、長期にわたるDDoS攻撃の発生は急増しており、サイトが攻撃を受けるのは時間の問題かもしれません。

DDoS攻撃の発生率推移
DDoS攻撃の発生率推移

Kinstaでは、Google Cloud Platformのエンタープライズレベルのファイアウォールなどをはじめとするセキュリティ対策を多数講じており、一般的なレンタルサーバーよりも多くの攻撃を阻止しています。DDoS攻撃対策に特化して構築された大規模なインフラやソフトウェアを追加で利用することもおすすめです。

CloudflareSucuriは、WordPressはもちろん、あらゆるタイプのプラットフォームにおすすめです。適切なDDoS対策に投資することで、時間、費用、そして頭痛の種を削減することができます。Kinstaでサイトをホスティングする場合、CloudflareやSucuriをセットアップは不要です。すべてのサイトが、DDoS攻撃対策を備えた安全なファイアウォールを含むCloudflare統合によってデフォルトで保護されます。

小規模なEDDサイトへのDDoS攻撃対策

今回ご紹介する事例は、Easy Digital Downloadsを使用したWordPressの小規模なECサイトです。このサイトは通常、1日に30~40 MBの帯域幅しか生成せず、訪問数は1日に数百件程度でした。6月に入ったある日、Google アナリティクスでトラフィックの増加が表示されていないにもかかわらず、突然大量の帯域幅が消費され始めました。サイトのデータ転送量は瞬時に1日15~19GBに。これは4650%の増加に相当します。幸い、サイト所有者はKinstaの分析機能を利用してすぐにこの異変を発見することができました。

WordPressサイトで急激に帯域幅が消費される現象
WordPressサイトで急激に帯域幅が消費される現象

この異変を検出した後、何が起きているのかを調査するためにサーバーログをチェックすることに。このような事態は、簡単に制御不能に陥る可能性があります。過去7日間のログを確認すると、サイトのアカウント(/account/)ページが51万1,000回もリクエストされ、66GBのトラフィックが発生していました。このサイトの規模は、1ヶ月で1GB強の総データを生成する程度であったため、即座に何が起こっているかがわかりました。

このサイトに対する過去7日間のクライアントIPSの上位10件を分析すると、すぐに不審な動きを特定。そのうちの大半は1万回以上のリクエストを行っていました。小規模なサイトのリクエスト数は、月に数千程度が一般的です。

リクエスト数上位のクライアントIP一覧
リクエスト数上位のクライアントIP一覧

続いては、Googleのデータを利用してみます。上位IPのいくつかを検索してみると、そのほとんどがプロキシアドレスであり、何者かがトラフィックを隠そうとしている可能性が高いことがわかりました。

プロキシのIPアドレス
プロキシのIPアドレス

URLの変更

まずKinstaで行ったことは、アカウントページのURLを別のものに変更することでした。これは最初に行う対処法として効果的ですが、この変更で攻撃を阻止できたのは短期間で、すぐに変更後のURLを特定されてしまいました(ECサイトには公開アカウントページが必須のため)。

ブログサイトであれば、WordPressのログインページのURLを変更して隠してしまえば、この手の攻撃の多くを回避できますが、この場合はそうはいきません。これは「WordPress Security by obscurity(秘匿化によるWordPressセキュリティ)」とも呼ばれます。

ハッキングとブルートフォース攻撃の確認

DDoS攻撃を受けた際に確認したいのは、ハッキングの試みがないかどうか。WP Security Audit Logは、ページ上に不正なログイン思考があるかどうかを素早く監視・確認できるプラグインです。

また、POST送信が大量に発生していないか、ログをチェックすることも可能です。これは典型的なDDoS攻撃で、単にサイトの一部分に大量のトラフィックを送り込み、圧倒するのが目的です。

IP制限

自社でサーバーを管理している場合、続いてはWordFenceのようなIP制限やファイアウォールプラグインをインストールします。ただし、Kinstaをご利用の場合、これらの対策はお勧めしません。

まず第一に、セキュリティとファイアウォールプラグインはパフォーマンス、特にスキャン機能に大きな影響を与える可能性があります。また、Google Cloud Platformでロードバランサーを利用しているため、IP制限の機能が意図したとおりに動作しないことが多々あります。

Kinstaでは、独自のIP制限ツールを提供しています。MyKinstaから手動で簡単にIPアドレスをブロック可能です。また、ジオブロッキングにも対応しているため、ご希望の場合は、MyKinstaのチャットよりサポートスタッフまでお知らせください。

IP制限ツール
IP制限ツール

ただし、攻撃の長さと規模によっては、IP制限が終わりのないプロセスになる可能性も。多くのDDoS攻撃は、ある地域でブロックされると、別の地域に現れるか、IPやプロキシアドレスを変更して繰り返されることがあります。

このような場合は、DDoS対策ソリューションを利用するのが理にかなっています。何年分ものデータからコンパイルされたルールがすでに組み込まれているため、プロセスを自動化することができます。

Cloudflareへのサイト移行も効果なし

多くの場合、Cloudflareは基本的なボットトラフィックを阻止してくれるものの、無料プランのDDoS対策機能はトップクラスとは言えません。実際、先ほどのサイトをCloudflareに移行したところ、さらに不審なトラフィックがサイトを襲う結果となりました。

これは単に攻撃の勢いが増したためで、以下のように、1時間あたりリクエストが5万件近くまで増えていました。Cloudflareは、CDNの性能は突出していますが、CDN以上のものが必要になる場合は、ほとんど有料になります。

Cloudflareのリクエスト
Cloudflareのリクエスト

これを受け、サイトに「レート制限」を導入することに。レート制限は、URLと一致するルールベースのトラフィックを作成し、アクティビティに基づいてブロック/制限することができます。これは無料プランでも利用でき、1万リクエストあたり0.05ドルで導入可能です。しかし今回の場合は、1ヶ月あたり約3,600万リクエスト、つまり1ヶ月で180ドルかかることになり、現実的なソリューションとは言えませんでした(様々なパターンのルールも試したが効果なし)。

IPレート制限
IPレート制限

レート制限は、定義したルールに一致する(ブロックされていない)リクエストの数に基づいて課金されますが、この場合はうまくいきませんでした。

次に検討すべきは、ウェブアプリケーションファイアウォール(WAF)の導入です。実はCloudflareの無料プランにはWAFは付帯していません。しかし今日、DDoS攻撃を防御するにはWAFの導入は欠かせません。したがって、次の選択肢としては、CloudflareのProプラン(月額25ドル)にアップグレードすることです。ただし、すぐに導入を決めずに、他のソリューションとも比較してみることが大切です。

CloudflareとSucuriの比較

どのような種類のサイトにも簡単に実装できるウェブアプリケーションファイアウォールとして、市場で最も優れた選択肢は、CloudflareSucuriの2つが挙げられますが、各ソリューションを調べてみると、サイトをKinstaでホスティングしていない場合、Sucuriの方がお得かもしれません。

Cloudflare

CloudflareのProプランでは、レイヤー3および4のDDoS対策のみが提供されます(レイヤー3と4のDDoS攻撃についてはこちら)。TCP SYN、UDP、ICMP攻撃をエッジサーバーで自動的に阻止することができ、オリジンサーバーに到達することはありません。

レイヤー7の保護を受けるには、月額250ドルのBusinessプランにアップグレードする必要があります。特に小規模なECサイトでは、ホスティング料金に加えて月額250ドルはかなりの出費になります。

関連記事:WordPressでCloudflare APOを設定する方法

Kinstaのすべてのサイトには、高性能のHTTP/3対応CDN、DDoS攻撃対策を組み込んだエンタープライズレベルのファイアウォールを含む、Cloudflare統合を全てのお客様に追加料金なしで提供しています。SSL証明書の導入に高額な追加料金が発生する一般的なホスティング会社とは異なり、ワイルドカード対応のエンタープライズレベルのCloudflare SSL証明書も無料でご利用いただけます。

Cloudflare統合の利用には、Cloudflareアカウントを作成する必要はありません。つまり、別のサービスを契約して管理することなく、Kinstaのホスティングだけで、より良いスピードとセキュリティを実現することができます。

Cloudflare統合の一環として利用できるエッジキャッシュは、Kinstaサイト/ページのキャッシュをCloudflareのグローバルネットワーク、260+箇所のデータセンターに保存されます。

エッジキャッシュもまた、すべてのプランで無料で利用でき、プラグインは不要です。キャッシュされたWordPressのHTMLページを提供するのにかかる時間を平均50%以上削減します。

Sucuri

Sucuriの年額229ドル(月額およそ19ドル)のプランでは、レイヤー3、4および7のDDoS攻撃対策を利用できます。トラフィックの急激な変化を自動検出し、POSTフラッドやDNSベースの攻撃からサイトを保護します。これにより、Sucuriではより優れたDDoS対策が期待できます。今回の事例では、HTTPフラッド攻撃に対するレイヤー7が必要でした。

HTTPフラッド攻撃は、レイヤー7のアプリケーション攻撃の一種で、SSLセッション中の典型的なURLデータの取得(画像や情報など)のように、情報を取得するために使用される標準的な有効なGET/POSTリクエストを利用する。HTTP GET/POSTフラッドは、不正なパケット、スプーフィング、またはリフレクションを使用しないボリュームのある攻撃|Sucuri

Sucuriはロードバランシングも提供しています。Cloudflareの場合は、使用量に応じた価格設定、リージョン間のロードバランシングの有無など、ロードバランシング機能のさまざまな側面にかなりの料金が発生します。

いずれのサービスも特定のページにチャレンジを追加したり、IPをブラックリストに登録したりなど、似たような機能を持っていますが、DDoS対策に関しては、Sucuriの方がより多くの機能を提供しています。また、IPブラックリストのUIや、Cloudflareと比較した場合の特定の設定方法も優れています。

また、どちらのサービスを利用しても、DDoS攻撃を100%阻止できるということはありません。

Sucuriへのサイト移行方法

Sucuriへのサイトの移行は非常に簡単です。Cloudflareのように、完全なプロキシサービスとして機能するため、技術的にはインストールするものはありません。DNSをSucuriに紐付け、Sucuriがホストを紐付けます。両者の間にはウェブアプリケーションファイアウォールWAF)が設置されます。

Sucuriのコントロールパネルは、Cloudflareと比較すると地味ですが、WAFに関しては、WAFの性能が重要です。以下のように、通常現在のホスティングIPを検出して、ファイアウォールIPを提供してくれます。これをDNSのAレコードやAAAAレコードに紐付ける形になります。

Sucuriのコントロールパネル
Sucuriのコントロールパネル

Sucuriは数分で立ち上げることができるため、DDoS攻撃を受けて速やかな対処が必要な場合に助かります。DNSの伝播を待つだけでOKです。また、HTTP/2に対応したエニーキャストCDNも含まれており、単なるファイアウォール以上の機能を持っています。WordPressサイトも高速化され、必要に応じてKeyCDNのような独自のCDNサービスをSucuriと併用することも可能です。

CDNにはLet’s Encryptの無料SSL証明書が含まれており、自分でSSL証明書をアップロードすることも。ただし、Let’s Encryptは自動化されていないため、サポートへの連絡が必要になります(とはいえ独自SSL証明書の設定プロセスは高速)。

パフォーマンスの観点で実行できるもう1つのことは、サイトキャッシュオプションを有効にすることです。これは、Sucuriのキャッシュを使用する代わりに、オリジンサーバーのキャッシュが優先されます。大抵の場合、WordPressキャッシュはすでに設定されています。

Sucuriのサイトキャッシュ
Sucuriのサイトキャッシュ

高度なセキュリティ設定

セキュリティ画面では、すべてのXML-RPCトラフィックや攻撃的なボットをブロックしたり、HSTSのような追加のセキュリティヘッダーを有効にしたりなどの設定を行うことができます。注)XML-RPCトラフィックは、今回のサイトではすでにブロック済み。

Sucuriの高度なセキュリティオプション
Sucuriの高度なセキュリティオプション

リアルタイム表示

リアルタイムのDDoS対策ビューは、Sucuriの優れた機能です。簡単にアクセスでき、現在のリクエストのログ全体を表示することができます。ワンクリックでブラックリストまたはホワイトリストに登録でき、すでにブロックされている場合はその理由も確認できます。

DDoS攻撃対策のリアルタイムビュー
DDoS攻撃対策のリアルタイムビュー

その他の便利なレポート

ブロックされた攻撃チャートなど、他にも便利なレポートが多数あります。これにより、DDoS攻撃を含め、どのような種類の攻撃がブロックされているかの内訳を素早く確認できます。ブラウザの種類、デバイス、HTTPレスポンスコード別のトラフィックなどのチャートもあります。

ブロックされた攻撃の内訳
ブロックされた攻撃の内訳

時間あたりの平均トラフィックチャートは、トラフィックのピーク時間帯やブロックされているリクエストの割合を確認するのに便利です。

1時間あたりの平均トラフィック
1時間あたりの平均トラフィック

国別トラフィック表では、不審なトラフィックが特定の地域から来ているかどうかを確認することができます。アクセス制御では、ワンクリックで国全体を一時的にブロック可能です。

国別トラフィック
国別トラフィック

アクセス制御のその他の機能には、IPやパスのホワイトリストやブラックリスト、ユーザーエージェント、Cookie、HTTPリファラのブロック、CAPTCHA、二要素認証、シンプルなパスワードによる特定のページの保護などがあります。

Sucuri access control
Sucuriのアクセスコントロール

先ほどの小規模なECサイトをSucuriに移行した結果、DNSの伝播が完了した1時間後、すべての帯域幅とリクエストが瞬時に減少し(以下参照)、それ以降、問題は一切生じていません。Sucuriへの投資は、間違いなく時間の削減になりそうです。

Sucuriのウェブアプリケーションファイアウォール追加後
Sucuriのウェブアプリケーションファイアウォール追加後

以下は、Sucuriに移行してしばらく経った後のサイトの様子です。1日あたりのデータ転送量は本来の30〜40MBに戻りました。

帯域幅の使用量が元通りに
帯域幅の使用量が元通りに

また、DDoS攻撃を受けていなくても、ボットに帯域幅を盗まれないようにする簡単な対策をお探しの方で、すでに他のソリューションを試している場合は、Sucuriを試してみてください。月額200ドルを支払うことができる場合は、Cloudflareも良いソリューションになります。いずれにしても、複数のソリューションについて知っておくことは常にベストプラクティスです(特に予算が限られている場合)。

まとめ

今回は、DDoS攻撃を防御する方法について掘り下げました。もちろん、今回ご紹介した方法以外にも多数のアプローチがありますが、現在進行形でDDoS攻撃の被害に遭われている場合は、CloudflareかSucuriのどちらかに移行すれば、スムーズな復旧と運用を行えるはずです。

スパムボットによる帯域幅の消費を防ぐには、ウェブアプリケーションファイアウォール(WAF)が非常に効果的なソリューションになります。

Brian Jackson

Brianの最大の情熱の一つは10年以上使用してきたWordPressです。複数のプレミアムプラグインさえ開発しています。Brianの趣味はブログや映画やハイキングなどです。TwitterでBrianとつながりましょう。