web-dev-qa-db-ja.com

サンドボックス環境としてのLXCコンテナー

私は現在、安全なサンドボックス環境で信頼できないプログラム(学生の割り当て)を評価するプロジェクトを開始しています。主なアイデアは、Lxc-utilsの周りにGlassFishとJavaラッパー用のWebアプリを作成して、LXCコンテナーを管理することです。待機中のプログラムのキューがあり、Javaラッパーは固定数(プール)のLXCコンテナーを維持し、各プログラムに1つの(未使用の)コンテナーを割り当てます。

ホストシステムを保護するには、各コンテナーをSELinuxで保護する必要があります。

私の質問は、サンドボックス環境用にそのようなメカニズムを作成するのは良い考えですか、それともこの問題に対するより適切な解決策はありますか?それは軽く、学生の創造性に対して安全でなければなりません。

9
eXPi

LXCは最も安全な仮想化ソリューションではないため、なぜLXCを選択したのかについては説明していません。私はKVM/XENとLXCのヘビーユーザーであり、セキュリティに関してはLinuxコンテナーを使用することは決してないということを1つ言えます(LXC/OpenVZ/VServerに関係なく)。 KVM/XENを使用すると、より簡単に(そしてより信頼性が高く)なります。

それがパフォーマンスまたはハードウェア要件に関するものである場合は問題ありません。LXCで試すことができますが、いくつかのルールがあります。

  • libvirtは、SELinuxを使用するときにコンテナーの厳密な制限を保証します(LXC_driverのおかげで)-RHEL/Centos/Fedoraの場合のみかどうかはわかりません(Ubuntu/Debianはあまり使用しません) https://www.redhat .com/archives/libvir-list/2012-January/msg01006.html -SELinuxを使用することをお勧めします(私の意見では、このような状況では「必須」です)
  • 厳格なcgroupsルールを設定して、ゲストがホストをフリーズさせたり他のコンテナーに影響を与えたりしないようにします
  • 私はむしろLVMベースのコンテナを使いたい-それは常に「セキュリティ」のもう1つの層である
  • ネットワークソリューションとアーキテクチャについて考えてください。それらのコンテナは相互に通信する必要がありますか?

this を読むことから始めます-それはかなり古いですが、それでも-そこには多くの知識があります。また、-を満たす ユーザー名前空間

そして、そのすべてをもう一度考えてみてください-LXCセキュリティで遊ぶ時間は本当にたくさんありますか? KVMはとても簡単です...

6
Maciej Lasyk

信頼できないプログラムを実行する場合でも、Linux名前空間が最善の解決策です。 KVMよりセットアップが簡単で、必要なリソースも少なくて済みます。 LXCを試すことができますが、LXCは完全なLinuxディストリビューションイメージを実行するためのより一般的なサンドボックスとしてビルドされました。他の2つのLinux名前空間サンドボックスが思い浮かびます。

  • Google Chrome サンドボックス、現在Google Chrome/Chromiumで配布
  • Firejail 、MozillaFirerfoxおよびその他のGUIプログラムを実行するために構築されたセキュリティサンドボックス。
1
netblue