简单易行的监禁用户的方法

简单易行的监禁用户的方法

我需要一种简单易行的方法,在 Oneiric 中将用户关在他们的主目录中。您是否有一个简单的用户关押配置,提供完整的帮助,或者一些好的网络链接?

我将提供一个在线免费公共服务器,其中有 10 到 20 GB 的免费空间。我不知道有多少用户。我想为他们提供 SSH 和 SFTP,以便他们可以通过 FileZilla 进行连接。

答案1

Jailkit 是一组实用程序,可以将用户帐户限制在特定目录树和特定命令中。使用 Jailkit 实用程序设置 jail 比“手动”设置要容易得多。jail 是您在文件系统中创建的目录树;用户无法看到 jail 目录之外的任何目录或文件。用户被关押在该目录及其子目录中。

下载并安装:

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

设置监狱

现在是时候设置 jail 目录了。被监禁的用户将看到此目录作为服务器的根目录。我选择使用 /home/jail:

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

jk_init 可用于快速创建一个jail,其中包含特定任务或配置文件所需的几个文件或目录(单击它并阅读完整详细信息)。

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 shell 的新用户,并设置密码:

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_cpbash 库被复制到 jail 中:

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(非常有帮助)

这一个也

已检查并验证,运行正常

答案2

您不能将它们限制在 /home 中,因为它们需要访问 /etc 中的系统二进制文件、bash 和配置文件

我认为保护用户安全的最简单方法是使用 apparmor。

你创建了硬链接

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

您将 jailbash 添加到 /etc/shells

然后,您将 jailbash 分配给用户 shell,然后为 jailbash 编写一个 apparmor 配置文件,允许最少的访问。

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

你必须自己编写一个 apparmor 配置文件,但我有一个你可以使用的配置文件

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

答案3

很难猜测你想要实现什么目的。如果是拒绝 ssh/sftp,同时通过 FTP 提供受限访问……很简单:

向 /etc/shells 添加一个新 shell:

sudo -e /etc/shells

添加一行:

/bin/false

保存。对于您想要拒绝 ssh/sftp 的每个用户,更改用户的 shell:

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

答案4

rbash你可以作为你的用户的 shell 来签出。

man bash

搜索RESTRICTED SHELL部分

或者查看此页面http://linux.die.net/man/1/bash

相关内容