アプリケーションをサンドボックスする方法は?


66

信頼できない小さなプログラムを実行したいのですが、フォルダ、ネットワークアクセス、その他本当に必要のないすべてのファイルへのアクセスを制限します。これを達成する最も簡単な方法は何ですか?


私は一度も使ったことがないので、完全な答えを出すことはできませんが、私の知る限り、AppArmor(wiki.ubuntu.com/AppArmor)はこれを行うことができるはずです。
ハビエルリベラ

VirtualBoxのラッパーであるVagrantをチェックしてください。vagrantup.comおよび[Wikipedia](en.wikipedia.org/wiki/Vagrant_ ( software%29 およびgithub
Janus Troelsen

@JavierRivera FWIW、SELinuxも。しかし、Ubuntuで実行するのがどれほど簡単かはわかりません。
TC1

ApparmorはすでにデフォルトでUbuntuにインストールされているため、より簡単になります。
ハビエルリベラ

1
Virtualbox(Vagrantなど)、chroot、LXC、App Armor、SE Linuxなどを使用した仮想化は、複数の可能性があるようです。
フリム

回答:


26

それらが本当に信頼できない場合、そして確実にしたい場合は、別のボックスをセットアップします。本当に、または実質的に。

さらに、もしあなたが十分に妄想しているなら、あなたはその箱があなたの重要なものと同じネットワークにあることを望まない。すべてのソリューションで、権限のない別のユーザーを設定して、侵害者になりすぎるツールを開かないようにします。

  • したがって、最も安全なオプションは、ネットワークから物理的に削除された別個のボックスです。
  • それを物理ネットワークに追加することで少し与えることができますが、別のサブネット上で:内部に「実際の」接続はありません
  • 仮想マシンはオプションですが、ある程度のパフォーマンスをあきらめなければならない場合があります

同じボックスで実行することにバインドされている場合、たとえば、このオプションがあります

  • chroot。これは、多くの人々に対してこれを行うためのデフォルトのオプションであり、非特定の脅威に対しても機能する可能性があります。しかし、これはセキュリティオプションではなく、かなり簡単に分割できます。これを意図したとおりに使用することをお勧めします。つまり、セキュリティのためではありません。

最終的には、仮想化や個別のボックスの手間、またはのリスクのある状況なしで、特定のサンドボックスモデルをセットアップする必要がありますchroot。これがあなたの意図したことではないかと思いますが、より詳細な情報についてはこのリンクをご覧ください。


信頼されていないアプリケーションを仮想マシンで実行することは、セキュリティ上どの程度安全ですか?ハイパーバイザーを介してホストオペレーティングシステムにアクセスし、感染させることができる理論上のエクスプロイトについて聞いたことがあります。
-zuallauz

私は現在、そのような本当の脅威に気付いていませんが、標的にされていないものではありません。攻撃者がゲーム内でマルウェアを作成すると、それらの長さにはならないことを考慮する必要があります。彼らがあなたのレイアウトを知っていれば、あなただけの槍攻撃はもちろんかもしれませんが、それでもあなたの最初の懸念だとは思いません。悪意があると確信している場合は、とにかくネットワーク上で隔離ボックスを設定する必要があります。
ナネ

14

Firejailはかなり新しく、絶えず開発されています。使いやすい。

簡単にできます:

sudo apt-get install firejail
firejail app

Ask Ubuntuへようこそ!これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
マークカービー

12

Dockerは、現在のカーネルから実行できるコンテナーをセットアップするのに役立ちますが、システムの他の部分から隔離された状態を保ちます。かなり最先端のように見えますが、Ubuntuが優れたドキュメントに焦点を当てています。


4
これはほとんどの場合に適したオプションだと思います。ただし、元の質問の「信頼されていない」部分は、少し気になります。アプリケーションがコンテナから「ブレイク」できるようにするハッキングが実証されています。また、Dockerコンテナがルートアクセスで実行されることを考えると、アプリケーションを相互にサンドボックス化することが目的であれば、これは危険な場合があります。
クリスホールトルフ14

@CrisHoldorphは正しいですが、Dockerは改善されており、非特権で(rootとしてではなく)Dockerを実行することも可能だと思います。LXCとLXD(時々LXCデーモンと呼ばれることもあります)の場合、これは確かに当てはまります。このようなコンテナの作成を大幅に簡素化できます。したがって、現代の非特権コンテナは、chrootに対するセキュリティの観点からの改善と見なすことができます。しかし、それらは不可解な障壁ではありません!
ホイヘンス

Dockerはセキュリティツールではありません!
フェデリコ

10

完全仮想化/エミュレーション(VirtualBox)

考えられる解決策の1つは、ソフトウェアセンターにあるVirtualBoxなどの仮想化ソフトウェアです。

  • 仮想ボックスをインストールする
  • ネットワークを有効にして仮想マシンを作成する
  • UbuntuまたはLubuntuなどの軽量デスクトップをインストールします
  • インストールされたOSを完全に更新します(仮想ボックス内)
  • 仮想マシンでネットワークを無効にする
  • スナップショットを撮る

これで、信頼できないソフトウェアをインストールして、その機能を確認できます。外部の世界を混乱させることはできません。また、アクセス権がないため、OSをホストすることもできません。

ただし、仮想マシンは破壊される可能性がありますが、破壊された場合は、スナップショットから復元できます。

信頼できないソフトウェアの破壊力を制限する他の方法があるかもしれませんが、これは私が考えることができる最も堅牢な方法です。

コンテナベースの仮想化(Docker / LXC)

別のオプションは、LXCの詳細情報です。

LXCはLinux Containersのユーザー空間制御パッケージで、「ステロイドのchroot」とも呼ばれる軽量の仮想システムメカニズムです。

LXCはchrootから構築して完全な仮想システムを実装し、リソース管理と分離メカニズムをLinuxの既存のプロセス管理インフラストラクチャに追加します。

ソフトウェアセンターで入手できます。しかし、私は経験がありません。


1
それはただ不便です。ゲームを実行するためだけに仮想マシン全体を作成します!!?それはあまり良い解決策ではありません。あなたは、プロセスのGIDを設定することを考えてはいけないとUIDは次のようになりWAYこれよりも簡単?
ジャックマイヤーズ

実際、仮想ボックスのセットアップは非常に簡単で、おそらくスナップショットを撮ることに煩わされないと思います。仮想マシンが破壊された場合、破棄できます。
エモリー

Downvote:ソリューションが厳密であっても、事実に反する誤った推論。プログラムは、実行しているユーザーと同じ特権を持っている必要はありません。LinuxおよびUbuntuは、長年からMACをサポートしています。UbuntuはこのためにAppArmosを使用し、ディレクトリにプログラムを簡単に含めることができます。
ハビエルリベラ

@JavierRiveraは「簡単に」正しい言葉ではありません。FirefoxのAppArmorプロファイルとSELinuxポリシーはデフォルトですべてのディストリビューションに同梱されますが、そうではありません。Ubuntuはそのようなプロファイルを出荷しますが、いくつかの「人気のある」Firefox機能を壊すため、デフォルトではアクティブではありません。ほとんどのGUIアプリにはSELinuxポリシーはあまりありません。そのようなアプリでは、サンドボックスと呼ばれるにはあまりにも多くの権限が必要です。同意できない場合は、AppArmorまたはSELinuxを使用して、サンドボックスFirefoxへのリンクを安全にここに投稿してください!できれば私は本当に幸せになります:
ホイヘンス

おそらく意味のある答えのために「安全」を定義する必要がありますが、UbuntuのデフォルトのFirefoxポリシーは私にとって非常に合理的です。もちろん、何も使わないほどユーザーフレンドリーではないので、それは壊れますが、私にとっては完全な仮想マシンよりもはるかにユーザーフレンドリーです(また、人気のあるFirefoxの機能を壊します)。
ハビエルリベラ

9

mbox

Mboxは、すべてのユーザーが汎用オペレーティングシステムで特別な権限なしに使用できる軽量のサンドボックスメカニズムです。

私はいくつかのことに確実に使用しました。



1

考えられる解決策は、テスト目的で別のユーザーを作成し、その権限を制限することだと思います。これにより、仮想マシンで間違いなくパフォーマンスが低下することはありませんが、非常に適切に設定されていないと、安全性が低下すると思います。これについてはアドバイスできません。


2
これはまだインストールされるかもしれません悪意のあるソフトウェアからシステムを保護したり、実行されません-また、この質問が意味的にサンドボックス化されていません
トーマス・ウォード

1

DoSH-Dockerシェル

ユーザーのアクティビティをサンドボックスするだけの場合は、「DoSH」を使用できます

DoSH(Docker SHellの略)は、ユーザーがLinuxシステムにログインして、シェルを単純に作成する代わりにシェルを実行するときにDockerコンテナーを作成する開発です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.