web-dev-qa-db-ja.com

サーバーでソフトウェアを実行するには、新しいユーザーアカウントをいつ作成すればよいですか?

一般に、サーバー上でインターネットに接続するソフトウェアを実行するには、いつ新しいユーザーアカウントを作成する必要がありますか?

たとえば、共有のDebianサーバー(Dreamhostなど)を使用していて、WordPressを使用するWebサイト、Redmineを使用するWebサイト、Ruby Railsを使用するWebサイト、Djangoを使用するWebサイトなど)を実行したいとします。 、そしてMercurialリポジトリも提供したいと思います。

Dreamhostサーバーと他の多くの同様に設定されたサーバーでは、これはすべて単一のユーザーアカウントで実行できますですが、いくつかの欠点が見られますアプローチ:

  • より長い.bashrc
  • その1つのアカウントが侵害された場合は、そのアカウントで実行されているすべてのサイトも同様に侵害されます。

一方、ユーザーアカウントが多数あると、特にインストールされているソフトウェアに関して同一の要件を持つユーザーアカウントがある場合、追跡するのが少し面倒になる可能性があります。たとえば、WordPress=を実行しているWebサイトごとに1つのアカウントを持つことは、やり過ぎかもしれません。

ベストプラクティスは何ですか?ユーザーアカウントごとのホストサイト(またはホストリポジトリなど)の数を、自分のパラノイアのレベルに比例して減らすだけの問題ですか?

これについてのあなたの理由を挙げて、あなたの意見を投稿してください。

また、プライベートサーバーまたはVPSで採用されているアプローチと共有サーバーで採用されているアプローチとは異なるはずであると考える理由がある場合は、それらの概要と、その理由を説明してください。

14
sampablokuper

私は一般的に「ネットワーク上のリスニングソケットを開くものに対して1人のユーザー」のファンです。1人はApache、1人はメール、1人はDNSなどです。

これは(最後に聞いたように)まだ現在のベストプラクティスであり、その背後にある理由は明白で単純なパラノイアです:これらのサービスは、誰かが脆弱性を見つけてパッチを当てる前にそれを悪用すると、Big Bad Internetにさらされますソフトウェアは少なくとも、私がそれらを1つのユーザーアカウントに制限し、それが担当する単一のサービスを実行するために必要な特権のみを持ちます。
一般的に言えば、私はこの分離レベルでシステムを保護するのに十分であると考えていますが、各アプリケーションは脆弱性の島です(たとえば、脆弱性がインストールされている場合WordPressプラグイン- all Apacheがアクセスできるもの(つまり、すべてのWebサイト)は、侵害が発生した場合に効果的に脆弱になります。

したがって、その引数の拡張バージョンは、独自のApache構成とユーザーを使用して共有ホスティングクライアントのWebサイトをサンドボックス化するために作成できます(サイトごとに完全なWebスタックをインストールする必要はなく、異なるユーザーを指定する個別のApache構成のみをインストールする必要はありません) )、各サイトで一連のApacheプロセスが実行されているという欠点があるため、RAMの使用量が大幅に増加し、Apacheのインスタンスが1つでもある場合、誰でも読み取り可能なものは依然として脆弱です。/userは危険にさらされます。

各Apacheをchroot(またはBSDシステムの場合はjail)に配置するための引数をさらに拡張すると、セキュリティをさらに強化できますが、ここでは、各chroot/jailに必要なすべてのソフトウェアが必要になるため、追加のディスク容量について話しています。含まれているサイトを実行します(パッチが発行されたときにサーバー上の1つのマスターコピーではなく、すべてのサイトでこのソフトウェアを更新する必要があります)。さらに、RAMユーザー/ Apacheインスタンス。
これにより、ユーザーがchrootから抜け出すことができるOS /カーネルのバグを除いてすべてが緩和されます(これは、個別の物理サーバーですべてのサイトを実行するための引数となり、サイトを異なるVLANに分離するための引数になります/サブネットなど)


すべてのリスクと同様に、それを排除することはできません。妥協の潜在的な危害/コスト、侵害の可能性、および各レベルの緩和のコストに基づいて、許容レベルまでそれを軽減することができます。
私のお金にとって、重要ではなく、eコマースではない共有ホスティング環境の場合、基本的な「Apacheに1人、DNSに1人、メールに1人など」セーフティネットで十分です。そのレベルを超えるセキュリティが必要な場合、ユーザーは自分のハードウェアを真剣に検討する必要があります。

11
voretaq7

一般的に私がしていることは、ログインが許可されていない外部向けサービス用の1人のユーザー(「nobody」など)と、ログインとsuまたはSudoが許可されている1つのアカウントです。当然、ユーザー名が異なり、簡単に推測できないようにしてください。

各顧客がログインしている共有ホスティング環境を実行しているのでない限り、サービスごとに1人のユーザーが必要だとは思いません。自分をハッキングの非常に魅力的なターゲットとして現実的に見ている場合は、できるだけ隔離することもできます。ただし、非常に物議を醸す何かを行ったり、財務データをホストしたりしない限り、ターゲットの魅力はそれほど高くありません。

6
Kyle