507 Insufficient Storageの恐怖
ある日、WordPressで構築したWebサイトのページ表示スピードが極端に遅いことに気がつきました。
同じレンタルサーバーを利用している、他の方のWebサイトは問題なく動作しているため、レンタルサーバーの不具合やメンテナンスによるものではありません。
レンタルサーバーはConoHa WINGを利用しています。
私のブログ固有の症状ですので、なんらかの不具合が起きているようです。
対策を講じましたので、内容をメモしておきます。同じ症状に悩まされている方の参考になれば幸いです。
ConoHa WINGサポートへ問い合わせ
PageSpeed Insiteで計測したところ、「最初のサーバー応答時間を速くしてください」の項目が17秒というあり得ないほど遅い数値になっていました。
そこで、サーバーに何か不具合があるのでは?と疑い、ConoHa WINGのメールサポートへ問い合わせしました。
しかし、来た返事は「お客様の環境に起因するもので、サポート対象外です。」という冷たい一文のみでした。
なんとか自己解決しなければなりません。
WordPress プラグインを最新版にアップデート
先に結論からお話すると、WordPressにインストールしているプラグインを全て最新版にアップデートしたところ、エラーは解消されました。
アップデート可能なプラグインを全て一括で最新版にしたため、最終的には、どのプラグインが遅延していたのかは不明です。
覚えている範囲で、アップデートしたプラグインをご紹介します。
- a3 Lazy Load
- EWWW Image Optimizer
- Google Tag Manager for WordPress
- Favicon by RealFaviconGenerator
- Automatically Paginate Posts
- Contact Form 7
- Custom Post Type UI
- EWWW Image Optimizer
- Rinker
- SAKURA RS WP SSL
基本的に、プラグインの自動更新をしていませんでした。ですので、相当に古いバージョンをずっと使い続けていたものもあるはずです。
そのため、何か深刻な不具合を引き起こしてしまっていた可能性があります。
今後は、プラグインの自動更新をONにする癖をつけるようにします。
さらに、未使用のプラグインなどが悪さをしている可能性もあります。
使っていない上に、JavaScriptエラーを吐いていたプラグインを無効化しました。
DDoS攻撃など、サイバー攻撃を受けている?
その他の可能性としては、DDoS攻撃などのサイバー攻撃を受けていて、負荷が掛かってレスポンスが悪くなっている可能性を探りました。
ConoHa WINGのサーバーコントロールパネルから、サーバーログとエラーログをダウンロードして、サーバーのログを解析しました。しかし、怪しいアクセスは特に見つからず。
この時点で、DDoS攻撃などのサイバー攻撃を受けている可能性は少ないと分かりました。
とはいえ、セキュリティの設定もガバガバだったので、これを機に、ついでに各種対策を取り入れることにしました。
WordPressセキュリティ設定
サーバーエラーの発生に伴い、WordPress関連のセキュリティ対策も見直します。
基本的にはプラグインなどで実施できる簡単なものばかりです。
.htaccessファイルの設定
.htaccessファイルに、日本国内のみのアクセスを許可し、海外アクセスを遮断する記述を追記しました。
http://www.cgis.biz/tools/access/
こちらのサイトが大変参考になります。
日本に割り当てられているIPアドレスをAPNICより取得して、日本国外(海外/外国)からのアクセスを制限する(禁止する).htaccessファイルを作成してくれるサイトです。
こちらからダウンロードした.htaccessファイルの記述を、自分のWordPress環境の.htaccessファイルに追記します。
不要なテーマを削除
攻撃の標的となり得る、不要なPHPファイルを削除することも大切です。
特に、デフォルトでインストールされているテーマ類は攻撃の対象になりやすいので削除しましょう。
WordPressインストール時に同梱されているTwenty Twentyなどはインストール率が高く標的になりやすいです。
使っていないテーマはすべて削除しました。
ピンバック機能をオフにする
WordPressの設定から、ピンバック機能をオフにしました。
ピンバック機能とは、参考サイトのリンクを貼ることで相手のサイトに通知をする機能のことです。
つまり、記事を参考にしたサイトへ被リンクを送るときに、相手にそれを知らせることができます。
逆もまたしかり、で自分の投稿に対してリンクが張られたことを知らせてくれます。そこから交流が生まれることもあります。
さらにユーザー(読者)には参考元のサイトも読んでもらえる仕組みです。
サイト運営者同士のコミュニケーションとして利用していたので、少し悩みましたが…ここ最近は被リンクを送り合うことが少なくなっていたため、思い切ってオフにしました。
ピンバック機能をONにしておくと、DDoS攻撃の温床となる可能性があるためです。
また、xmlrpc.phpへという、ピンバック機能に関連するファイルが、サイバー攻撃の標的にされやすいようです。こちらのファイルは、アクセス権限を変更しました。
具体的には、「400」(所有者のみ読み取り可能)に設定します。
All In One WP Securityの有効化
有名なセキュリティ対策のプラグインである、All In One WP Securityを有効化しました。
以下の設定を実施します。
コメントフォームにCAPTCHAを追加
ブログ記事下のコメント欄にCAPTCHAを追加しました。
コメント主がスパムプログラムなのか、生身の人間なのかを判定してくれる機能です。
ひらがな等の画像が表示されており、それを入力しないとコメントが書き込めないように制限してくれる機能です。
スパムコメントの大半はボット(botと呼ばれる自動化されたプログラム)によって投稿されますが、ボットの多くは画像に表示されたひらがなを入力する事はできません。
これでコメント欄へのSQLインジェクションなどのスパム行為を遮断します。
スパムボットからのコメント投稿をブロックをON
さらに「スパムボットからのコメント投稿をブロック」をONにすることで、スパムによるコメントの投稿を制限することができます。
SiteGuard WP Pluginの有効化
SiteGuard WP Pluginという、有名なセキュリティ系プラグインをインストール、有効化しました。
設定内容は以下。
ログインページ変更
ログインページのURLを変更しました。
デフォルト(ドメイン/wp-admin)のままですと、ブルートフォース攻撃(パスワード総当たりでログインを試みるサイバー攻撃)を受ける可能性があるためです。
適当な文字列を自分で入力して、ログインページを隠しましょう。
画像認証
ログイン時に画像認証を追加しました。
コメント欄と同様に、CAPTCHAを追加する設定です。
表示されたひらがなを入力しないと、ログインできない仕組みです。
ユーザー名漏えい防御
WordPressは、何も対策をしないと“?author=数字”とアクセスするとユーザー名が表示されてしまいます。
ユーザー名が分かると後はパスワードだけなので、攻撃者はパスワードの推測に専念できます。
ユーザー名は伏せておいた方が安全です。
SiteGuard WP Pluginでは、簡単な設定だけで“?author=数字”のアクセスを遮断してくれます。
不正アクセスによるユーザー名の漏えいを防止します。
507 Insufficient Storageを解消
以上、507 Insufficient Storageのエラー対策についてでした。
503エラーなどと比べて、あまり見ることがないエラーですので、情報が少なくて困りました。
なんらかの参考になれば幸いです。