たとえば、電子メールやWebページなど、サーバーでいくつかのサービスをホストしているとします。 Webサーバーソフトウェアに未知の脆弱性があり、攻撃者が私のマシンを乗っ取ることができるのではないかと心配しています。その後、攻撃者は私のWebサイトだけでなく、私の電子メールにもアクセスできるようになります。
それぞれがサーバー専用の2つの個別の物理マシンを用意するだけで問題を解決できます。攻撃者がWebサーバーに侵入した場合、攻撃者はWebサイトしか見ることができません。メールを見るには、メールサーバーに侵入する必要があります。
実行しているサービスごとに新しいサーバーを実際に購入したくないので、妥協案として仮想マシンを使用できると考えました。このモデルでは、ホストOSが安全なSSHサーバーとVMソフトウェアを実行します。サービスごとに、新しい仮想マシンが作成され、そのサービスを提供するように構成されます。
私のモデルは、次の2つの方法で壊滅的に破られる可能性があります。
ただし、これらの両方が、ホストしたい無数のサービスの1つにある脆弱性を悪用するよりも難しい場合は、攻撃者の生活がはるかに困難になっているようです。彼はまず、サーバーが実際には同じマシン上のVMであることを認識してから、たとえばWebサーバー、そしてその上で仮想化を打ち負かす-これはWebサーバーを悪用するよりも難しいようです。
私の質問は、この種の戦略は非企業のセットアップにとって実際に合理的で実用的ですか?多くのOSの実行によるパフォーマンスの低下、各OSでのディスク領域の浪費などの欠点は、現実的なセキュリティの向上(もしあれば)を正当化しますか?
私の主なセキュリティ目標は、個々のサービスを区分化することです。これにより、1つのサービス(Webサーバーなど)を介してマシンにアクセスしても、他のサービス(メールサーバーの電子メールなど)のプライベートデータにすぐにはアクセスできません。サーバーにサービスを追加するたびに、攻撃者が使用してすべてを利用できる潜在的な脆弱性とエクスプロイトをさらに追加しているように感じます-1つのサービスの欠陥が悪用された場合、そのサービスのみが望ましいそれ自体が危険にさらされています。
あなたの仮定は正しいです。分離によるセキュリティは、実際に従うべき良い原則です。
デスクトップにこのアイデアを実装するオペレーティングシステム全体もあります。 Qubes OS (これを書くために使用しているラップトップで実行されているもの)。
サーバーモデルに戻るには、サービスごとに1つのVM=をお勧めしますが、リソースを大量に消費することになります。
私たちはここで約8年間 FreeBSD Jails システムを使用して、あなたが話していることを正確に複製しています:データベースやメールサーバーからのWebサーバーの分離など。
私たちがしていることは、Jailホストはファイアウォールを除いて何も実行しないことです。すべてのサービスは、セキュリティドメインに基づいて、刑務所に分離されています。 XenでDom0を扱うのと同じようにホストを扱います。
これは視覚化ではなく、chrootのような非常に改善されたメカニズムであるため、分離とセキュリティを追加しながら、視覚化のパフォーマンスへの影響はありません。 jailされたシステムの内部から、仮想化された環境または実際の環境で実行しているように見えます。欠点は、FreeBSDしか実行できないことです(私は気にしませんが、あなたには適さないかもしれません)。
Dockerもそのアプローチは似ていると思いますが、最近使用を始めたばかりで、仮想環境の代わりというよりは開発ツールのように感じられます。
でも、 Xen は一見の価値があると思います。