Простой и легкий способ тюрьмы пользователей

33

Мне нужен простой и легкий способ сажать пользователей в домашние каталоги в Oneiric. У вас есть простая конфигурация для тюрьмы пользователей, с полной помощью или хорошими веб-ссылками?

Я хотел бы предложить онлайн бесплатный публичный сервер с 10-20 ГБ свободного места. Я не знаю, сколько пользователей. Я хочу дать им SSH и SFTP, чтобы они могли подключаться через FileZilla.

Один ноль
источник
2-е обновление, если пользователи не заблокированы в домашних каталогах
One Zero
тогда я полагаю, что вы 1 - как уже упоминалось @Marco, вы хотите попробовать ChrootDirectory для SSH 2 - вы можете пойти дальше стандартных способов работы, поскольку вам нужно масштабировать это для обработки «большого» объема памяти, ... 3- SSH ваш лучший выбор? людям нужен SSH на вашем сервисе? 4- Удачи
Али
1
у меня есть и другой план .... для обычных пользователей мы будем предлагать только SFTP с МОЕЙ БЕЗОПАСНОЙ ОБОЛОЧКОЙ, это очень просто 2 ручки
One Zero
Как я могу удалить этот джейл, например (home / jail)? <br> И когда я добавлю какой-нибудь джейл раздел, например, jk_init -v -f / home / jail netutils, как мне это удалить?

Ответы:

23

Jailkit - это набор утилит, которые могут ограничивать учетные записи пользователей определенным деревом каталогов и конкретными командами. Настроить джейл намного проще, используя утилиты Jailkit, которые делают это «вручную». Тюрьма - это дерево каталогов, которое вы создаете в своей файловой системе; пользователь не может видеть никаких каталогов или файлов, которые находятся за пределами каталога тюрьмы. Пользователь находится в тюрьме в этом каталоге и его подкаталогах.

Скачать и установить:

http://olivier.sessink.nl/jailkit/index.html#download

VERSION=2.20 # from November 2018
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-$VERSION.tar.gz
tar -zxvf jailkit-$VERSION.tar.gz
cd jailkit-$VERSION/
./configure
make
su -
make install

Настройка тюрьмы

Теперь пришло время настроить каталог тюрьмы. Заключенные в тюрьму пользователи увидят этот каталог как корневой каталог сервера. Я решил использовать / home / jail:

mkdir /home/jail
chown root:root /home/jail

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

jk_init -v /home/jail basicshell
jk_init -v /home/jail netutils
jk_init -v /home/jail ssh
jk_init -v /home/jail jk_lsh

Добавить пользователя

Добавьте нового пользователя с домашним каталогом и оболочкой bash и установите пароль:

useradd -d /home/jailtest -m jailtest -s /bin/bash
passwd jailtest

Теперь пришло время посадить этого пользователя в тюрьму

используйте следующую команду:

jk_jailuser -m -j /home/jail jailtest

Вы /etc/passwdдолжны содержать что-то вроде этого сейчас:

jailtest:x:1001:1001::/home/jail/./home/jailtest:/usr/sbin/jk_chrootsh

Включить Bash

Используя jk_cp, библиотеки bash копируются в тюрьму:

jk_cp -v -f /home/jail /bin/bash

редактировать /home/jail/etc/passwd

замените эту строку:

jailtest:x:1001:1001::test:/usr/sbin/jk_lsh

с этим:

jailtest:x:1001:1001::/home/jailtest:/bin/bash

Обслуживание

С помощью jk_updateобновлений в реальной системе можно обновлять в тюрьме.

Пробный прогон покажет, что происходит:

jk_update -j /home/jail -d

Без аргумента -d выполняется реальное обновление. Больше операций обслуживания можно найти здесь.

(В случае, если /home/jail/optотсутствует, создайте его mkdir -p /home/jail/opt/ и запустить jk_update -j /home/jailснова)

Предоставить доступ к другим каталогам

Вы можете смонтировать специальные папки, к которым теперь может обратиться пользователь тюрьмы. Например:

mount --bind /media/$USER/Data/ /home/jail/home/jailtest/test/

Помощь принята

http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html

http://olivier.sessink.nl/jailkit/index.html#intro (очень хорошая помощь)

Этот тоже

Это было проверено и проверено, работает должным образом

Один ноль
источник
+1 очень хорошо. Настоятельно рекомендуем прочитать ссылки, которые вы упомянули выше в разделе «Помощь взята»
cwd
2
Это не работает в Ubuntu 13.10. Когда вы попытаетесь наконец войти в систему, вы сразу же получите приветственное сообщение, после чего соединение будет закрыто.
Matt H
Мэтт Х: обязательно следуйте последним двум шагам; копирование двоичных файлов bash и редактирование файла / home / jail / etc / passwd.
ОНОЗ
2
Это либо больше не работает, либо что-то изменилось с тех пор, как было написано это руководство. У меня точно такие же проблемы, как у Мэтта.
Джеймс Хилд
У меня также была проблема с закрытием соединения сразу после приветственного сообщения. Я изменил оболочку входа в файл chroot passwd с jk_lsh на bash, как описано здесь linuxquestions.org/questions/linux-software-2/… Это не решение, а обходной путь!
Аттила Фулоп
6

Вы не можете ограничить их / home, поскольку им нужен доступ к системным двоичным файлам, файлам bash и конфигурации в / etc

ИМО самый простой способ защиты пользователей - это использовать apparmor.

Вы делаете жесткую ссылку

ln /bin/bash /usr/local/bin/jailbash

Вы добавляете джейлбэш в / etc / shells

Затем вы назначаете jailbash для пользовательской оболочки, а затем пишете профиль apparmor для jailbash, предоставляя минимальный доступ.

sudo chsh -s /usr/local/bin/jailbash user_to_confine

Вы должны будете написать профиль apparmor самостоятельно, но у меня есть профиль, с которого вы могли бы потенциально начать

http://bodhizazen.com/aa-profiles/bodhizazen/ubuntu-10.04/usr.local.bin.jailbash

пантера
источник
You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etcНичто не мешает вам связывать / копировать файлы, которые вам нужны.
user606723
1
Да, вы можете «делать» так, как предлагает пользователь 606723, но это не так просто, и IMO из всех возможных решений наименее практичен или прост. Можно также создать chroot или использовать lxc. Вы копируете бинарный файл, затем библиотеку. Часто вам нужно вручную идентифицировать библиотек с помощью ldd. Этот метод требует огромной работы для настройки. И тогда вы должны держать джейл в актуальном состоянии, вам придется вручную обновлять (копировать) двоичные файлы / библиотеки. Ссылки могут работать лучше с точки зрения обновлений, но вам все равно нужно настроить их все. Почему-то я не думаю, что это то, что имел в виду ОП. Как тогда держать их взаперти?
Пантера
1
Я думаю, что весь вопрос заключался в том, чтобы указать инструменты для автоматизации этого процесса ... как jailkitинструмент, который упоминает ОП.
user606723
@ bodhi.zazen. что вы думаете об этом .. debootstrap (oneiric) затем создайте контейнер, используя lxc. используя тюремный комплект> пользователь в контейнер>. то, что я сделал до сих пор, это то, что у меня есть debirbootstrap oneiric минимум, тогда я использовал jailkit> отлично работает
One Zero
Вы можете использовать LXC для этой задачи, помните, что изоляция иногда не завершена с LXC. Пока пользователи не имеют root-доступа в контейнере, вы должны быть в порядке, и вы можете подписаться на список рассылки LXC.
Пантера
1

Трудно догадаться, какую цель вы хотите достичь. Если вы хотите запретить ssh / sftp при предоставлении доступа в тюрьму через FTP ... просто:

Добавьте в / etc / shells новую оболочку:

sudo -e /etc/shells

Добавьте одну строку:

/bin/false

Сохранить. Для каждого пользователя, которому вы хотите запретить ssh / sftp, измените оболочку пользователя:

sudo chsh -s /bin/false userx

Теперь userx не может войти через ssh / sftp.

Установите vsftpd:

sudo apt-get install vsftpd

Отредактируйте файл конфигурации:

sudo -e /etc/vsftpd.conf

И некоторые изменения ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Сохранить. Перезапустите vsftpd:

sudo /etc/init.d/vsftpd restart

источник
ну я хочу дать им ssh + sftp (подключиться через filezilla)
One Zero
0

Вы можете проверить rbashв качестве оболочки для ваших пользователей.

man bash

Искать RESTRICTED SHELL разделу

Или посмотрите на этой странице http://linux.die.net/man/1/bash

Карлсон
источник
3
Просто будьте очень осторожны с rbash, его очень легко вырвать и считать устаревшим. См. Blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Пантера
@ bodhi.zazen Вы имеете в виду rbash?
Карлсон
да, извините, я исправил это. Несколько лет назад был блог, в котором кто-то сломал нашу rbash-тюрьму, которую я установил, и, хотя она была жесткой, минимальной. Взял их менее чем за 5 минут. Никто не вырвался из джейлбэша.
Пантера
Можете ли вы сказать мне, пожалуйста, как я могу настроить его .... Jailbash
One Zero
да, man bash помогает, проще использовать возможности bash с ограниченным доступом
c4f4t0r