Командата chroot създава изолирана среда на Linux, като променя основната директория за всички работещи процеси.
Искате ли да стартирате приложения или услуги в изолирано пространство на Linux? Или може би искате да тествате и отстранявате грешки в приложение, без то да пречи на останалата част от вашата система? Ако е така, ще искате да научите за chroot, мощен механизъм, вграден в Linux, който ви позволява да създадете отделна среда във вашата система.
Нека разгледаме подробно chroot, да научим за неговите предимства, случаи на употреба, как да го настроим на Linux система и, ако е необходимо, как да го избегнем.
Какво е chroot в Linux?
chroot или change-root е може би една от най-лесните и древни форми на контейнеризиращ софтуер, който позволява на потребителя безопасно да поставя в пясъчник приложения и услуги. Sandboxing, в компютърна гледна точка, е процес на изолиране на програма в ограничено пространство с предварително дефинирани ресурси.
Ако сте запознати с Docker и как работи, можете да мислите за chroot като за негова силно съкратена версия. chroot работи, като променя основната директория на програмата, ограничава достъпа и видимостта и по този начин осигурява допълнителен слой на изолация и сигурност.
По същество създавате отделна директория, копирате всички зависимости на програмата в новата директория и след това изпълнявате командата chroot. Това позволява на програмата да функционира правилно, докато няма достъп до основната файлова система.
chroot-ването на програма е чудесен начин за тестване на нейната надеждност в безопасно пространство, без да се променят действителните системни файлове. Освен това можете също така да намалите риска за сигурността, причинен от компрометиран пакет, тъй като в chroot среда компрометираният пакет няма да може да осъществява достъп и да променя чувствителни системни файлове.
Програмата ще може да осъществява достъп и да преглежда само файлове, импортирани в chroot директорията, известна още като "chroot jail". Това предпазва програмата и нейните подпроцеси от намеса в основната система.
Какво е chroot затвор?
Chroot затворът е изолирана среда, в която се намират и изпълняват chroot програми. Терминът chroot jail произлиза от концепцията, че процесът и неговите подпроцеси в chroot средата нямат достъп или видимост до основната файлова система и са хванати в границите на chroot с предварително определени ресурси.
Сега, след като концепцията за chroot ви е ясна, нека се захванем практически и да научим как можете да създадете chroot затвор и да създадете процеси в него.
Как да създадете chroot Jail и да изпълнявате програми в него
Chroot jail е по същество директория, която съдържа всички необходими ресурси, файлове, бинарни файлове и други зависимости, които една програма ще трябва да функционира правилно.
Въпреки това, за разлика от обикновената Linux среда, средата на chroot jail е силно ограничена и програмата няма достъп до външни или допълнителни файлове и системни ресурси.
Например, за да стартирате обвивката на Bash в chroot затвор, ще трябва да копирате двоичния файл на Bash и всички негови зависимости в директорията на chroot.
Ето стъпките за създаване на chroot затвор и създаване на Bash shell:
- За да работи една програма успешно, трябва да копирате всички нейни зависимости в chrooted директорията. Нека намерим двоичния файл, в този случай Bash, и местоположението на всички негови зависимости, като използваме командите which и ldd:
който баш
ldd /usr/bin/bash - Сега, след като знаете местоположенията на двоичния файл и неговите зависимости, копирайте ги в директорията, която искате да превърнете в chroot jail. С помощта на командата mkdir създайте необходимите директории и използвайте командата cp, копирайте всички файлове в съответните директории:
mkdir bin lib lib64 && cp -r /lib/ * ./lib && cp -r /lib64/* /lib64/ && cp /bin/bash /bin/
- И накрая, с програмата и нейните зависимости копирани, можете да изпълните командата chroot с повишени привилегии, като използвате префикса sudo, за да създадете chroot среда в избраната директория. По подразбиране ще създаде Bash shell. Ето командата за въвеждане:
sudo chroot име_на_директория
Това са всички стъпки за създаване на chroot затвор и стартиране на програма в него.
Как да се измъкнем от chroot затвор
Докато chroot затворите са добри за тестване на нестабилен софтуер, те също са полезни при работа с SSH връзки, тъй като chroot свързаните потребители е един от многото начини за защита на вашия SSH сървър.
От друга страна, ако сте тестер за проникване и сте влезли в SSH сървъра на вашата цел, установяването, че това е chroot среда може да бъде разочароващо и да се почувствате като задънена улица.
Има обаче доста начини да избягате от неправилно конфигуриран chroot затвор, като някои изискват умения за програмиране на C, докато други могат да бъдат автоматизирани с инструменти. Няколко лесни начина за бягство от chroot са:
- Вложени chroot извиквания
- Вложени chroot извиквания със запазен файлов дескриптор
- Метод на монтиране на root
- procfs бягство
- ptrace бягство
Обърнете внимание, че за да извършите chroot escape с някой от тези методи, ще трябва да имате ескалирани привилегии в системата. Научете повече за тези методологии за бягство, като преминете към GitHub хранилище на chw00t, инструмент за автоматизиране на chroot escape.
Сега знаете всичко за chroot в Linux
Сега, след като знаете какво е chroot, как работи и как да го внедрите, трябва да можете да създавате приложения в пясъчник без усилие от терминала. Имайте предвид, че както знаете, има много начини да излезете от chroot среда.
Това показва, че chroot по никакъв начин не е проектиран да бъде внедрен като защитна функция. Така че трябва да използвате chroot с много внимание, тъй като неправилната конфигурация може да доведе до обратен ефект и да компрометира безопасността на вашата система.
Най-добре е да се придържате към специални решения за пясъчник, като софтуер за контейнеризиране или виртуални машини. И двете са съсредоточени около пясъчника и сигурността, така че освен ако няма нов нулев ден в града, няма да е нужно да се тревожите за сигурността и целостта на вашата система.
Ако не сте сигурни кой да изберете между контейнеризация и софтуер за виртуализация, трябва да изпробвате и двата и да видите сами кой е по-добър.