ホスティングオプション
Webサイトサイトのホスティングオプションは通常、次のいずれかです。
- 専用サーバー
- 仮想プライベートサーバー(VPS)
- 共有ホスティング
専用サーバーを使用すると、1つのサイトのみが物理コンピューターでホストされ、構成はコンピューター自体と同じくらい安全です。
VPSでは、ソフトウェアは他のユーザーの仮想マシンと同じ物理コンピューターで実行されます。ただし、機能的には専用サーバーと同等です。最も重要なのは、VPSが専用サーバーのプライバシーとセキュリティを備えていることです。
共有ホスティングを使用すると、Webサイトは他のユーザーと共有されているファイルシステムに存在します。残念ながら、これにより専用サーバーまたはVPSで実行されている場合よりも安全性が低下します。この記事の残りの部分では、共有ホスティング環境でのWCMSのセキュリティについて説明します。
環境
共有ホスティング環境は、Webサーバー、ファイルシステム、設定ファイル、データベース、および一部のユーザーで構成されると見なすことができます。
次の例では、所有者アカウントが「tom」であり、設定ファイル(データベース資格情報を保持)の名前が「settings.php」であると想定しています。
Webサーバープロセスは、構成に応じて、所有者アカウント「tom」のユーザー権限、またはグループ「www」のグループ権限で実行される場合があります。
また、標準のGnu / LinuxまたはUnix環境が想定されており、読者は、読み取り(r)、書き込み(w)、実行/アクセスディレクトリ(x)の3つのブロックに分かれたUnixアクセス制御システムを理解していると想定されます(ユーザー、グループ、その他)。
特定の設定について説明する前に、満たしたい条件をリストしておくと役立つ場合があります。
- Webサイトが機能するためには、Webサーバーがサイトを構成するすべてのファイルへの読み取りアクセス権を持ち、サイトを構成するすべてのディレクトリへのディレクトリアクセスにアクセスする必要があります。
- 安全な操作のために、Webサーバーは処理するファイルへの書き込みアクセス権を持ってはなりません。
- 安全な操作のために、不正なユーザーが実行するWebスクリプトには、別のユーザーが所有するファイルへの読み取りアクセス権があってはなりません。
- 所有者がCLIを使用して自分のサイトで作業するには、ユーザーが自分のファイルに対する読み取りおよび書き込みアクセス権を持っている必要があります。
- CLIを使用して他のユーザーがファイルにアクセスできないようにするには、「other」ブロックに権限を設定しないでください。
残念ながら、共有ホストでは、5つのうち4つしか使用できません。共有ホストで5つの条件をすべて満たす方法はありません。
私の知る限り、共有ホストプロバイダーは2つの異なる構成を使用しています。両方について、ファイルとディレクトリを最適に保護するために使用する権限、および構成が満たしていない条件と併せて以下で説明します。
構成1:Webサーバーは所有者として実行されています
これは、最も広く使用されている構成のAFAIKです。Webサーバーはファイルの所有者として実行されています。これは、悪意のあるユーザーがWebサーバーユーザーを使用してスクリプトを実行し、別のユーザーのファイルを読み取ることができないことを意味します。このタイプの構成は、CLIでユーザーを互いに保護します。
ただし、所有者とWebサーバーに個別のアクセス許可を与えることはできません。このタイプのセットアップで条件2を満たすには、アップロードディレクトリ以外のすべてに対するWebサーバーの書き込みアクセスを防ぐために、所有者の書き込み権限を制限する必要があります。
許可:
Directories: 500 r-x --- --- tom.tom
Files: 400 r-- --- --- tom.tom
settings.php: 400 r-- --- --- tom.tom
Upload Dir.: 700 rwx --- --- tom.tom
残念ながら、これは条件4を満足できないことを意味します。つまり、CLIを使用してサイトを維持することはできません。所有者は、何らかのWebベースのダッシュボードを使用してサイトにアクセスするように制限されます(所有者は、無制限のアクセス権を持つステージングサーバーにコピーを保持し、ステージングサーバーで行われた変更を共有ホストにミラーリングすることをお勧めします)。
構成2:Webサーバーはwwwグループのメンバーとして実行されています
この構成は、共有ホストソリューションの専門的でない(IMHO)プロバイダーによって使用されます。Webサーバーはwwwグループのメンバーとして実行されており、グループブロックを通じて必要な読み取りアクセス権が与えられます。
許可:
Directories: 750 rwx r-x --- tom.www
Files: 640 rw- r-- --- tom.www
settings.php: 640 rw- r-- --- tom.www
Upload Dir.: 770 rwx rwx --- tom.www
これらの設定には、CLIを介して所有者に自分のファイルへのフルアクセスを付与するという利点があり、Webサーバーを読み取りアクセスのみに制限します。
ただし、条件3を満たすこともできません。つまり、共有ホスト(またはホストを共有する別のユーザーのサイトを侵害したハッカー)上の不正ユーザーがスクリプトを実行して、読み取り可能なファイルを読み取ることができます。 Webサーバー。これにより、不正なスクリプトがデータベースの資格情報を使用してファイルsettings.phpにアクセスできるようになり、サイトを完全に引き継ぐことは簡単になります。
私の推奨事項は、このタイプの構成を避けることです。
補遺:共有ホストを使用することはどれほど危険ですか?
私は確かに、クレジットカード番号や医療記録などの機密情報を共有ホストに置かないでしょう。ただし、共有ホスティングは安価であり、魅力があります。私は自分のサイトのいくつかで共有ホスティングを使用しています。私はまだハッキングされていませんが、リスクが存在することを知っており、それが発生する日に備えています。ハッキングされた場合、共有ホスト上のすべてを削除し、安全なステージングサーバーに保持しているミラーコピーからサイトを再インストールします。
「config 2」では、主な問題はotherです。いくつかの場合には、他の危険にさらされますと、あなたがホストを共有すること、ウェブサイト、あなたのウェブサイトにもお弁当です。セキュリティをあなたが知らない別の関係者に依存させ、それを制御することは良い考えではありません。これが、「config 2」タイプのホスティング配置を避けることをお勧めする理由です。
「config 1」を使用すると、あなただけがWebサイトのセキュリティを制御できます。これは(特にあなたが何をしているのかを知っている場合)より優れています。しかし、それは絶対確実ではありません。誰も完璧ではありません。あなたが間違えてサイトが侵害された場合、攻撃者はあなたに属するホストに保存されているすべてのファイルにアクセスできます。言い換えれば、ハッキングされたときの損傷を最小限に抑えるために、他の誰かがアクセスした場合に害を引き起こすようなホスト上に何かを置かないでください。特に、その共有ホストにメールを保管しないでください。通常、電子メールには大量の機密データが含まれているため、「あなた」として実行されているWebサーバーの近くのどこにも保管しないでください。
また、Webアプリケーションが機密データを処理している場合は、専用のホストまたはVPSが予算に含まれていることを確認してください。
Drupal.orgでファイルのアクセス許可と所有権を保護するためのこのガイドを参照することもできます。