Linux の chroot とは何ですか?また、どのように機能しますか?

Linux の chroot とは何ですか?また、どのように機能しますか?
あなたのような読者が MUO をサポートします。当社サイトのリンクを使用して商品を購入すると、アフィリエイト手数料が発生する場合があります。 続きを読む。

Linux 上の隔離されたスペースでアプリケーションやサービスを実行したいと考えていますか?あるいは、システムの他の部分に干渉することなくアプリケーションをテストおよびデバッグしたいと考えているでしょうか?もしそうなら、chroot について学ぶとよいでしょう。chroot は、システム内に別の環境を作成できるようにする Linux に組み込まれた強力なメカニズムです。





その日のメイクアップビデオ スクロールしてコンテンツを続けてください

chroot を詳しく調べて、その利点、使用例、Linux システム上でのセットアップ方法、および必要に応じてそれをエスケープする方法について学びましょう。





Linux の chroot とは何ですか?

  chroot コマンドのデモンストレーション

chroot または change-root はおそらく、ユーザーがアプリケーションとサービスを安全にサンドボックス化できるようにする最も簡単で古い形式のコンテナ化ソフトウェアの 1 つです。コンピューティング用語でのサンドボックス化は、事前に定義されたリソースを使用して限られた空間にプログラムを隔離するプロセスです。





ご存知の方は Docker とその仕組み , chroot は、大幅に機能が削減されたバージョンと考えることができます。 chroot は、プログラムのルート ディレクトリを変更し、アクセスと可視性を制限することで機能し、分離とセキュリティの追加層を提供します。

基本的には、別のディレクトリを作成し、すべてのプログラムの依存関係を新しいディレクトリにコピーして、chroot コマンドを実行します。これにより、ベース ファイル システムにアクセスしなくても、プログラムは適切に機能することができます。



プログラムの chroot は、実際のシステムのファイルを変更せずに、安全な場所でプログラムの信頼性をテストする優れた方法です。さらに、chroot 環境では、侵害されたパッケージは機密システム ファイルにアクセスして変更することができないため、パッケージの侵害によって引き起こされるセキュリティ リスクも軽減できます。

プログラムは、chrooted ディレクトリ (別名「chroot 刑務所」) にインポートされたファイルにのみアクセスして表示できます。これにより、プログラムとそのサブプロセスが基本システムに干渉することがなくなります。





chroot 刑務所とは何ですか?

chroot ジェイルは、chroot プログラムが常駐して実行される隔離された環境です。 chroot ジェイルという用語は、chroot 環境内のプロセスとそのサブプロセスはベース ファイル システムへのアクセスや可視性を持たず、事前に決定されたリソースを持つ chroot の範囲内に閉じ込められるという概念に由来しています。

chroot の概念は理解できたので、実際に chroot ジェイルを作成し、その中にプロセスを生成する方法を学びましょう。





chroot Jail を作成してその中でプログラムを実行する方法

  ディレクトリを chroot して bash-1 を生成する

chrootjail は基本的に、プログラムが適切に機能するために必要なすべてのリソース、ファイル、バイナリ、およびその他の依存関係を含むディレクトリです。

ただし、通常の Linux 環境とは異なり、chrootjail の環境は非常に制限されており、プログラムは外部または追加のファイルやシステム リソースにアクセスできません。

たとえば、chroot ジェイルで Bash シェルを実行するには、Bash バイナリとそのすべての依存関係を chroot ディレクトリにコピーする必要があります。

ビデオゲームで生計を立てる方法

chroot ジェイルを作成し、Bash シェルを生成する手順は次のとおりです。

  1. プログラムを正常に実行するには、そのすべての依存関係を chrooted ディレクトリにコピーする必要があります。 where コマンドと ldd コマンドを使用して、バイナリ (この場合は Bash) とそのすべての依存関係の場所を見つけてみましょう:
     which bash 
    ldd /usr/bin/bash
  2. バイナリとその依存関係の場所がわかったので、それらを chroot ジェイルにしたいディレクトリにコピーします。 mkdir コマンドを使用して必要なディレクトリを作成し、次を使用します。 cpコマンド すべてのファイルを対応するディレクトリにコピーします:
     mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
  3. 最後に、プログラムとその依存関係をコピーしたら、sudo プレフィックスを使用して昇格された特権で chroot コマンドを実行し、選択したディレクトリに chroot 環境を作成できます。デフォルトでは、Bash シェルが生成されます。入力するコマンドは次のとおりです:
     sudo chroot directory_name

chroot ジェイルを生成し、その中でプログラムを実行する手順はこれですべてです。

chroot 刑務所から抜け出す方法

chroot ジェイルは不安定なソフトウェアをテストするのに適していますが、接続ユーザーの chroot は数多くの接続の 1 つであるため、SSH 接続を処理する場合にも便利です。 SSHサーバーを保護する方法 。

逆に、あなたがペネトレーション テスターで、ターゲットの SSH サーバーにログインしている場合、それが chroot 環境であることが判明するとイライラし、行き止まりのように感じる可能性があります。

ただし、誤って設定された chroot ジェイルから抜け出す方法は非常にたくさんあり、C プログラミングのスキルが必要なものもあれば、ツールを使用して自動化できるものもあります。 chroot エスケープの簡単な方法は次のとおりです。

  • ネストされた chroot 呼び出し
  • 保存されたファイル記述子を使用したネストされた chroot 呼び出し
  • ルートのマウント方法
  • procfs エスケープ
  • プトレースエスケープ

これらの方法のいずれかを使用して chroot エスケープを実行するには、システム内で昇格された権限が必要になることに注意してください。これらの脱出方法の詳細については、次のリンクを参照してください。 chw00t の GitHub リポジトリ 、chrootエスケープ自動化ツール。

これで Linux の chroot についてすべてわかりました

chroot とは何か、その仕組み、実装方法がわかったので、ターミナルからアプリケーションを簡単にサンドボックス化できるはずです。ご存知のとおり、chroot 環境から抜け出す方法は複数あることに留意してください。

これは、chroot がセキュリティ機能として実装されるように設計されていないことを示しています。したがって、不適切な構成は逆効果となり、システムの安全性が損なわれる可能性があるため、chroot を使用する際は十分な注意が必要です。

コンテナ化ソフトウェアや仮想マシンなどの専用のサンドボックス ソリューションを使用するのが最善です。どちらもサンドボックスとセキュリティを中心にしているため、新たなゼロデイが発生しない限り、システムのセキュリティと整合性について心配する必要はありません。

コンテナ化ソフトウェアと仮想化ソフトウェアのどちらを選択すればよいかわからない場合は、両方を試して、どちらが優れているかを自分の目で確認してください。