chroot“ jail”-それは何で、どのように使用しますか?


99

Linuxでchroot刑務所についてよく耳にしましたが、まだ使用したことがありません(私は日常的にFedoraを使用しています)ので、chroot「刑務所」とは何ですか?いつ/なぜそれを使用する/使用しないのか、他に知っておくべきことがありますか 作成するにはどうすればよいですか?

chroot 

ここでの回答は、「どのようにカテゴリを使用するのですか?」について短いようです。:(
アレクサンダーミルズ

回答:


88

chroot刑務所は、プロセスとその子をシステムの他の部分から隔離する方法です。rootユーザーは刑務所から簡単に抜け出すことができるため、rootとして実行されないプロセスにのみ使用する必要があります。

アイデアは、プロセスの実行に必要なすべてのシステムファイルをコピーまたはリンクするディレクトリツリーを作成することです。次に、chroot()システムコールを使用してルートディレクトリをこの新しいツリーのベースに変更し、そのchrootされた環境で実行中のプロセスを開始します。変更されたルート外のパスを実際に参照できないため、これらの場所で悪意を持って操作(読み取り/書き込みなど)を実行することはできません。

Linuxでは、バインドマウントを使用すると、chrootツリーにデータを入力できます。これを使用すると、たとえば、/libなど/usr/libではなく、などのフォルダーをプルできます/usr。必要なディレクトリツリーを、jailディレクトリに作成したディレクトリにバインドするだけです。


10
あなたの答えは素晴らしいです。ただし、chrootは安全なメカニズムではありません(プロセスがルートになると、場合によってはジェイルから抜け出すことができます)。実際の刑務所は、freebsd刑務所などで強制できます。このen.wikipedia.org/wiki/FreeBSD_jail#Similar_technologies
nc3b

3
Gentooのインストールプロセスはchrootを使用するため、GRUBやLinuxカーネルなどをインストールする前に新しいOSをセットアップできます。
Chris Huang-Leaver

3
すべてのLinux名前空間を使用した完全なジェイルシェルについては、firejailご覧ください。debおよびrpmパッケージが利用可能です。一般的に、私が原因の既知の問題に、しかし、カーネル3.18以降をお勧めします、新しいソフトウェアをインストールしたり、ユーザーの管理を行うことができないときfirejail実行されています。
CivFan

すばらしい答えです!-いくつかの基本的な例を見るといいでしょう。
ガブリエルステープルズ

chroot jailの下のユーザー/binは、rootユーザーによってインストールされた下にあるバイナリファイルを呼び出すことができますか?@ベン・コンビー
alper

50

「chroot jail」は、実際に消滅するはずの誤った呼び名ですが、人々はそれを使い続けています。chrootファイルシステムのルートとしてファイルシステム上のディレクトリをシミュレートできるツールです。つまり、次のようなフォルダー構造を持つことができます。

-- foo
    -- bar
    -- baz
-- bazz

あなたchroot fooとそうならls /、あなたは表示されます:

-- bar
-- baz

限りls懸念している(とあなたが実行し、他のツール)、それらは、ファイルシステム上のディレクトリのみです。理由「刑務所は」誤った名称がされているchrootことを意図していないというシミュレートされたファイルシステムに滞在するプログラムを、chroot "jail"にあることを知っているプログラムは非常に簡単にエスケープできるchrootため、プログラムがシミュレートされたファイルシステム外のファイルを変更するのを防ぐためのセキュリティ対策として使用しないでください。


16
chroot「刑務所」から逃れる方法の例を持っていると役に立ちます。私が見てきた場合は、 root権限をエスカレート必要です。プロセスがルート権限にエスカレートするのを防ぐのは難しいですか?
CivFan

4
まだ「監禁」であるため、「刑務所」は略記です。「レベル3封じ込めフィールド」の方が良いでしょうか?!
MikeW

4
この用語は、FreeBSDの刑務所から来ています。Jailsはchroot上に構築されています。Jailsは、セキュリティの問題を解決することを目的としてchrootいませんでした。このため、人々はしばしば混同chrootjails同じことを意味します。彼らはしません。彼はクラッカーをキャッチするためにハニーポットを設定する場合、用語「刑務所は」ビル・チェスウィックによって造語されると言われている。csrc.nist.gov/publications/secpubs/berferd.pdf
BugHunterUK

私の場合chroot jail、良いアイデアを使用していないのですか?
-Shafizadeh

10

基本的には、環境のルートディレクトリを変更するだけです。そう

/

になる

/some-jail/ (or whatever directory you want)

アプリケーションが/にアクセスすると、/ some-jail /が取得されます。また、アプリケーションは/ some-jail /から抜け出せないので、マシン上の他のものにはアクセスできません。「私があなたに提供しているものにしかアクセスできず、システム上の他のものにはアクセスできないのです」と言うのはとても簡単な方法です。


6

「いつ、なぜそれを使用するのか?」

1つの用途は、絶対パス参照を作成するスクリプト(ブート時など)をテストすること、またはインターセプトしてログを取りたいコマンドを実行する(そしておそらくそれらを操作しない)ことです-それらのコマンドをしたくない環境で実際に実行環境で動作します。

たとえば、Linuxを実行している組み込みデバイスがある場合、a)実際のデバイスで実行する(デスクトップに優れたツールがあり、デバイスをブリックしたくないため)b)実行することなく、bashの動作を確認したいデスクトップ上で実際に(デスクトップシステムが台無しにされたくないので)

さらに、「chroot jail」に存在しないコマンドまたはシェルスクリプトを実行しようとすると実行がエラーで終了するため、どのコマンドまたは他のスクリプトファイルが使用されているかを検出できます。

(もちろん、全体を把握するには、QEMUまたはDocker、またはVM内で実行できますが、VMイメージなどの作成が必要になります。

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