私のLinuxサーバーが仮想化されていない物理マシンで実行されていることを確認するにはどうすればよいですか?
私が考えているシナリオは次のとおりです。
- ラックサーバーにディストリビューションがインストールされています。
- データセンターにラックスペースを借りてそこに置きましたが、
- Mallory(「攻撃者」)がデータセンターに行き、私のサーバーを切断しました。
- Malloryがディスクの画像を撮影しました。
- Mallory は KVM システムでディスクイメージをゲストとして実行します。
この問題を解決するために、攻撃者が
- 私のサーバーが実行されているのと同じハードウェアをエミュレートするようにKVMまたは同様のハイパーバイザーを修正しました。
- 既知のすべてのハイパーバイザー回避またはハイパーバイザー検出攻撃を特定し、それを無効にするためにハイパーバイザーをパッチしました(したがって、赤い薬や同様の攻撃はありません)。
だから私の質問は次のとおりです。オペレーティングシステムが物理システム(または正確な物理システム)で実行され、仮想化障害(赤い薬など)に依存しないようにするための信頼できる方法はありますか?
あるいは、逆に言えば、そのような検出が常に可能であるという証拠はありますか?
言う:これは現在の技術に関する議論ではなく、家庭的な質問です。現在は、imvirt
既知の仮想化エラー/欠陥コレクションを使用して、仮想化環境に存在するかどうかを簡単に検出できます。 「完璧な仮想化」のようなものが議論されたのか、理論的観点から可能なのか、不可能なのか疑問に思います。
ベストアンサー1
攻撃者がハードウェアを完全にエミュレートする仮想マシンを作成したとします。この仮定では、定義に従ってコードが仮想マシンで実行されていることを検出できません。
仮想マシンが実際に物理ハードウェアで実行されている場合、仮想化のオーバーヘッドによって追加の応答待ち時間が発生する可能性があるため、外部からそれを検出できる必要があります。このオーバーヘッドは、他のネットワークオーバーヘッドに比べて目立たない場合があります。仮想マシンがより高速なハードウェアで実行されている場合は、理論的に完全なエミュレーションを提供できます。
実際、完全なハードウェアエミュレーションを提供することは非常に困難です。 (これはオペレーティングシステムとドライバの開発者が望むものであり、残念ながらエミュレータは完璧ではありません。)もちろん、理論的には可能ですが、攻撃者にはより安価な攻撃方法があります。攻撃者が隠しルートキットを植えるか、PCIまたはRAMバスにスパイを配置できるとします。これは、周囲のすべてのハードウェア用の完全なエミュレータを開発するよりも安価です。あるいは、マロリーはソフトウェアの脆弱性を悪用してパスワードを盗んだり、最後の手段として使用したりする可能性があります。レンチ暗号分析、彼女が本当に面倒な場合。
データをコピーしてルートキットを植えることが最も簡単な攻撃方法です。以下を使用すると、これがある程度発生するのを防ぎます。完全な生産管理あなたのサーバーから。 TPMは複製するのが難しく設計されており、正しく使用されています(注:難しいです!現在のTPM信頼ルートでオペレーティングシステム全体の整合性を確認できる基本的なオペレーティングシステムはありません)。TPMはオペレーティングシステムの整合性とデータの性別と機密性を維持します。 。