ЧТО ТАКОЕ CHROOT JAIL И КАК ЭТИМ ПОЛЬЗОВАТЬСЯ

Thank you for reading this post, don't forget to subscribe!

Тер­мин chroot jail появил­ся еще в 1992 году но часто исполь­зу­ет­ся сего­дня. Что же это озна­ча­ет и для чего исполь­зу­ет­ся эта операция?

ЧТО ТАКОЕ CHROOT JAIL?

Chroot (сокра­ще­ние от change root) - это опе­ра­ция Unix, кото­рая изме­ня­ет види­мый кор­не­вой ката­лог на тот, кото­рый задан пользователем.

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

ДЛЯ ЧЕГО ИСПОЛЬЗУЕТСЯ CHROOT JAIL?

Chroot jail исполь­зу­ет­ся для созда­ния огра­ни­чен­ной «песоч­ни­цы» для запус­ка про­цес­са. Это озна­ча­ет, что про­цесс не может зло­на­ме­рен­но изме­нять дан­ные за пре­де­ла­ми пред­пи­сан­но­го дере­ва каталогов.

Еще одно при­ме­не­ние chroot jail - это заме­на вир­ту­аль­ным маши­нам. Этот метод назы­ва­ет­ся вир­ту­а­ли­за­ци­ей на уровне ядра и тре­бу­ет мень­ше ресур­сов, чем вир­ту­аль­ные маши­ны. Эта опе­ра­ция поз­во­ля­ет поль­зо­ва­те­лям созда­вать несколь­ко изо­ли­ро­ван­ных инстан­сов в одной системе.

КАК ИСПОЛЬЗОВАТЬ CHROOT JAIL

Рас­смот­рим на при­ме­ре как создать и настро­ить chroot jail, что­бы он мог запус­кать коман­ды bash и ls.

1. Создай­те новый ката­лог с име­нем chroot_jail:

mkdir chroot_jail

Если мы попы­та­ем­ся исполь­зо­вать chroot на этом ката­ло­ге, мы полу­чим сле­ду­ю­щий вывод:

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

2. Создай­те новое дере­во под­ка­та­ло­гов внут­ри chroot_jail:

mkdir -p chroot_jail/bin chroot_jail/lib64/x86_64-linux-gnu  chroot_jail/lib/x86_64-linux-gnu

В этих под­ка­та­ло­гах будут хра­нить­ся все необ­хо­ди­мые эле­мен­ты команд bash и ls.

3. Исполь­зо­ва­ние коман­ды cp с коман­дой which поз­во­ля­ет копи­ро­вать коман­ды bash и ls без ука­за­ния пути, из кото­ро­го вы копируете.

Для это­го используйте:

cp $(which ls) chroot_jail/bin/
cp $(which bash) chroot_jail/bin/

При­ме­ча­ние. Если ваша коман­да bash или ls име­ет псев­до­ним, вам необ­хо­ди­мо снять его перед копи­ро­ва­ни­ем. Исполь­зуй­те unalias [command], где [command] - это имя коман­ды, кото­рую вы хоти­те удалить.

4. Что­бы bash и ls рабо­та­ли в новой кор­не­вой пап­ке, добавь­те все свя­зан­ные биб­лио­те­ки в chroot_jail/libraries. Исполь­зуй­те коман­ду ldd, что­бы узнать, какие биб­лио­те­ки свя­за­ны с какой командой:

ldd $(which bash)
ldd $
(which ls)

5. Ско­пи­руй­те соот­вет­ству­ю­щие биб­лио­те­ки в под­ка­та­ло­ги lib и lib64.

Для коман­ды bash:

cp /lib/x86_64-linux-gnu/libtinfo.so.6 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/
cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/

Для коман­ды ls:

cp /lib/x86_64-linux-gnu/libselinux.so.1 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libc.so.6 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libpcre2-8.so.0 chroot_jail/lib/x86_64-linux-gnu/
cp /lib/x86_64-linux-gnu/libdl.so.2 chroot_jail/lib/x86_64-linux-gnu/
cp /lib64/ld-linux-x86-64.so.2 chroot_jail/lib64/
cp /lib/x86_64-linux-gnu/libpthread.so.0 chroot_jail/lib/x86_64-linux-gnu/

6. Исполь­зуй­те коман­ду chroot, что­бы изме­нить root на ката­лог chroot_jail:

sudo chroot chroot_jail

При­ме­ча­ние. При изме­не­нии кор­не­во­го ката­ло­га на ката­лог chroot_jail запус­ка­ет­ся новый экзем­пляр обо­лоч­ки bash.

Исполь­зуй­те коман­ду ls, что­бы выве­сти спи­сок всех фай­лов и ката­ло­гов в новом кор­не­вом дере­ве каталогов:

ls -R

7. Как толь­ко вы закон­чи­те исполь­зо­вать новую кор­не­вую пап­ку, вый­ди­те из оболочки:

exit

После выпол­не­ния это­го руко­вод­ства вы смо­же­те настро­ить chroot jail вме­сте с необ­хо­ди­мы­ми ресур­са­ми для запус­ка про­цес­сов и команд в новом кор­не­вом каталоге.