vs.
Q:どのソリューションがより高いセキュリティを提供しますか? 一見すると、仮想化はセキュリティの別のレイヤーであると考えることができるので、それがより良いと思います...次に別の考えで...仮想化が別のレイヤーの複雑さを追加することで、セキュリティバグ?
"B"への更新:いいえ、smtpとhttpdゲストはlayer3を介して互いに通信できません。 [〜#〜] qemu [〜#〜] 。
攻撃の可能性:スクリプトキディからサーバーに侵入するのに数か月を費やすセキュリティリサーチャーまで。静的なhtmlページのみが使用され、cgi/phpは使用されず、smtpdサーバーはOpenSMTPDです。 SSHDがインターネットに接続されていないインターフェイスでリッスンしている場合でも、不要なポートは使用されません。
仮想化 は、いくつかの分離層を提供します。 「B」のケースでは、(たとえば)SMTPサーバーにリモートで悪用可能なホールが存在する場合、それを悪用する攻撃者はそのSMTPサーバーを実行する仮想マシンを完全に制御する可能性がありますが、「外部」のままです。 "他の2つのマシン(Webサーバーを持つゲスト、およびホスト)の。これは違反を封じ込めるのに役立ちます。ただし、この分離は、システム間で使用する通信チャネルに関連しています。たとえば、Webサーバーコードに電子メールを送信する機能がある場合、他のシステムと通信する方法があると思います。いくつかの共有ファイル階層がある場合もあります。また、既存の仮想化ソフトウェアが「完全な」分離を提供していると主張するのは大胆すぎるでしょう。ゲストから別のゲストまたはホストへのエスケープを可能にするセキュリティホールが発見されました(そして修正されましたが、それでもなお発見されました)= VMエンジン。
これは(いつものように)atrade-off:VM余分な封じ込めをもたらすが、何も「完璧」ではない(完璧具体的なマシンでは達成できません)、オーバーヘッドが発生します:マシンを3つに分割すると、CPU使用率がいくらか高くなります(それ以上ではありません)、RAM使用率がかなり高くなります) )、およびより多くのディスク使用量(システム間で行われる「共有」の量に応じて、多少多めまたは多め)。さらに重要なのは、1つのシステムではなく3つのシステムを使用すると、複雑さ、よく知られたセキュリティの悩みの種。管理するシステムが1つではなく、3つになりました。これにより、システム管理のコストが増加します。
短い答え:仮想化によるソリューションはより安全です。
HTTPサーバーとSMTPサーバーはおそらくインターネットに公開されており、攻撃に対してオープンです。ほとんどのHTTPおよびSMTPサーバー自体には最近の良い履歴があり、リモートの脆弱性はほとんどありませんが、まだゼロ日が存在する可能性があります。また、HTTPサーバーは、PHP/CGI /その他のスクリプトにアプリケーションの欠陥を公開します。アプリケーションの内容によっては、HTTPサーバーが攻撃を受けるリスクが高くなる可能性があります。
望ましいセキュリティプロパティは、ハッカーがHTTPサーバーに侵入し、SMTPサーバーに到達できないこと(およびその逆)です。 OpenBSDにはローカル特権の昇格の欠陥の長い歴史がありますが、構成も重要であり、ほとんどのセキュリティアーキテクトは、攻撃者が特権の低いUnixアカウントにアクセスできると想定し、ルートに到達できます。
一般的に、仮想化によって封じ込めが強化されると考えられています。ゲストからホストへの欠陥の事例はありましたが、ローカルの権限昇格の欠陥よりは少ないです。したがって、この配置は2つのサービスを安全に分離します。
私は実際にコミュニティグループにメールとホスティングを提供する個人プロジェクトでこの問題を抱えています( http://unfinished.org.uk/ )ユーザーは自分のPHPスクリプトをアップロードできますなので、Webサーバーは攻撃のリスクが高いです。メールはより重要(ほとんどのサイトはパンフレットウェア)であるため、仮想化を使用してこれらを分離することは非常に理にかなっています。
ただし、状況は異なる場合があります。自分で作成した静的コンテンツのみをホストしている場合、HTTPサーバーは攻撃のリスクが高くありません。その場合、メリットはわずかであり、おそらく仮想化のセットアップの面倒な価値はありません。
仮想化によってセキュリティが強化されるとは思いません。このようなアプリケーションは、chroot(OpenBSD)したり、それぞれを独自のjail(FreeBSD)に入れたりできます。私は最も単純な解決策を採用します。なぜなら、それがより単純であるほど、あなたが何をしているのかをよりよく理解でき、心理的にも分離(仮想化)にそれほど依存していないからです。いったん情報漏えいが発生すると、それは遅すぎるため、サーバーの保護はより重要です。
短い答え:仮想化はより安全です。
脆弱性を4種類に分けましょう。
サーバーは攻撃にさらされる可能性がはるかに高いため、仮想化の2の方がはるかに適切です。
もちろん、管理時間とサーバーのコストを考慮する必要がありますが、セキュリティが唯一の考慮事項である場合は、仮想化を使用してください。