Linuxでchroot刑務所についてよく耳にしましたが、まだ使用したことがありません(私は日常的にFedoraを使用しています)ので、chroot「刑務所」とは何ですか?いつ/なぜそれを使用する/使用しないのか、他に知っておくべきことがありますか 作成するにはどうすればよいですか?
Linuxでchroot刑務所についてよく耳にしましたが、まだ使用したことがありません(私は日常的にFedoraを使用しています)ので、chroot「刑務所」とは何ですか?いつ/なぜそれを使用する/使用しないのか、他に知っておくべきことがありますか 作成するにはどうすればよいですか?
回答:
chroot刑務所は、プロセスとその子をシステムの他の部分から隔離する方法です。rootユーザーは刑務所から簡単に抜け出すことができるため、rootとして実行されないプロセスにのみ使用する必要があります。
アイデアは、プロセスの実行に必要なすべてのシステムファイルをコピーまたはリンクするディレクトリツリーを作成することです。次に、chroot()
システムコールを使用してルートディレクトリをこの新しいツリーのベースに変更し、そのchrootされた環境で実行中のプロセスを開始します。変更されたルート外のパスを実際に参照できないため、これらの場所で悪意を持って操作(読み取り/書き込みなど)を実行することはできません。
Linuxでは、バインドマウントを使用すると、chrootツリーにデータを入力できます。これを使用すると、たとえば、/lib
など/usr/lib
ではなく、などのフォルダーをプルできます/usr
。必要なディレクトリツリーを、jailディレクトリに作成したディレクトリにバインドするだけです。
firejail
実行されています。
/bin
は、rootユーザーによってインストールされた下にあるバイナリファイルを呼び出すことができますか?@ベン・コンビー
「chroot jail」は、実際に消滅するはずの誤った呼び名ですが、人々はそれを使い続けています。chroot
ファイルシステムのルートとしてファイルシステム上のディレクトリをシミュレートできるツールです。つまり、次のようなフォルダー構造を持つことができます。
-- foo
-- bar
-- baz
-- bazz
あなたchroot foo
とそうならls /
、あなたは表示されます:
-- bar
-- baz
限りls
懸念している(とあなたが実行し、他のツール)、それらは、ファイルシステム上のディレクトリのみです。理由「刑務所は」誤った名称がされているchroot
ことを意図していない力というシミュレートされたファイルシステムに滞在するプログラムを、chroot "jail"にあることを知っているプログラムは非常に簡単にエスケープできるchroot
ため、プログラムがシミュレートされたファイルシステム外のファイルを変更するのを防ぐためのセキュリティ対策として使用しないでください。
chroot
「刑務所」から逃れる方法の例を持っていると役に立ちます。私が見てきた場合は、 root権限をエスカレート必要です。プロセスがルート権限にエスカレートするのを防ぐのは難しいですか?
chroot
いませんでした。このため、人々はしばしば混同chroot
とjails
同じことを意味します。彼らはしません。彼はクラッカーをキャッチするためにハニーポットを設定する場合、用語「刑務所は」ビル・チェスウィックによって造語されると言われている。csrc.nist.gov/publications/secpubs/berferd.pdf
「いつ、なぜそれを使用するのか?」
1つの用途は、絶対パス参照を作成するスクリプト(ブート時など)をテストすること、またはインターセプトしてログを取りたいコマンドを実行する(そしておそらくそれらを操作しない)ことです-それらのコマンドをしたくない環境で実際に実行環境で動作します。
たとえば、Linuxを実行している組み込みデバイスがある場合、a)実際のデバイスで実行する(デスクトップに優れたツールがあり、デバイスをブリックしたくないため)b)実行することなく、bashの動作を確認したいデスクトップ上で実際に(デスクトップシステムが台無しにされたくないので)
さらに、「chroot jail」に存在しないコマンドまたはシェルスクリプトを実行しようとすると実行がエラーで終了するため、どのコマンドまたは他のスクリプトファイルが使用されているかを検出できます。
(もちろん、全体を把握するには、QEMUまたはDocker、またはVM内で実行できますが、VMイメージなどの作成が必要になります。