みなさん、こんにちは!
ブリュの公式ブログ.netにお越しいただきまして、ありがとうございます。
このサイトでは、ITについて特化したサイトを運営しています。
今回はhetemlのコンテンツキャッシュ機能で見つかった、WordPressのセキュリティに関する重大な欠陥について紹介します。
私が利用しているのがhetemlなのですが、hetemlに限らずキャッシュ機能を提供しているレンタルサーバーでは起こりうる不具合なので、同様の不具合を抱えている方は、キャッシュ機能をオフにすることをお勧めします。
目次
hetemlのコンテンツキャッシュ機能とは?
hetemlのコンテンツキャッシュ機能について、公式サイトから引用すると次のような説明になります。
Web サイトの表示速度向上や安定した表示に役立つ機能です。
お客様の Web サイトの表示内容をコンテンツキャッシュサーバーに
一時的に記録(キャッシュ)し、同じ Web サイトにアクセスがあった場合、
コンテンツキャッシュサーバーから応答します。
この文章について補足します。
通常はサイトにアクセスがあるとウェブサーバーにアクセスし、ウェブサーバーにアップロードされたファイルなどを返答することでサイトが表示されています。
コンテンツキャッシュ機能をオンにすると、サイトアクセス時にキャッシュサーバーにアクセスし、高速に応答します。
キャッシュサーバーにキャッシュデーターがない場合には、ウェブサーバー本体へアクセスを行います。
公式サイトでは、下の図で説明されています。
つまり、キャッシュが有効な間の連続アクセスに対して、サーバーの負荷軽減とサイトの表示速度の向上が見込めます。
厳しい言い方ですが、サイトの訪問者数があまり多くない方の場合には、コンテンツキャッシュ機能は意味がありません。
逆に、キャッシュサーバーを経由するよりもダイレクトにウェブサーバーにアクセスしたほうが、経由数の問題で高速になる可能性もあります。
hetemlのコンテンツキャッシュ機能で見つかった大きな不具合
hetemlのコンテンツキャッシュ機能については、以前に紹介した、WordPressのログイン画面へのIPアドレス制限について、問題が生じました。
不具合の詳細:WordPressのIPアドレス制限でログインできなくなった
WordPressのログイン画面は、誰でもアクセスできる油袋にしていると、ログイン画面においてブルートフォースアタック(総当たり攻撃)を許してしまうことになります。
その結果、WordPressへの不正ログイン、乗っ取り、サイトの破壊、ウイルスの混入、マルウェアの設置など、サイバー攻撃の対象となる他、サイバー攻撃を媒介していしまうことになりかねない、重要なセキュリティの欠陥です。
したがって、WordPressのログイン画面へは、自分自身のIPアドレス以外ではアクセスできないように制限を書けることで、部外者のアクセスを遮断し、不正ログインを未然に防ぐことが有効です。
このセキュリティは、以下のような.htaccessを設置することで実現します。
1 2 3 4 5 |
<Files "wp-login.php"> order deny,allow deny from all allow from ご自身のIPアドレス </Files> |
しかし、hetemlのコンテンツキャッシュ機能をONにしていると、ここで自分のIPアドレスを設定しているにもかかわらず、自分自身までもがアクセスできなくなる不具合が発生しました。
SiteGuardプラグインのログイン履歴によって、WordPressが認識しているIPアドレスを調べてみると、10から始まるローカルIPアドレス、つまり、サーバー内部のローカルIPアドレスによってアクセスの可否を判定するようになっていました。
※60から始まるのは、私自身のグローバルIPアドレスです。
これでは、セキュリティは確かに最高レベルですが、自分自身までアクセスできないとなると、何の意味も持ちません。
自分だけがアクセスできることで、サイトの安全性と運営者にとっての利便性の双方を満たすことができます。
この不具合は、コンテンツキャッシュ機能をオフにすることで解決しました。
しかし、この不具合は、コンテンツキャッシュ機能を利用することによって、WordPressのセキュリティに関して重大な欠陥となるのではないかと思います。
hetemlのコンテンツキャッシュ機能の動作
これらの症状をもとに、hetemlのコンテンツキャッシュ機能の動作について考えてみました。
恐らく、
- パソコン(自分自身のグローバルIP)からhetemlのサーバーのアクセス
- キャッシュサーバーが応答する
- キャッシュサーバーで不足する情報を判定
- キャッシュサーバー(サーバー内のローカルIP)からウェブサーバーにアクセス
- リクエストを返す
という動作になっていると考えられます。
この時に、手順の4の段階で、WordPress本体にアクセスするIPアドレスが、自分自身のグローバルIPアドレスから、サーバー内のキャッシュサーバーに変更されています。
図で見てみましょう。
まずは、コンテンツキャッシュ機能導入前のアクセス経路です。
WordPressが動作するウェブサーバーへは、自分のパソコンのグローバルIPアドレスが届いています。
次に、コンテンツキャッシュ機能の導入後を見てみましょう。
一度キャッシュサーバーにアクセスし、キャッシュサーバーがアクセスすることで、WordPressが動作するウェブサーバーには、キャッシュサーバーのローカルIPアドレスが届くようになります。
まさに、これが不具合の原因です。
したがって、WordPress本体には、自分のIPアドレスではなくサーバー内のローカルIPアドレスでアクセスすることになります。
これによって、自分自身のIPアドレスですら、WordPressにアクセスできなくなるという不具合についても説明が付きます。
WordPressのセキュリティに重大な影響がある
hetemlのコンテンツキャッシュ機能を有効にしたままIPアドレス制限を行うとなると、上記のキャッシュサーバーが持つ、サーバー内のローカルIPアドレスでアクセス制限を行うことになります。
しかし、hetemlは共有サーバーである以上、キャッシュサーバーも当然誰かと共有しています。
すなわち、キャッシュサーバーを共有している他のhetemlの利用者も、同様にWordPressのログイン画面にたどり着けることになります。
イメージ図を見ていただけると、その脅威がご理解いただけると思います。
もしも黄色や緑のパソコンの人が、サイバー攻撃の攻撃者だったらどうでしょう・・・?
何人がキャッシュサーバーを共有しているのかは分かりません。
しかし、IPアドレスから同じサーバー内に同居しているサイトなら調べることができるので、攻撃者から見れば、自分が契約しているサーバーと同居する他のサイトであれば、サイバー攻撃が可能になります。
ある意味、偶然同居しているサイトを狙い撃ちすることが可能になります。
参考:サーバー同居人検索(ドメインからIPアドレスを割り出し、同じIPアドレスのドメインを出力します。)
これによって、ご自身のサイトが狙い撃ちのサーバー攻撃の可能性は、正直低いです。
hetemlもランダムでサーバーを割り振っていると思うので、狙いのサイトと同じサーバーに割り振られる可能性も十分低いです。
しかし、犯行動機でもよくあるような、
- 偶然同居しているサーバーを狙った
- 誰でもよかった
という場合には、いつ狙われてもおかしくありません、
よって、hetemlのコンテンツキャッシュ機能をオンにしつつ、WordPressのログイン画面へのIPアドレス制限をキャッシュサーバーのローカルIPアドレスで規制することは、今までのWordPressの運営に対して重大なセキュリティリスクを負うことになります。
正直、おすすめできません。
セキュリティを考えればhetemlのコンテンツキャッシュ機能は使えない
キャッシュサーバーのローカルIPアドレスでWordPressログイン画面へのアクセス制限を行うのが危険であるとするならば、hetemlのコンテンツキャッシュ機能をオンにした状態で、最大限に安全なWordPressの運営は不可能となります。
よって、事実上、hetemlのコンテンツキャッシュ機能は使えないということになります。
確かに、hetemlのコンテンツキャッシュ機能自体は有益なシステムです。
Googleサーチコンソールのクロールの統計情報を見ても、コンテンツキャッシュ機能をオンにしてからクロールの平均時間に関して若干高速になっています。。
※6/27から導入。
しかし、
- 多少表示が速くなる
- サイトのセキュリティレベルを上げる
この2択となったときに、後者の「サイトのセキュリティレベルを上げる」を選択しました。
当面の間、hetemlのコンテンツキャッシュ機能はオフにすることで対応しようと思います。
hetemlのコンテンツキャッシュ機能で不具合発見!WordPressセキュリティに大きな問題が・・・のまとめ
ここまで、hetemlのコンテンツキャッシュ機能で見つかった不具合について紹介しました。
hetemlはそのままの状態でも十分高速なレンタルサーバーですが、さらなる高速化として打ち出したコンテンツキャッシュ機能。
セキュリティ意識の強いサイト運営者の方であれば、微妙な感じになっているのではないでしょうか?
素の性能が高いレンタルサーバーだからこそ、さらなる高速化には他にない魅力があります。
しかし、見つかった不具合。
この点に対処していただけると、さらに魅力的なレンタルサーバーになるのではないかと思います。
以上、hetemlのコンテンツキャッシュ機能の不具合について、参考になれば幸いです。