ホームページ >システムチュートリアル >Linux >Linux の chroot コマンド: 隔離された空間でアプリケーションを実行およびテストする方法

Linux の chroot コマンド: 隔離された空間でアプリケーションを実行およびテストする方法

PHPz
PHPz転載
2024-02-12 12:12:031059ブラウズ

Linux 愛好家であれば、システムにさまざまなアプリケーションやサービスをインストールまたはアンインストールすることが必要になることがよくあります。しかし、すべてのアプリケーションやサービスは、他のソフトウェア パッケージによって提供される共有オブジェクト ファイルに依存していることをご存知ですか?これらのオブジェクト ファイルが見つからないか破損している場合、アプリケーションやサービスが正しく動作しないか、起動できない可能性があります。したがって、隔離された空間でアプリケーションやサービスを実行およびテストする方法を知ることは、Linux システムの保守と最適化に役立つ非常に便利なスキルです。この記事では、chroot と呼ばれる強力なコマンド ライン ツールを紹介します。このツールを使用すると、Linux 上に独立した環境を作成し、その中でアプリケーションやサービスを実行およびテストできます。

Linux の chroot とは何ですか?

chroot を詳しく調べて、その利点、使用シナリオ、Linux システム上でのセットアップ方法、必要に応じて環境から抜け出す (chroot) 方法を理解しましょう。

chroot は、change-root であり、おそらく最も単純かつ最も古いコンテナ化ソフトウェアの 1 つであり、ユーザーがアプリケーションとサービスを安全に分離できるようにします。コンピューティング用語で言えば、分離とは、事前に定義されたリソースを備えた制限された空間にプログラムを閉じ込めることです。

Docker とその仕組みに精通している場合は、chroot をその大幅に簡略化したバージョンと考えることができます。 chroot は、プログラムのルート ディレクトリを変更し、アクセスと可視性を制限することにより、分離とセキュリティの追加層を提供します。

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

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

プログラムは、chroot ディレクトリ (「chrootjail」とも呼ばれる) にインポートされたファイルにのみアクセスして表示できます。これにより、プログラムとその子プロセスが基盤となるシステムの動作に干渉するのを防ぎます。

chroot 刑務所とは何ですか?

chroot ジェイルは、chroot プログラムが実行される隔離された環境です。 chrootjail という用語は、chroot 環境内のプロセスとその子プロセスが基礎となるファイル システムにアクセスしたり表示したりすることができず、chroot 用に予約されたリソースに制限されるという概念に由来しています。

chroot の概念を明確に理解したところで、実際に chroot ジェイルを作成し、その中でプログラムを実行する方法を学びましょう。

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

chroot ジェイル (chroot ジェイル) は、本質的には、プログラムが適切に実行されるために必要なすべてのリソース、ファイル、バイナリ、およびその他の依存関係が含まれるディレクトリです。

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

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

以下は、chrootjail を作成し、Bash シェルを生成する手順です:

1. プログラムを正常に実行するには、そのすべての依存関係を chroot ジェイルのディレクトリにコピーする必要があります。 where および ldd コマンドを使用して、バイナリ (この場合は Bash) とそのすべての依存関係の場所を見つけてみましょう。 リーリー

Linux の chroot コマンド: 隔離された空間でアプリケーションを実行およびテストする方法2. バイナリとその依存関係の場所がわかったので、それらを chrootjail に変換するディレクトリにコピーします。 mkdir コマンドを使用して必要なディレクトリを作成し、cp コマンドを使用してすべてのファイルを対応するディレクトリにコピーします。
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* ./lib64/ && cp /bin/bash /bin/
Linux の chroot コマンド: 隔離された空間でアプリケーションを実行およびテストする方法

3、最后,当程序和它的依赖项复制完成后,你可以使用 sudo 前缀以提升的权限运行 chroot 命令,在所选择的目录中生成 chroot 环境。默认情况下,它将生成一个Bash shell。下面是要输入的命令:

linuxmi@linuxmi:~$ sudo chroot www.linuxmi.com
Linux の chroot コマンド: 隔離された空間でアプリケーションを実行およびテストする方法

这就是生成chroot监狱并在其中运行程序的所有步骤。

如何逃离chroot监狱

虽然 chroot 监狱对于测试不稳定的软件很有用,但在处理 SSH 连接时也很有用,因为将连接的用户设置为 chroot 环境是保护 SSH 服务器的众多方法之一。

另一方面,如果你是一名渗透测试人员,并且已登录到目标的 SSH 服务器,发现它是一个 chroot 环境,可能会感到沮丧,感觉走投无路。

然而,有很多方法可以逃离错误配置的 chroot 狱,有些方法需要 C 编程技巧,而其他方法可以使用工具自动化。一些简单的 chroot 逃逸方法包括:

  • 嵌套的 chroot 调用
  • 带有保存的文件描述符的嵌套 chroot 调用
  • 根目录挂载方法
  • procfs 逃逸
  • ptrace 逃逸

请注意,要使用这些方法之一进行 chroot 逃逸,你需要在系统中具有升级的特权。通过访问 chw00t 的 GitHub 存储库,你可以了解更多关于这些逃逸方法的信息,那是一个 chroot 逃逸自动化工具。

现在你应该对 Linux 中的 chroot 了如指掌了

通过本文的介绍,我们了解了chroot是什么、它是如何工作的以及如何实现它,我们还学习了如何创建chroot监狱并在其中执行应用程序或服务,以及如何逃离chroot监狱。chroot是一个简单而强大的工具,可以让你在安全和隔离的空间中运行和测试应用程序或服务。请记住,chroot并不是一个完美的安全解决方案,它有一些局限性和缺陷,因此你应该谨慎地使用它,并结合其他的沙盒或虚拟化技术来提高你的系统的安全性和稳定性。

以上がLinux の chroot コマンド: 隔離された空間でアプリケーションを実行およびテストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlxlinux.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。