Команда chroot создает изолированную среду в Linux, изменяя корневой каталог для всех запущенных процессов.

Вы хотите запускать приложения или службы в изолированном пространстве в Linux? Или, может быть, вы хотите протестировать и отладить приложение, не мешая работе остальной системы? Если это так, вы захотите узнать о chroot, мощном механизме, встроенном в Linux, который позволяет вам создавать отдельную среду в вашей системе.

Давайте подробно рассмотрим chroot, узнаем о его преимуществах, примерах использования, о том, как настроить его в системе Linux и, если необходимо, как его избежать.

Что такое chroot в Linux?

chroot или change-root, возможно, является одной из самых простых и древних форм программного обеспечения для контейнеризации, которое позволяет пользователю безопасно помещать приложения и службы в песочницу. Песочница, с точки зрения вычислительной техники, — это процесс изоляции программы в ограниченном пространстве с заранее определенными ресурсами.

Если вы знакомы с Докер и как он работает

instagram viewer
, вы можете думать о chroot как о его сильно урезанной версии. chroot работает, изменяя корневой каталог программы, ограничивая доступ и видимость и, таким образом, обеспечивая дополнительный уровень изоляции и безопасности.

По сути, вы создаете отдельный каталог, копируете все зависимости программы в новый каталог, а затем запускаете команду chroot. Это позволяет программе работать правильно, не имея доступа к базовой файловой системе.

chroot для программы — отличный способ проверить ее надежность в безопасном месте без изменения реальных системных файлов. Кроме того, вы также можете снизить риск безопасности, вызванный скомпрометированным пакетом, поскольку в chroot-окружении скомпрометированный пакет не сможет получить доступ и изменить конфиденциальные системные файлы.

Программа сможет получать доступ и просматривать только файлы, импортированные в каталог chroot, также известный как «тюрьма chroot». Это предотвращает вмешательство программы и ее подпроцессов в базовую систему.

Что такое chroot Jail?

Тюрьма chroot — это изолированная среда, в которой находятся и выполняются программы chroot. Термин chroot-тюрьма происходит от концепции, согласно которой процесс и его подпроцессы внутри chroot-окружения не имеют доступа или видимости к базовой файловой системе и находятся в пределах границ chroot с заранее определенными Ресурсы.

Теперь, когда концепция chroot вам ясна, давайте приступим к практике и узнаем, как создать chroot-тюрьму и порождать в ней процессы.

Как создать chroot-тюрьму и запускать в ней программы

Тюрьма chroot — это, по сути, каталог, содержащий все необходимые ресурсы, файлы, двоичные файлы и другие зависимости, которые необходимы программе для правильной работы.

Однако, в отличие от обычной среды Linux, среда chroot-тюрьмы сильно ограничена, и программа не может получить доступ к внешним или дополнительным файлам и системным ресурсам.

Например, чтобы запустить оболочку Bash в chroot-тюрьме, вам потребуется скопировать двоичный файл Bash и все его зависимости в каталог chroot.

Вот шаги для создания chroot-тюрьмы и запуска оболочки Bash:

  1. Чтобы программа работала успешно, вам необходимо скопировать все ее зависимости в каталог chroot. Найдем бинарный файл, в данном случае Bash, и расположение всех его зависимостей с помощью команд which и ldd:
    какой удар
    ldd /usr/bin/bash
  2. Теперь, когда вы знаете расположение двоичного файла и его зависимостей, скопируйте их в каталог, который вы хотите превратить в chroot-тюрьму. С помощью команды mkdir создайте необходимые каталоги и с помощью команда ср, скопируйте все файлы в соответствующие каталоги:
    mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
  3. Наконец, когда программа и ее зависимости скопированы, вы можете запустить команду chroot с повышенными привилегиями, используя префикс sudo, чтобы создать среду chroot в выбранном каталоге. По умолчанию он порождает оболочку Bash. Вот команда для ввода:
    sudo chroot имя_каталога

Это все шаги по созданию chroot-тюрьмы и запуску программы внутри нее.

Как вырваться из chroot-тюрьмы

Хотя chroot-тюрьмы хороши для тестирования нестабильного программного обеспечения, они также полезны при работе с SSH-соединениями, поскольку chroot-подключение подключенных пользователей является одним из многих способы защитить свой SSH-сервер.

С другой стороны, если вы тестировщик на проникновение и зашли на SSH-сервер вашей цели, обнаружение среды с chroot может разочаровать и показаться тупиком.

Тем не менее, существует довольно много способов выбраться из неправильно сконфигурированной тюрьмы chroot, некоторые из них требуют навыков программирования на C, а другие можно автоматизировать с помощью инструментов. Вот несколько простых способов выхода из chroot:

  • Вложенные вызовы chroot
  • Вложенные вызовы chroot с сохраненным файловым дескриптором
  • Метод монтирования root
  • побег procfs
  • побег

Обратите внимание, что для выполнения побега из chroot любым из этих методов вам потребуются повышенные привилегии в системе. Узнайте больше об этих методологиях побега, перейдя на GitHub-репозиторий chw00t, инструмент автоматизации выхода из chroot.

Теперь вы знаете все о chroot в Linux

Теперь, когда вы знаете, что такое chroot, как он работает и как его реализовать, вы сможете без особых усилий помещать приложения в песочницу из терминала. Имейте в виду, что, как вы знаете, есть несколько способов выйти из chroot-окружения.

Это говорит о том, что chroot никоим образом не предназначался для реализации в качестве функции безопасности. Таким образом, вы должны использовать chroot с большой осторожностью, поскольку неправильная конфигурация может привести к неприятным последствиям и поставить под угрозу безопасность вашей системы.

Лучше всего придерживаться специализированных решений для песочницы, таких как программное обеспечение для контейнеризации или виртуальные машины. Оба они сосредоточены на песочнице и безопасности, поэтому, если в городе не будет нового нулевого дня, вам не нужно беспокоиться о безопасности и целостности вашей системы.

Если вы не уверены, что выбрать между программным обеспечением для контейнеризации и виртуализации, попробуйте оба и убедитесь сами, какой из них лучше.