お名前.comレンタルサーバーで運営しているWordPressでDoS攻撃に遭遇!その時に攻撃元を特定した方法と再発防止対策を現役エンジニアが教えます!

最終更新日 2024年10月20日

DoS攻撃に遭遇した時の対策と攻撃先特定方法
DoS攻撃に遭遇した時の対策と攻撃先特定方法

WordPressでDoS攻撃されて突然アクセス数が急激に増加しました

GoogleAnalyticsの異常なアクセス数増加
GoogleAnalyticsの異常なアクセス数増加

ブログサイトを運営しているとサイバー攻撃を受けることがあります。
実際に先日私もサイバー攻撃を受けたと思われる兆候がありました。自分のサイトがそのような被害に遭うなんて思ってもみませんでした。

当サイトのアクセス数異常値の検知
当サイトのアクセス数異常値の検知


しかし調べてみると同様の被害に遭っている方は意外と多いようです。

実際に、「自分が運営しているサイトで異常なアクセス数増加があった」「サイトへ不正アクセスの被害を受けた」という声が多く見受けられました。

例えば、X(旧Twitter)では次のような投稿も見つかります。

こういった投稿からも、自分が運営しているサイトへの不正アクセス(異常なアクセス数増加)されている方は意外と多いことが伺えます。

DoS攻撃だと判断するためのつのチ3個のチェック項目

DoS攻撃のイメージ
DoS攻撃のイメージ

DoS攻撃かどうか判断するための特に重要なチェック項目は以下の3つです。

  1. アクセスログから同一IPからの大量のリクエスト
  2. wp-login.phpやxmlrpc.phpなど特定のエンドポイントへの異常なアクセス
  3. 404エラーの急増

この他にも、WAFを利用している場合は、WAFのアラートを確認するのも有効です。

アクセスログで同一IPからの大量のリクエスト

DoS攻撃における同じIPアドレスからの大量のリクエスト
DoS攻撃における同じIPアドレスからの大量のリクエスト

通常、同じIPアドレス(インターネット上の機器の住所のようなもの)から、短時間に何千ものリクエストが来ることはあまりありません。

たとえば、一般的なユーザーがWebページを閲覧するとき、数回から数十回のリクエスト(ユーザーがページを開くときに、ブラウザからWebサーバーにデータを要求すること。)しか行わないため、それ以上の大量のリクエストがあれば異常と考えられます。
大量のリクエストが同じIPアドレスから送られている場合、これはサーバーを狙った攻撃の兆候かもしれません。

DoS攻撃かどうかを判断するには、アクセスログ(サーバーへのアクセス履歴)を確認します。
そこには、誰(どのIPアドレス)が、いつ、どのようなリクエストを送ったかが記録されています。

例えば、ログを見てみると同じIPアドレスから何千回も短期間にアクセスがある場合、これはDoS攻撃の可能性があります。このような異常なアクセスパターンを特定することで、「これは通常のユーザーの動きではない」と判断できます。

短時間に同じIPアドレスから何百回、何千回ものリクエストを送信されている場合、DoS攻撃の可能性が高いと思われます。

同一IPからの大量のリクエストがあったかどうかの確認方法

DoS攻撃を受けたかどうかの確認方法
DoS攻撃を受けたかどうかの確認方法

①お名前.comレンタルサーバーへSSH接続する。
お名前.comレンタルサーバーへSSH接続するには秘密鍵と呼ばれるデータの暗号化をするためのカギを用意する必要があります。

お名前ドットコムサーバへSSH接続するする手順の詳細は以下です。

お名前ドットコムトップ画面からログインします。

お名前.comログイン画面
お名前.comログイン画面

ログインしたら編集したいサイトのドメインが登録されているレンタルサーバーへ「ログイン」しましょう。編集したいサイトのドメインの横の「ログイン」ボタンを押してください!

お名前.comレンタルサーバーログイン画面
お名前.comレンタルサーバーログイン画面

レンタルサーバーコントロールパネル画面が表示されるので、画面左の「サーバー」にカーソルを合わせ、「SSH」をクリックします。

レンタルサーバーコントロールパネル画面
レンタルサーバーコントロールパネル画面

次に「SSH Keyを追加」をクリックします。

SSH Key作成画面
SSH Key作成画面

「自動作成」を選択し、「情報入力する」をクリックします。

SSH Key作成画面2
SSH Key作成画面2

Key名にご自身の好きな名前を入力し、「確認する」をクリックします。

SSH Key名入力画面
SSH Key名入力画面

「完了する」をクリックします。

SSH Key追加確認画面
SSH Key追加確認画面

すると秘密鍵が発行されますので必ず「ダウンロードする」をクリックしてダウンロードしてください。

秘密鍵ダウンロード画面
秘密鍵ダウンロード画面

ダウンロードすると↓画像のような感じで表示されると思います。この秘密鍵は後程使用するので大切にとっておいてください。

秘密鍵ダウンロード完了画面
秘密鍵ダウンロード完了画面

ダウンロードが完了したら以下のフォルダマークをクリックします。

秘密鍵を保存先フォルダを表示
秘密鍵を保存先フォルダを表示

すると、上記の秘密鍵が保存されたフォルダが開きますので、秘密鍵のファイルを一度右クリックで選択し、左クリックをすると「パスのコピー」が表示されると思いますのでクリックします。

そのまま、メモ帳を開いて、右クリックをして「貼り付け」をクリックします。

メモ帳への貼り付け画面
メモ帳への貼り付け画面

すると以下のように秘密鍵のパスが貼り付けされるのでこちらも情報も覚えておきましょう。

秘密鍵ファイルパス情報
秘密鍵ファイルパス情報

次にSSH接続に必要な情報を確認します。↓の「詳細」をクリックしてください。

SSH接続情報確認
SSH接続情報確認

すると、ホスト名やポート番号、ユーザ名など、SSH接続時に必要な情報が表示されます。
※重要情報のため、↓の画像ではマスクしています。
この画面で表示された、「ホスト名」「ポート番号」「ユーザ名」をメモしてください。
SSH接続の際こちらの情報も使用します。

SSH接続時の情報確認画面
SSH接続時の情報確認画面

次に、ダウンロードした秘密鍵を使用してレンタルサーバーへSSH接続します。
今回は一番簡単にできるためPowerShellを使用してSSH接続します。
まず、Windowsキーを押下してPowerShellと入力します。以下の赤枠内に「PowerShell」と入力して下さい。

アプリ、設定、ドキュメントの検索画面
アプリ、設定、ドキュメントの検索画面

すると以下のようにWindows PowerShell というアプリが表示されると思いますのでこちらをクリックします。

PowerShell起動
PowerShell起動

PowerShellが起動出来たら、先ほどメモした情報を使用して実際にコマンドを使用してSSH接続します。
以下のコマンドに先ほどメモした情報をいれて、PowerShell画面に入力してエンターを押してください。

お名前.comレンタルサーバーへのSSH接続
お名前.comレンタルサーバーへのSSH接続

分かりにくいですが、以下の画像のように[ ~]$と表示されたらSSH接続が成功しています。

SSH接続成功画面
SSH接続成功画面

テラタームを使用してお名前.comレンタルサーバーへSSH接続する方法は以下の記事に記載されて見てみてください!

お名前.com共用サーバーRSにTeratermでSSH接続する方法 | サイト引越し屋さん
お名前.com共用サーバーRSにターミナルソフトのTeratermでSSH接続する方法を解説します。詳しくはクリックして詳細をご覧ください。

②不正アクセスがあった日のアクセスログファイルを確認する。

私の場合は10/10に異常なアクセス数増加がみられたため10/10のアクセスログファイルを確認します。

GoogleAnalyticsでの異常なアクセス数増加の確認
GoogleAnalyticsでの異常なアクセス数増加

お名前.comレンタルサーバーへSSH接続したら、以下の順にコマンドを打っていきます。

zcat~~のコマンドの出力結果でその日にアクセスが多かったIPアドレスとそのアクセス数が出力されます。

以下が私の実行結果です。
10/10に「62.197.149.186」からリクエストが742回もありました。このIPアドレスが攻撃者のIPアドレスです。
※ここで確認したIPアドレスは後の確認で使用しますのでメモしておいてください!

アクセス数別IPアドレスの表示
アクセス数別IPアドレスの表示

wp-login.phpやxmlrpc.phpなど特定のエンドポイントへの異常なアクセス

wp-login.phpへの不正アクセス
wp-login.phpへの不正アクセス

まず、エンドポイントというのは、サーバーが特定の機能やサービスを提供するための入り口みたいなものです。

例えば、「wp-login.php」はWordPressのログインページで、管理者がログインするための入り口です。「xmlrpc.php」は、外部からWordPressに操作をするためのインターフェース(外から命令を送って記事を投稿するなど)です。

通常のユーザーは、wp-login.phpに何度もアクセスする必要はありません。普通は一度ログインしたらその後は他のページに行くからです。しかし、もしアクセスログに「wp-login.php」への何百回もリクエストが来ていたら、それは攻撃者がパスワードを突破しようとしている可能性が高いです。

xmlrpc.phpに関しても、普通のユーザーが直接このページにアクセスすることはほとんどありません。ここに大量のアクセスがある場合、攻撃者が悪意を持ってこのページを使っている可能性があります。

詳細は以下の記事に記載されていますので気になる方は見てみてください!

WordPress(ワードプレス)で「wp-admin.php」「wp-login.php」への攻撃を防ぐアクセス制御方法 | CMS技術 | Webデザイナーブログから学ぶホームページ制作「キングサイト」 (kingsite.jp)

①「②不正アクセスがあった日のアクセスログファイルを確認する。」の画面から以下2つのコマンドを打ちます。

赤文字のコマンドは「wp-login.php」への不正アクセス、青文字は「xmlrpc.php」への不正アクセスの結果が表示されます。

赤文字、青文字のコマンドで複数のIPアドレスの表示がされた場合は要注意です。
普通のユーザーが直接このページにアクセスすることはほとんどないからです。

私が実行した結果、以下の出力がされました。

「wp-login.php」への不正アクセスログ
「wp-login.php」への不正アクセスログ

404エラーの急増

404エラー発生イメージ
404エラー発生イメージ

404エラーは存在しないページをリクエストした際に返されるエラーです。
404エラーが急増している場合、それは攻撃者が大量のリクエストを送ってサーバーに負担をかけている可能性がります。
通常のユーザーは短期間で何度も404エラーを引き起こすことはありませんが、攻撃者は存在しないページに大量にアクセスしてサーバーを困らせたり脆弱性を探ったりするためにこうした行動を取ります。
そのため、404エラーの急増は、DoS攻撃の兆候の一つとして重要な確認ポイントです。

404エラーの詳細は以下の記事で解説されていますので気になる方は見てみてください!

初心者必見!404エラーページをカスタマイズしてユーザー体験を向上させる方法 – ITとPCに関連する用語の解説 (stylemap.co.jp)

404エラーが発生しているかどうかは、GoogleAnalyticで確認できます。
以下の画像のように「ページが見つかりません」という表示が多数ある場合は要注意です。

GoogleAnalyticによる404エラーの表示
GoogleAnalyticによる404エラーの表示

DoS攻撃されたときに実施した対策手順

DoS攻撃対策の3ステップ
DoS攻撃対策の3ステップ

私が実際に被害に遭った際、以下の手順で対策を実施しました。

  1. 攻撃元IPアドレスの特定
  2. 攻撃元IPアドレスのブロック
  3. レートリミットの設定

この手順を実施すれば今後DoS攻撃の被害を被ることはなくなると思います。

DoS攻撃については以下の記事で解説していますので良かった見てみてください!

攻撃元IPアドレスの特定

DoS攻撃のイメージ図
DoS攻撃のイメージ図
先輩エンジニア
先輩エンジニア

お疲れ様!最近、何か面白いことでもあった?

新人エンジニア
新人エンジニア

お疲れ様です。実は、自分のブログがDoS攻撃に遭ってしまったみたいで……アクセスが急増して、サイトが落ちちゃったんです。

先輩エンジニア
先輩エンジニア

あらら、それは大変だね。DoS攻撃って初めてか?

新人エンジニア
新人エンジニア

はい、初めてです。どうすればいいのか、ちょっと焦ってしまいました……

先輩エンジニア
先輩エンジニア

「うん、分かるよ。でも大丈夫、基本的な対策を覚えておけば、焦らず対応できるようになるよ。まず、DoS攻撃を受けたら何をすると思う?

新人エンジニア
新人エンジニア

「うーん……まず、何が起こっているのかを確認するべきですか?

先輩エンジニア
先輩エンジニア

「そうそう、その通り。まずはサーバーのアクセスログをチェックするんだ。攻撃に見える不審なアクセスがないか、特に同じIPからの大量のリクエストがないかを探すんだよ。

新人エンジニア
新人エンジニア

なるほど、アクセスログですね。例えば、tailとかでログを確認するんでしょうか?

先輩エンジニア
先輩エンジニア

「そうだね。tailでリアルタイムに見てもいいし、もっと詳しく調べるなら、grepawkを使って特定のIPアドレスを抽出してみるといいよ。
例えば、awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr みたいな感じで、アクセス頻度の多いIPを見つけるんだ。

新人エンジニア
新人エンジニア

お疲れ様です。実は、自分のブログがDoS攻撃に遭ってしまったみたいで……アクセスが急増して、サイトが落ちちゃったんです。

DoS攻撃の攻撃者の特定は以下の手順で実施します。

  1. サーバーのアクセスログの確認
  2. IPアドレスの身元確認

手順1: サーバーのアクセスログの確認

アクセス数別IPアドレスの表示
アクセス数別IPアドレスの表示

先ほど「②不正アクセスがあった日のアクセスログファイルを確認する。」で確認した攻撃元のIPアドレスを使用します。

1日に数百回アクセスがある場合、不正アクセスの可能性が高いです。

手順2:IPアドレスの身元確認

IPアドレスの身元確認をしよう!
IPアドレスの身元確認をしよう!

特定されたIPアドレスが本当に攻撃元かどうかを確認するため、さらに調査します。

whoisコマンドを使用して、IPアドレスの情報を取得します。
以下のコマンドでIPアドレスの所有者情報を確認できます。

whois [攻撃元のIPアドレス]
これにより、IPアドレスの所有者、プロバイダ、国などの情報が表示されます。

IPアドレスの地理情報を確認するツールを利用します。

Webサイト「ipinfo.io」や「WhatIsMyIPAddress.com」でIPアドレスを入力し、攻撃元の地理的な位置情報を確認します。

位置情報でヨーロッパやイラン、ポーランドなど身に覚えのないところからのアクセスの場合は不正アクセスの可能性が高いです。

私の場合はヨーロッパからの不正アクセスでした。

ipinfo.ioの検索結果
ipinfo.ioの検索結果
WhatIsMyIPAddress.comの検索結果
WhatIsMyIPAddress.comの検索結果

攻撃元IPアドレスのブロック

攻撃元IPアドレスのブロックのイメージ
攻撃元IPアドレスのブロックのイメージ
新人エンジニア
新人エンジニア

それで攻撃しているっぽいIPを見つけたら、どうするんですか?

先輩エンジニア
先輩エンジニア

そしたら、そのIPアドレスをブロックする方法を考えるんだ。簡単な方法なら、.htaccessでブロックするか、iptablesを使ってサーバーレベルでブロックすることもできるよ。

新人エンジニア
新人エンジニア

.htaccessでブロックする方法、教えてもらえますか?

先輩エンジニア
先輩エンジニア

もちろん。例えばこんな感じだね。
<Limit GET POST>
  order allow,deny
  allow from all
  deny from 攻撃元のIPアドレス
</Limit>

新人エンジニア
新人エンジニア

なるほど……これなら特定のIPアドレスからのアクセスを拒否できますね。

先輩エンジニア
先輩エンジニア

「そうそう。それと、できればWAF(Web Application Firewall)を導入することもおすすめするよ。Cloudflareみたいなサービスを使えば、DoS攻撃からの防御をより簡単に強化できるからね。

新人エンジニア
新人エンジニア

なるほど、Cloudflareですか……ちょっと試してみます!

先輩エンジニア
先輩エンジニア

いいね!あと、Fail2Banも使って、不審なアクセスを自動でブロックするのも有効だよ。何度もログイン失敗してるIPなんかを自動で止めてくれるんだ。

新人エンジニア
新人エンジニア

「なるほど、いろんな方法があるんですね。少しずつ勉強して試してみます!

先輩エンジニア
先輩エンジニア

今回は「Wordfence Security」というプラグインを使用して攻撃者のIPアドレスをブロックしよう。

「.htaccess」へのアクセスはお名前ドットコムのレンタルサーバーは出来ません。
「.htaccess」へはサーバーの管理者の権限が必要ですが、お名前ドットコムのレンタルサーバーでは、サービス利用者は管理者の権限を与えられていないからです。

そのため、今回は「.htaccess」ではなく、「Wordfence Security」というプラグインを使用して攻撃者のIPアドレスをブロックします。

まず「Wordfence Security」をインストールしましょう。

WordPress設定画面にアクセスし、「プラグイン」をクリックします。
次に、「プラグインの検索」に「Wordfence Security」と入力しましょう。
するとWordfenceと書かれたアイコンのプラグインが表示されると思いますので、このプラグインを「今すぐインストール」をクリックしてインストールします。

Wordfence Security
Wordfence Securityインストール

インストールが完了したら「有効化」をクリックします。

Wordfence Security有効化画面
Wordfence Security有効化画面

有効化されると、以下の「Wordfence Securityライセンスを入手」の画面が表示されるのでライセンスを登録しましょう。ライセンスは無料で登録できます。

「Wordfence Securityライセンスを入手」の画面
「Wordfence Securityライセンスを入手」の画面

「Wordfence Securityライセンスを入手」をクリックすると以下の画面に遷移します。
「Get a Free License」をクリックします。

Wordfence Securityライセンス登録画面
Wordfence Securityライセンス登録画面

無料のライセンスを利用する場合は以下の赤枠のリンクをクリックしましょう。

Wordfence Securityライセンス登録画面2
Wordfence Securityライセンス登録画面2

メーリングアドレスを登録し、「YES」をクリックし、チェックボックスにチェックを入れ、「Register」をクリックします。

Wordfence Securityライセンス登録画面3
Wordfence Securityライセンス登録画面3

入力したメールアドレスに確認メールが送信されます。

Wordfence Securityライセンス登録画面4
Wordfence Securityライセンス登録画面4

「Install Your Wordfence License」というタイトルのメールが届きます。
メール本文の「Install My License Automatically」をクリックしましょう。

Wordfence Securityライセンス登録画面5
Wordfence Securityライセンス登録画面5

すると、登録したメールアドレスとライセンスキーが入力された状態でWordPressの以下の画面に遷移します。「ライセンスインストール」をクリックしましょう。

Wordfence Securityライセンス登録画面6
Wordfence Securityライセンス登録画面6

ライセンスのインストールが完了すると以下の画面が表示されます。「ダッシュボードへ」をクリックしましょう。

Wordfence Securityライセンス登録完了
Wordfence Securityライセンス登録完了

Wordfence ダッシュボード画面から「ファイアウォールを管理」をクリックします。

Wordfence ダッシュボード
Wordfence ダッシュボード

これでWordfenceのインストールが完了したので、実際に攻撃元IPアドレスをブロックする設定をしていきましょう。
WordPress管理画面より、「Wordfence」の下にある「ファイアウォール」をクリックします。

Wordfence攻撃元IPアドレスをブロック設定1
Wordfence攻撃元IPアドレスをブロック設定1

「ブロック」をクリックします。

Wordfence攻撃元IPアドレスをブロック設定2
Wordfence攻撃元IPアドレスをブロック設定2

ブロックタイプで「IPアドレス」を選択し、ブロックするIPアドレスの項目で「サーバーのアクセスログの確認」で確認した不正アクセスをしたと思われるIPアドレスを入力します。
ブロック理由は「不正アクセスのため」などとしておきましょう。
入力が完了したら「このIPアドレスをブロック」をクリックします。

Wordfence攻撃元IPアドレスをブロック設定3
Wordfence攻撃元IPアドレスをブロック設定3

設定が完了すると以下のように、入力したIPアドレスをブロックする設定が反映されています。
これでもう攻撃者はサイトにアクセスできません。

Wordfence攻撃元IPアドレスをブロック設定4
Wordfence攻撃元IPアドレスをブロック設定4

レートリミットの設定

レートリミットイメージ
レートリミットイメージ

WordPressでレートリミット(一定時間内のリクエスト数の制限)を設定することにより、不審なアクセスを減らし、DoS攻撃やブルートフォース攻撃(パスワードを次々に試す攻撃)からサイトを守ることができます。

WordPressでは、プラグインを使うことで簡単にレートリミットを設定することができます。今回私はは、「Wordfence Security」というプラグインを使用し以下の設定を行いました。

「同一IPからのアクセスを制限」:
例えば、「60秒間にアクセスが50回以上あった場合は制限」など、IPごとにアクセス回数を制限する設定をします。
「人間とボットのアクセスを区別」:
ボットからの過剰なリクエストを制限しつつ、正当なユーザーには通常通りアクセスを許可します。

まず、WordPress管理画面から、Wordfenceの下にある、「ファイアウォール」をクリックします。

Wordfenceレートリミット設定1
Wordfenceレートリミット設定1

次に「レート制限」をクリックします。

Wordfenceレートリミット設定2
Wordfenceレートリミット設定2

するとレート制限の設定画面に画面が自動でスクロールされます。
この画面で以下のように設定しましょう。

誰かのリクエスト数が超過 :分当たり240
人間のページが見つからない (404s) が超過 :分当たり240

この設定で、1分間に240回以上アクセスするユーザーを制限、1分間に20回以上404エラーを発生させるIPを制限します。

Wordfenceレートリミット設定3
Wordfenceレートリミット設定3

最後に画面右上の「変更を保存」をクリックして設定を保存します。

Wordfenceレートリミット設定4
Wordfenceレートリミット設定4

Wordfenceに関する他設定は以下のサイトで詳しく解説されているので見てみてください!

【SS】厳選した後世に残るWordfence Securityプラグイン設定
難しいWordfence(ワードフェンス)の設定を、すべて確認したうえで当サイトのセキュリティ知識と照らし合わせ、理解した意味を載せて説明していく。 設定のみの紹介であり、IPブロックやライブトラフィックの見方・使い方、攻撃中の動作などの対

対策の重要性

DoS攻撃の対策の重要性
DoS攻撃の対策の重要性

DoS攻撃自体は主にシステムを使えなくすることを目的としていますが、その背後には、個人情報が盗まれるリスクも潜んでいます。

DoS攻撃はPCやネットワークの過負荷を利用して脆弱性を生じさせたり、攻撃の混乱状態を狙ってマルウェアやフィッシングを仕掛けたりする前段階の攻撃として使用されます。

そのため、こうした状況が生まれることで、通常なら防げる攻撃が通過してしまい、結果として個人情報が盗まれるリスクが高まります。

DoS攻撃に対してしっかりと対策を取ることが、自分の個人情報を守るために非常に重要です。


この記事も参考になるかも!
この記事を書いた人!

ゴリタン

インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。

CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。