Щас крутая штука будет, фаер ин зе холл! Будем изолировать пользователя в linux и позволим ему запускать только разрешенные утилиты и команды. Короче говоря закейджим.
Для этого понадобится chroot, заходим под рутом и готовим подопытную папку env:
Папку создали, ок, теперь давай закинем в нее сам интерпретатор bash. После того, как пользователь зайдет на сервер по ssh, запустится bash в изолированной среде.
Чтобы определить, какие библиотеки использует утилита, воспользуемся утилитой ldd.
На экран вывелись библиотеки, которые использует bash
Добавляем в конфиг:
Далее дергаем systemctl restart sshd и пробуем залогиниться на сервер под пользователем:
Самый сок, в том, что никакие команды сейчас не работают, чтобы ты не вводил. Ты можешь лишь посмотреть версию
Для того чтобы добавить в эту клетку другие утилиты, повторяешь трюк с ldd, копируешь бинарник и библиотеки.
Таким образом ты можешь делать кастрированный доступ по ssh, например для своих студентов либо для каких-то публичных квестов.
Давай закрепим и добавим утилиту ls в нашу клетку:
Тема с chroot очень клевая, помимо того, что мы с тобой сейчас провернули, в chroot можно устанавливать полноценные дистрибутивы linux (возможно у тебя был сексуальный опыт с gentoo). Либо примонтировать proc/sys/dev/run с хостовой машины и сделать работу в chroot идеальной. Но это не совсем безопасно, тут уже тебе выбирать, удобство или параною.
А можно сделать 10 папок и 10 пользователей и в каждую папку воткнуть свой дистрибутив. Логинишься под user1 и попадаешь в kali, логинишься под user2 и попадаешь в centos. Ну ты понял.
Ладно, изучай, надеюсь было читабельно. Увидимся завтра!
tags: #linux #bash #utilites
—
💩 @bashdays
Для этого понадобится chroot, заходим под рутом и готовим подопытную папку env:
cd / && mkdir envChroot создает новую среду оболочки, что означает любые изменения, внесенные в эту среду, будут влиять только на файлы и каталоги в среде Chroot, а не на центральную нервную систему.
mkdir /env/{bin,lib,lib64}
Папку создали, ок, теперь давай закинем в нее сам интерпретатор bash. После того, как пользователь зайдет на сервер по ssh, запустится bash в изолированной среде.
Чтобы определить, какие библиотеки использует утилита, воспользуемся утилитой ldd.
ldd /bin/bashКоманда ldd осуществляет вывод списка разделяемых библиотек, используемых исполняемыми файлами или разделяемыми библиотеками.
На экран вывелись библиотеки, которые использует bash
libtinfo.so.6 => /lib/libtinfo.so.6Их нужно закинуть в папку env, вот так:
libc.so.6 => /lib/libc.so.6
/lib64/ld-linux.so.2
cp /usr/bin/bash /env/binВсё. Базовая изоляция готова. Для того чтобы после авторизации на сервере, пользователь попал в изолированную папку, делаем так:
cp /lib/libtinfo.so.6 /env/lib
cp /lib/libc.so.6 /env/lib
cp /lib64/ld-linux.so.2 /env/lib64
Добавляем в конфиг:
/etc/ssh/sshd_config
Match User userВ первой строке, в конце указывает имя пользователя, которого будем изолировать, у меня в системе есть пользователь user, я его и указываю.
ChrootDirectory /env
Далее дергаем systemctl restart sshd и пробуем залогиниться на сервер под пользователем:
ssh [email protected]Если все сделал правильно, то поздравляю, ты изолировал пользователя в системе и должен увидеть командную строку и что-то вроде -bash-5.1$.
Самый сок, в том, что никакие команды сейчас не работают, чтобы ты не вводил. Ты можешь лишь посмотреть версию
bash --version
или другие ее ключи.Для того чтобы добавить в эту клетку другие утилиты, повторяешь трюк с ldd, копируешь бинарник и библиотеки.
Таким образом ты можешь делать кастрированный доступ по ssh, например для своих студентов либо для каких-то публичных квестов.
Давай закрепим и добавим утилиту ls в нашу клетку:
ldd /usr/bin/lsСмотрим зависимости через ldd и копируем их в нашу изолированную папку env. Теперь возвращаемся в терминал к пользователю user и пробуем запустить ls. Опа! Работает! Прекрасно! Попробуй теперь посмотреть файловую систему с помощью ls и убедись в наличии клетки.
cp /usr/bin/ls /env/bin
cp /lib/libselinux.so.1 /env/lib/
cp /lib/libc.so.6 /env/lib/
cp /lib64/ld-linux.so.2 /env/lib64
cp /lib/libpcre2-8.so.0 /env/lib/libpcre2-8.so.0
Тема с chroot очень клевая, помимо того, что мы с тобой сейчас провернули, в chroot можно устанавливать полноценные дистрибутивы linux (возможно у тебя был сексуальный опыт с gentoo). Либо примонтировать proc/sys/dev/run с хостовой машины и сделать работу в chroot идеальной. Но это не совсем безопасно, тут уже тебе выбирать, удобство или параною.
А можно сделать 10 папок и 10 пользователей и в каждую папку воткнуть свой дистрибутив. Логинишься под user1 и попадаешь в kali, логинишься под user2 и попадаешь в centos. Ну ты понял.
Ладно, изучай, надеюсь было читабельно. Увидимся завтра!
tags: #linux #bash #utilites
—