クライアントサイトを大規模管理する場合、単にセキュリティプラグインをインストールしたり、強力なパスワードを義務化したりするだけでなく、基盤となるインフラのセキュリティについて考える必要があります。

何十、何百ものWordPressサイトを管理する場合、サーバーアーキテクチャは、すべてのクライアントサイトの安全性を左右する重要なセキュリティ要素です。

共用レンタルサーバーは一般に安価に利用できますが、他の複数のサイトと同じファイルシステム、プロセススペース、ネットワークスタックを共有するため、1つのサイトが侵害されると、他のサイトにもマルウェアが広がる可能性があります。

共用サーバーの隠れたセキュリティリスク

共用レンタルサーバーでは、複数のサイトがサーバーの CPU、RAM、ストレージといったリソースを共有します。この仕組みにより、サーバーを提供する会社のコスト効率を高め、プランを低価格で提供することが可能になります。

しかし、セキュリティの観点からは、管理するサイトの数だけ脆弱性が存在します。根本的な問題は、リソースを共有している点にあり、ファイルパーミッションやユーザー分離によって一定の保護は可能ですが、いずれもソフトウェアレベルの対策に過ぎず、悪用される余地があります。フィッシング攻撃マルウェア、ランサムウェアは、依然として大きな脅威です。

主なリスクは、「横方向への拡散」と「被害の波及」の2つです。

  • 横方向への拡散─侵害されたシステムから、同じネットワークや環境内にある他のシステムへマルウェアが広がる
  • 被害の波及─あるサイトで発生したセキュリティ問題が、同じインフラを共有する他のサイトに波及

クライアントのサイト運用を担う立場では、コスト削減を目的に共用レンタルサーバーを利用すると、たった1つのサイトに残された古いプラグインや脆弱なパスワードが、サーバー環境全体に深刻なリスクをもたらす可能性があります。

さらに、複数のサイトにまたがる脅威の監視や、セキュリティインシデント発生後の復旧対応に要する時間と労力を考慮すると、当初期待していたコストメリットは次第に薄れていきます。

共用サーバー上のサイト間でマルウェアが広がる仕組み

サイト間で被害が波及する具体的な形は、レンタルサーバーがユーザー分離やファイルパーミッションをどのように実装しているかによって異なります。

それでも、多くの共用レンタルサーバーに共通する根本的な課題は変わりません。これらの環境では、侵害されたアカウントが、誤ったパーミッション設定や脆弱なスクリプトを通じて、他のユーザーのファイルにアクセスできてしまう攻撃経路が生まれやすくなります。

サイト間で被害が波及する主な経路は以下のとおりです。

  • PHP スクリプトが、パーミッションの設定不備により、他のユーザーのディレクトリ内のファイルを読み取ってしまう

  • 共有の一時ディレクトリを介して、マルウェアがサイト間で拡散する

  • サーバーレベルの脆弱性によって、あるサイトのプロセスが他のサイトに影響を及ぼす

  • 侵害されたユーザーアカウントが、共有リソースを通じて隣接するディレクトリにアクセスする

Kinstaを利用するBookswarm社は、共用サーバー環境で数百のクライアントサイトを管理する中で、この問題に直面。混在型のサーバー構成では、1つのサイトの侵害が他のサイトにも影響を及ぼす可能性があり、セキュリティ上の大きな課題となっていました。このアーキテクチャでは、「1つの攻撃が、複数のサイトへの影響につながる」状況が生じていました。

さらに、侵害が拡大する前に検知するためには常時監視が欠かせず、運用上の負担も増大します。あるサイトに感染の兆候が見つかれば、同じサーバー上にある他のすべてのサイトを確認しなければなりません。その結果、インシデント対応は個別のサイト単位ではなく、複数のクライアントサイト全体を対象に行わざるを得なくなります。

ブラックリストによる連鎖的な影響

共有IPアドレスは、一般的なレンタルサーバーにおいて、追加のリスク要因となります。複数のサイトが同じIPアドレスを共有している場合、メールプロバイダや検索エンジン、セキュリティサービスからは、同一の評価対象として扱われます。

1つのサイトが侵害されることで、IPアドレス全体がブラックリストに登録される可能性があります。この場合、同じIPアドレスを使用しているすべてのサイトに、以下のような連鎖的な影響が及ぶ可能性があります。

  • 1つの侵害サイトがSpamhausなどのスパムフィルターに検知されると、同一IP上のすべてのサイトでメールの到達率が低下

  • 検索エンジンが共有IPをリスクの高いものと判断し、関連するすべてのサイトの検索順位に悪影響が及ぶ

  • セキュリティサービスやファイアウォールがIPからのリクエストをブロックし、侵害とは無関係なサイトの機能が停止

  • セキュリティツールが共有IPを不正な活動と関連付けた場合、クライアントサイトの信頼性指標が低下

IPブラックリストからの復旧には、サーバー側との連携が必要です。まず原因となったサイトを特定し、問題を解消したうえで、各種ブラックリストに対して削除申請を行います。この対応が完了するまでの間、共有IPを使用しているすべてのサイトは影響を受け続けます。

この間、WordPressの推奨されるセキュリティ対策を適切に実施していた場合でも、「なぜメールが送信できなくなったのか」「なぜサイトが警告表示されたのか」といった点について、顧客への説明が必要になります。こうした問題の背景には、個々のサイト管理者が制御できないインフラ上の判断が関係している場合があります。その結果、継続的な対応や説明に時間を要し、本来注力すべき業務や開発プロジェクトに割ける時間が制限されることになります。

WordPress用サーバーの隔離コンテナ

サイトの分離は、共用サーバーにおける多くの根本的な課題を解消します。たとえばKinstaでは、各サイトを専用リソースを持つ隔離されたコンテナ内で実行しています。これは、各WordPressサイトがLinux、NGINX、PHP、MySQLなど、動作に必要なすべてを含む独立したコンテナを割り当てられることを意味します。

この分離は、オペレーティングシステム(OS)レベルで、以下の2つの主要な仕組みによって実現されます。

  • 名前空間(namespaces):各コンテナに対してシステムリソースの独立したビューを提供。これにより、あるコンテナ内で実行されているプロセスは、他のコンテナ内のプロセスを認識したり、相互に干渉したりすることができなくなる。

  • コントロールグループ(cgroups):リソース使用量を制御し、各コンテナがCPUやRAMの専用割り当てを超えてリソースを消費しないようにする。

さらに、WordPressサイトのPHPスレッドは、他のサイトのプロセスを見たり相互作用したりすることはできません。このカーネルレベルの分離により、あるサイトの侵害されたプロセスが他のサイトのリソースにアクセスしようとするシナリオを防ぐことができます。

ネットワークスタックも、各コンテナ内で独立して動作します。各サイトは独自のネットワークインターフェースと IP の処理を持ち、この分離はネットワークスタック全体に及びます。その結果、レンタルサーバーで起こりがちなノイジーネイバー(うるさい隣人)問題の影響を回避できます。

あるサイトでトラフィックが急増したり、リソースを大量に消費する処理が実行された場合でも、その影響はそのサイトのコンテナに限定されます。専用リソースが割り当てられているため、インフラ内の他の場所で何が起きても、他のサイトは割り当てられたリソースを使用して運用を継続できます。

隔離コンテナがマルウェアの横展開を防ぐ仕組み

コンテナ化された環境でサイトが侵害された場合、マルウェアはそのコンテナ内にとどまります。侵害されたプロセスが複数の仕組みを通じて他のコンテナへアクセスすることを防ぎます。

  • ファイルシステムが分離されることで、マルウェアが共有ディレクトリや一時ファイルを悪用して拡散されない

  • プロセスの名前空間により、悪意のあるコードが他のコンテナ内のプロセスをスキャンしたり、干渉したりすることがない

  • ネットワークの分離により、侵害されたサイトが近隣のサイトをスキャンしたり、攻撃したりすることはできない

  • メモリ空間も完全に分離されることで、コンテナの境界を越えたバッファオーバーフロー攻撃が発生しない

Kinstaでは、監視システムはコンテナが侵害されると即座に検知し、他のサイトが運用を継続したまま対応を行なっています。

サイト分離の実態を見極める

全てのサーバーが同じ方法で隔離コンテナを実現しているわけではありません。中には共用サーバー環境で複数のサイトを稼働させながら、リソースの使用量をソフトに制限するために「隔離」や「分離」という言葉を使う会社もあります。コンテナレベルの分離なのかを理解することで、サーバーを評価し、誤解を招くマーケティングに伴うセキュリティリスクを回避することができます。

コンテナ分離とは、各サイトが、他のサイトからアクセスできない専用リソースを持つ、独立したオペレーティングシステムの名前空間内で実行されることを意味します。移行先のサーバーを選ぶ際には、事前に以下の点を確認してみてください。

  • 各サイトは、他のサイトと共有しない専用のCPUとRAMを備えた独立したコンテナで実行されているか

  • ファイルシステムは、ユーザー単位のパーミッションだけでなく、名前空間を用いてカーネルレベルでも分離されているか

  • 1つのコンテナが侵害されたり、トラフィックが急増したりした場合、他のサイトにはどのような影響があるか

  • どのコンテナ技術(LXC、LXD、Docker など)が使用されているか

  • 分離の仕組みやアーキテクチャについて、技術的な説明資料は提供されているか

ソフトな制限と完全な分離の違いは、セキュリティとパフォーマンスの両面において重要です。前者はサイトが使用できるCPUの量を制御できる場合はありますが、環境自体は共有されたままであり、あるサイトのプロセスが他のサイトのプロセスに影響を及ぼす可能性があります。一方、専用リソースを用いた完全な分離では、各サイトが完全に独立した環境で動作するため、近隣のサイトがそのリソースにアクセスしたり、その動作の影響を受けたりすることはありません。

技術的な検証方法

コンテナ技術の詳細が記載された技術仕様を確認することで、サーバーが基盤となるアーキテクチャをどの程度理解し、説明できるかを判断できます。例えば、LXC、LXD、Dockerなどのコンテナ技術を使用しているサーバーであれば、実装している分離メカニズムについて具体的に説明できるはずです。

SOC 2 Type II報告書ISO 27001認証といったコンプライアンス認証は、セキュリティ対策が独立した第三者によって監査されていることを示します。これらの認証では、文書化されたセキュリティ管理体制や定期的なテストが求められており、単なるマーケティング上の主張よりも高い信頼性を提供します。Kinstaはこれら両方の認証を維持し、定期的な監査を受けることで、分離メカニズムが設計どおりに機能していることを検証しています。

Kinstaのセキュリティ・コンプライアンス・信頼性に関する情報を集約したTrust Centerページ
Kinstaのセキュリティ・コンプライアンス・信頼性に関する情報を集約したTrust Centerページ

試用期間が用意されているサーバーであれば、複数のサイトにまたがるリソース使用状況や、特定のサイトでCPU負荷の高い処理を実行した際の挙動を確認することで、分離の仕組みを検証できます。

Kinstaでは、初月無料のプランを利用してこのような実地検証を行うことが可能です。

サーバー戦略におけるサイト分離の重要性

共用レンタルサーバーから、隔離コンテナアーキテクチャへ移行することで、WordPressサイト全体の基本的なセキュリティ態勢を強化できるだけでなく、大規模なインフラ管理の考え方そのものを見直すことができます。

一般的なレンタルサーバーで複数のクライアントサイトを運用している場合、少なくとも1つのサイトでセキュリティインシデントが発生する可能性は高くなります。重要なのは、インシデントの影響範囲が単一のサイトに限定されるのか、それとも他のサイトにまで及ぶのかという点です。

多くのWordPressサイトを管理するWeb制作会社やエージェンシーにとって、サーバーの選択は個々のサイトではなく、サイト群全体のリスクを左右する判断になります。大規模なサイト運用を前提に設計されたインフラをお探しでしたら、KinstaのWeb制作会社向けWordPress専用マネージドクラウドサーバーをぜひお試しください。

Joel Olawanle Kinsta

Kinstaでテクニカルエディターとして働くフロントエンド開発者。オープンソースをこよなく愛する講師でもあり、JavaScriptとそのフレームワークを中心に200件以上の技術記事を執筆している。