Linuxで潜在的に不要なプログラムを実行する

Linuxで潜在的に不要なプログラムを実行する

私は学生が書いたプログラムをテストするためのプログラムを書いています。それらを信じることができないか心配され、それが実行されているコンピュータに悪い結果をもたらさないことを確認する必要があります。

システムリソースへのアクセスが制限されており、そのユーザーとしてプログラムを実行している競合テストユーザーを置くことを検討していますが、これまでオンラインで見つけたところによれば、仮想マシンを作成するのが最も安全なオプションです。

正しい方法を選択するのに役立つ人はいますか?安全が私の最大の関心事です。一方、私は過度の解決策を望んでおらず、実際に必要ではないことを学ぶために多くの時間を無駄にしません。

ベストアンサー1

  • 仮想デバイス再起動せずに最高のセキュリティを提供しますが、パフォーマンスは最低です。

  • 仮想マシンよりも安全な別のオプション:「ライブ」CD/DVD/プッシュドライブの実行ハードドライブにアクセスできません(BIOSで一時的にHDDを無効にします。そうしない場合は、少なくともドライブをマウントするか、自動的にマウントする場合はアンマウントしないでください。ただし、それほど安全ではありません)。

  • ドッカーコンテナは、仮想マシン全体の安全な代替手段です。おそらく(セキュリティの観点から)2つの主な違いは、dockerで実行されているシステムが実際にホストシステムのカーネルを使用していることです。

  • などのプログラムがあります。分離これは特別で安全な環境を作り出します。これはしばしば次のように呼ばれます。砂箱- これは通常chrootベースであり、追加の監督が必要です。あなたに合ったものを見つけてください。

  • シンプルchrootおそらく少し速いですが(特にプログラムの実行に関して)、最も安全ではありません。しかし、...完全に別々のルートツリーをビルド/コピーし、バインドマウント/devなどを使用する必要があります(参照注1次のような! )。したがって、通常、このアプローチはお勧めできません。特に、より安全で一般的に設定しやすいsandbox環境が利用可能な場合にはさらにそうです。

注0:アカウントなどの「特殊ユーザー」側の場合nobody:これは以下を提供します。ほとんどなしセキュリティは単純なものよりはるかに優れていますchroot。ユーザーは、nobody次の権限でファイルとプログラムに引き続きアクセスできます。読むそして実装する権限は次のように設定されます。その他。を使用してテストできますsu -s /bin/sh -c 'some command' nobody。バグやマイナーなセキュリティホールのために誰でもアクセスできるconfig/history/cacheファイルがある場合は、権限を使用して実行中のプログラムがそのファイルにアクセスでき、nobody機密データ(たとえば「pass =」など)をgrepネットワークや他の手段を介して送信する方法はいくつかあります。

注1:Gilesが指摘したように以下にコメントがあります、単純なchroot環境は、特権の上昇を目指す攻撃に対するセキュリティをほとんど提供しません。別のchrootはセキュリティの観点から意味があります。〜しない限り環境は小さく、安全に検証されたプログラムで構成されています。ただ(しかし、まだ潜在的なカーネルレベルの脆弱性を悪用する危険性があります。)chrootで実行されている信頼できないすべてのプログラムは、chroot以外のプロセスを実行していないユーザーとして実行されます。 chrootが(ここで述べた制限を介して)防ぐことは、特権の上昇を必要としない直接的なシステム侵入です。しかしGillesが言ったように別のコメント、このセキュリティレベルもバイパスし、プログラムがchrootから外れる可能性があります。

おすすめ記事