同じ物理マシン(最新のMacBook Pro)の2つの別々のディスクパーティションで2つのオペレーティングシステムを実行しています。それらを互いに分離するために、私は次の手順を実行しました:
/ etc/fstabにro、noautoを設定(読み取り専用、自動マウントなし)
個別の暗号化キーで各パーティションを完全に暗号化(メモリにコミット)
ウイルスが、私には知られていない最初のパーティションに感染するとします。最初のパーティション(ボリュームを暗号化する)からログアウトし、マシンの電源を切ってRAMをクリアします。次に、暗号化を解除して2番目のパーティションで起動します。ウイルスが両方のパーティションに感染していない、または感染できないことを合理的に確信できますか、それともここで火遊びをしていますか? MBPにはTPMが同梱されていないので、ブートローダーの感染が気付かれないままになっていることは、まだ理論的に可能です。ただし、このリスクは、ゲストOSの実行時にVMWare/VirtualBoxハイパーバイザーが悪用されるリスクにほぼ等しいようです。特に、MBPラインはBIOSではなくUEFIを使用しているためです。
これは私の質問につながります:上記のデュアルパーティションアプローチは、サービスの分離に仮想マシンを使用するよりも安全ですか?コンピューターにTPMがインストールされている場合、それは変わりますか?
バックグラウンド:
もちろん、OSソフトウェアの更新を毎日チェックする、絶対に必要でない限り管理者ユーザーとしてログインしない、両方のパーティションでリアルタイムウイルス対策プログラムを実行する、ホストベースのファイアウォールを実行するなど、通常の追加予防策をすべて講じていることに注意してください。発信ネットワーク接続の監視など。私の質問は、ここで何かを見落としていないかどうかを確認するためのパブリックチェックであり、デュアルブートスキームが実際に仮想マシンルートよりも安全かどうかを確認しようとします。最も重要なのは、セキュリティの問題についてもっと知りたいということです。
EDIT#1:
コメントで指摘されているように、このシナリオは私の特定のユースケースでは偏執的な側面にあります。しかし、企業や政府の環境にいる可能性があり、仮想マシンを使用して「高リスク」と見なされるサービスまたはアプリケーションを実行することを検討している人々について考えてみてください。 VMまたは私が概説したデュアルブートシナリオを使用した方がいいですか?そのトレードオフに対する長所/短所を効果的に比較する答えは、私が実際に探しているものですこの投稿への回答。
EDIT#2:
この質問は、仮想マシンが実際にホストOSを実際に保護するかどうかについての議論によって部分的に煽られました。個人的にはそうだと思いますが、OpenBSDメーリングリストのTheo de Raadtによる次の引用を検討してください。
x86仮想化とは、基本的に、正しいページ保護がほとんどない厄介なx86アーキテクチャの上に、新しいバグでいっぱいのほぼ完全な別のカーネルを配置することです。次に、このまったく新しいたわごとの反対側でオペレーティングシステムを実行します。セキュリティホールのないオペレーティングシステムやアプリケーションを書くことができないソフトウェアエンジニアの世界的な集まりが好転し、セキュリティホールのない仮想化レイヤーを突然書くことができると考えるなら、あなたはまったく愚かではありません。
-http://kerneltrap.org/OpenBSD/Virtualization_Security
テオの議論を引用することで、私はそれを支持していません。ここには複数の視点があることを指摘しているだけなので、この問題について詳しく調べようとしています。
まず答え、次に理由:仮想マシンをより安全にすることができます。
実用的な観点から見ると、ブートパーティション、BIOS、およびハードウェアデバイスの両方に感染する可能性のあるコードとマルウェアが存在します。したがって、VMは、一般的な観点から見ると、攻撃面が減少するという点でわずかに多くの利点があります。潜在的なVMホッピングコードは、VMに固有の最大のコードです。 。このコードは、最近使用されたVMなどのタイプに固有である可能性があります http://www.kb.cert.org/vuls/id/649219 問題。特定の仮想マシン(kvmまたはxen)、リングなどが必要であることに注意してください。
したがって、敵対的なコードの観点から見ると、仮想化はより安全です
ネットワークの角度からアプローチすると、仮想化ソリューションの多くのユーザーは、NAT NAT、PAT、またはOSがネイティブサポートしていないその他の機能内で、または独自の拡張セキュリティを適用することにより、ネットワークレベルでの柔軟性が高くなります。特定のVMを使用して仮想化ですべてのトラフィックI/Oを検査することにより、安全なポスチャを強化することはかなり簡単です。
したがって、ネットワークセキュリティの観点からは、仮想化の方が安全です
ゲスト操作に。秒単位でのオペレーティングシステムのクローン作成の美しさ...採用されている仮想化ソリューションの種類に応じて、電源がオフになっているVMは、ユーザーが何もしなくても透過的にパッチを適用できます。汎用VMを使用し、さまざまな強化ガイドを使用して、特定のアプリケーション以外の最小限の機能がある場所にロックダウンします。VMを使用すると、証明書トラストストアで最小限の特権を実行するなど、極端なレベルの強化を簡単に実行できます(たとえば、ほとんどの証明書を商用から削除します) CAは、私が使用しているものを除きます)これらのタイプのアクティビティは、VMを使用すると、スナップショットを取得し、壊滅的な変更から回復できるため、はるかに高速になります。さらに、VM全体を簡単にファイルにパッケージ化して、USBなどのどこかに保存できます。また、妥協案を考える場合、仮想化では、妥協案は通常よりもはるかに少ない特権である可能性があることに注意してください。タイプ1ではハイパーバイザー、たとえば、それはハイパーバイザーですコンピュータ上で最も特権のあるインスタンスであるself ..攻撃者にとってフープのレベルが増加します。また、上記の開発者ドメイン管理者や企業LDAPに対する特権を付与することなく、開発者に管理/ルートアクセスを付与するためにも使用できます。
したがって、ゲスト操作の観点からは、仮想化の方が安全です
ただし、仮想化されて起動されたネイティブタイプのOSはどちらかまたはどちらかを選択できるという前提に少し焦点を合わせます。デュアルブートオプションであるかのように、サードパーティのソリューションを使用して仮想化されたOSをブートできるため、そうではありません。 vbootのようなソフトウェアは、VHD/VMDK/VDI/Raw形式の起動を可能にします。
仮想化のタイプに関する限り、このケースに該当するものはいくつかあります。タイプ1の仮想化(ベアメタル)、タイプ2の仮想化(ホストOS)であり、部分的なオペレーティングシステムと準仮想化は対象外と見なします。主要なx86タイプ1仮想化ソリューションであるVMware vsphereハイパーバイザーは、マイクロカーネルアプローチを使用し、攻撃対象領域を最小限に抑えます。タイプ2の仮想化は、基盤となる完全なオペレーティングシステムに依存しているため、攻撃対象が大きくなります。そのため、VMwareに適用すると、フルオペレーティングシステムに関するTheoのコメントは正しくありません。
これは、トピックに関するVMwareの宣伝です
http://www.vmware.com/technical-resources/security/overview.html
もちろん、セキュリティはほとんどの場合、ユーザビリティとセキュリティのトレードオフです。ユーザーが遭遇する可能性が高い脅威の状況、およびあなたに対して攻撃するためにリソースを展開するユーザーを考慮することが重要です。あなたが国民国家または銀行であるならば、あなたは広範囲の保護を必要とします。企業など。悪名の少ない個々のユーザー-十分な保護。優れたセキュリティソリューションはあなたを十分に保護しますが、邪魔になるほどユーザビリティに悪影響を与えることはありません。全体的なリスク管理は別のトピックであり、他の場所で確認する価値があります。
攻撃対象領域をさらに減らすことで仮想化セキュリティを拡張するために使用できるシンクライアントや、タイプ1ハイパーバイザーと組み合わせたTPMロックダウンなど、よりエキゾチックなセキュリティアプローチについては触れませんでした。
それぞれの点で、より安全です。
危険なコードを試すことができる「サンドボックス」環境を構築する場合は、仮想マシン内で行う方がデュアルブート環境よりも安全です。 これはあなたが質問しているものであるように見えます。理由は、仮想マシンがハードウェアに直接アクセスできないためです。プログラム内でエミュレートされたプログラムとして実行され、ランタイム環境全体が仮想化システムが許可する範囲にのみ存在します(ハイパーバイザーにセキュリティバグがないと仮定)。 VMシステムがハードドライブアクセスが不可能であると宣言している場合、内部で実行されているプログラムはハードドライブにアクセスできません。
一方、標準環境を「エスケープ」して既知の安全な環境を作成したい場合は、そこに到達する唯一の方法がデュアルブートです。その理由は、VMが標準デスクトップ内のプログラムとして存在するため、標準デスクトップのセキュリティ障害は、VM自体にも及ぶ可能性があるためです。 -デスクトップは、VMによって行われるトラフィック、キーストローク、ディスクアクセスなどを傍受できます。したがって、デスクトップが安全でない場合、VMを確保できません。これはあなたが必要とするものではないようですが、将来の使用のために理解するのに役立つかもしれません。
個人的には、マルウェアの調査をしていない人にとっては、パラノイアに近いように思えます。
2つの異なるOSを実行している場合は、2つの異なるファイルシステムを読み取る方法を知っているマルウェアが必要です。
VMで実行されている場合は、マルウェアがハイパーバイザーを明確にターゲットにして、サンドボックスから抜け出せるようにする必要があります。
より低い特権などで実行することで、何かが感染する明らかな方法のいくつかをすでに軽減しています。それ以外の場合、最善の軽減タスクは、定期的なバックアップ、マルウェアのスキャン、または私にとって、UNIXベースのシステムを実行しているときにチェックサムを使用してファイルチェッカーを実行し、ファイルの変更を監視して、疑わしいファイル/変更が見つかったときにメールで通知することです。
また、VMを使用すると、永続的なデータを保存するための共有フォルダーを作成し、VMのスナップショットを取得し、コースワークを実行し、スナップショットをロールバックして、発生した可能性のあるすべてのことを行うことができます。 VMは消去されます。マルウェアは、自分自身を共有にコピーするために、共有について具体的に知る必要があり、それでも実行できません。
セキュリティを効果的にするには階層化する必要がありますが、平均的な使用について基本的な注意を払うことはそれほど多くありません。個人的に、あなたが何らかの活動を恐れている場合特に問題が発生する場合、その作業中にスナップショットを取り、ロールバックします。さまざまなOSとファイルチェックサムモニタリングを使用すると、何かが発生したかどうかがわかります。VMを破壊し、さまざまなOSに影響を与えるものは非常に対象とする必要があるため、バックアップからの復元はおそらく十分以上です。貴方のために。
デュアルブートアプローチの安全性を低下させる理論上のリスク(まだ証明されていません)があります。これらには、トロイの木馬を非標準のハードウェアにオフロードすることが含まれます。たとえば、バッテリーのファームウェアを何かに感染させると、カーネルのパワーマネージャがオーバーフローします。これは再起動の境界を越える可能性があり、それについて実際に発言権はありません。 VMアプローチは、この弱点に悩まされることはありません。
私の知る限りでは、これらは概念実証段階にありますが、ホワイトハットの世界でも同じです。 NSAがこの機能を持っている場合、私は驚かないでしょう。