-
仮想マシン 再起動せずに最高のセキュリティを提供できますが、パフォーマンスは最低です。
-
仮想マシンよりもさらに高いセキュリティを実現する別のオプション:「ライブ」CD/DVD/ペンドライブを起動 ハード ドライブにアクセスせずに (BIOS で HDD を一時的に無効にします。それができない場合は、少なくともドライブをマウント/アンマウントしないでください。自動的にマウントされる場合は、安全性が大幅に低下します)
-
ドッカー コンテナは、完全な仮想マシンに代わる安全性の低い代替手段です。おそらく、これら 2 つの (セキュリティの観点からの) 決定的な違いは、docker で実行されているシステムが実際にホスト システムのカーネルを使用することです。
-
特別な安全な環境を作成する、isolate などのプログラムがあります。これは一般に サンドボックス と呼ばれます。 - それらは通常 chroot ベースであり、追加の監視が行われます - あなたに合ったものを見つけてください.
-
シンプルな chroot 安全性は最も低くなりますが (特にプログラムの実行に関して)、多少高速になるかもしれませんが、しかし ... 別のルート ツリー全体を構築/コピーし、
/dev
のバインド マウントを使用する必要があります。 など (注 1 を参照) 下!)。したがって、一般に、このアプローチは推奨できません。特に、より安全で、多くの場合セットアップが簡単なsandbox
を使用できる場合はなおさらです。 環境。
注 0: nobody
のような「特別なユーザー」の側面に アカウント:ほとんど 単純な chroot
よりもはるかに低いセキュリティ . nobody
ユーザーは read を持つファイルやプログラムに引き続きアクセスできます そして実行 other に設定された権限 . su -s /bin/sh -c 'some command' nobody
でテストできます .そして、誰でもアクセスできる構成/履歴/キャッシュ ファイルがある場合 (ミスまたはマイナーなセキュリティ ホールによって)、nobody
で実行されているプログラム のパーミッションはそれにアクセスし、機密データ ("pass=" など) を grep し、さまざまな方法でネットなどを介して送信できます。
注 1: 以下のコメントで Gilles が指摘したように、単純な chroot 環境では、権限昇格を目的としたエクスプロイトに対するセキュリティはほとんど提供されません。単一の chroot は、次の場合に限り、セキュリティ上意味があります。 環境は最小限で、セキュリティが確認されたプログラムのみで構成されています (ただし、潜在的なカーネルレベルの脆弱性を悪用するリスクは依然として残っています)、chroot で実行されているすべての信頼できないプログラムは、chroot の外部でプロセスを実行しないユーザーとして実行されています。 chroot が (ここで述べた制限により) 防止するのは、特権エスカレーションなしの直接的なシステム侵入です。ただし、Gilles が別のコメントで述べたように、そのレベルのセキュリティでさえ回避され、プログラムが chroot から抜け出すことができる可能性があります。
仮想マシンを使用します。それ以下のものは、あまりセキュリティを提供しません。
数年前、私は chroot された専用ユーザーなどを提案したかもしれません。しかし、ハードウェアはより強力になり、仮想マシン ソフトウェアは使いやすくなりました。さらに、既製の攻撃はより巧妙になっています。ここまで行かない理由はもうありません。
VirtualBox を実行することをお勧めします。数分で仮想マシンをセットアップし、その中に Linux ディストリビューションをインストールできます。私が推奨する唯一のデフォルト以外のセットアップは、ネットワークのセットアップです。「NAT」インターフェイス (世界と通信するため) と「ホストのみ」のインターフェイス (ホストとの間でファイルを簡単にコピーしたり、ホストに ssh を実行したりできるようにするため) の両方を作成します。 VM)。学生のプログラムを実行している間は、NAT インターフェースを無効にします¹;ソフトウェア パッケージをインストールまたはアップグレードする場合にのみ有効にしてください。
仮想マシン内で、学生ごとに 1 人のユーザーを作成します。
¹ NAT インターフェースをユーザーのホワイトリストに制限することはできますが、それは単純な要点設定では必要以上に高度です.
ここでは、Chroot の使用が依然として非常に実行可能なオプションである理由と、完全なオペレーティング システムまたは完全なハードウェア仮想化が特定のシナリオで特にやり過ぎである理由について、非常に詳細に説明しています。
神話にすぎない その Chroot はセキュリティ機能ではありません。 chroot ファイル システムを自動的に構築するツールがあり、Chroot は目的のあるセキュリティ機能として多くの主流アプリケーションに組み込まれています。
一般に信じられていることとは反対に、すべての状況でオペレーティング システムの完全な仮想化やハードウェアの完全なシミュレーションが必要になるわけではありません。これは、実際にはもっと持っていることを意味します カバーしようとする攻撃面。つまり、安全性の低いシステムを意味します . (知識の乏しいシステム管理者向けと言われています)
ルールはかなり単純です:必要のないものを chroot 内に置かないでください。 root としてデーモンを実行しないでください。 chroot の外でデーモンを実行しているユーザーとしてデーモンを実行しないでください。
安全でないアプリケーション、setuid バイナリ、ダングリング オーナーレス シンボリック リンク/ハードリンクを削除します。 nosuid、noexec、および nodev を使用して、不要なフォルダーを再マウントします。ソースから実行中のデーモンの最新の安定バージョンをビルドします。そして何よりも、基本システムを保護してください!