监禁用户的简单方法

One*_*ero 39 ssh users chroot

我需要一种简单易行的方法将用户关在 Oneiric 的主目录中。您是否有用于监禁用户的简单配置、完整的帮助或一些好的网络链接?

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

One*_*ero 26

Jailkit 是一组实用程序,可以将用户帐户限制为特定目录树和特定命令。使用 Jailkit 实用程序“手动”设置监狱要容易得多。监狱是您在文件系统中创建的目录树;用户无法看到 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
Run Code Online (Sandbox Code Playgroud)

设置监狱

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

mkdir /home/jail
chown root:root /home/jail
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

添加用户

添加一个具有主目录和 bash shell 的新用户,并设置密码:

useradd -d /home/jailtest -m jailtest -s /bin/bash
passwd jailtest
Run Code Online (Sandbox Code Playgroud)

现在是时候监禁这个用户了

使用以下命令:

jk_jailuser -m -j /home/jail jailtest
Run Code Online (Sandbox Code Playgroud)

/etc/passwd现在应该包含这样的内容:

jailtest:x:1001:1001::/home/jail/./home/jailtest:/usr/sbin/jk_chrootsh
Run Code Online (Sandbox Code Playgroud)

启用 bash

通过使用jk_cp将 bash 库复制到监狱:

jk_cp -v -f /home/jail /bin/bash
Run Code Online (Sandbox Code Playgroud)

编辑 /home/jail/etc/passwd

替换这一行:

jailtest:x:1001:1001::test:/usr/sbin/jk_lsh
Run Code Online (Sandbox Code Playgroud)

有了这个:

jailtest:x:1001:1001::/home/jailtest:/bin/bash
Run Code Online (Sandbox Code Playgroud)

维护

通过jk_update在真实系统上使用更新,可以在jail 中更新。

试运行将显示正在发生的事情:

jk_update -j /home/jail -d
Run Code Online (Sandbox Code Playgroud)

如果没有 -d 参数,将执行真正的更新。可以在此处找到更多维护操作。

(如果/home/jail/opt丢失,请使用mkdir -p /home/jail/opt/jk_update -j /home/jail再次运行创建它)

授予访问其他目录的权限

您可以挂载特殊文件夹,jail 用户现在可以访问这些文件夹。例如:

mount --bind /media/$USER/Data/ /home/jail/home/jailtest/test/
Run Code Online (Sandbox Code Playgroud)

采取的帮助

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

http://olivier.sessink.nl/jailkit/index.html#intro(非常好的帮助)

这个也

这已经过检查和验证,工作正常

  • 这不适用于 Ubuntu 13.10。当您尝试最终登录时,您会立即收到欢迎消息,然后连接关闭。 (2认同)
  • 这要么不再起作用,要么自本教程发布以来发生了一些变化。我遇到了与 MattH 完全相同的问题。 (2认同)

Pan*_*her 6

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

IMO 保护用户的最简单方法是使用 apparmor。

你做了一个硬链接

ln /bin/bash /usr/local/bin/jailbash
Run Code Online (Sandbox Code Playgroud)

您将 jailbash 添加到 /etc/shells

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

sudo chsh -s /usr/local/bin/jailbash user_to_confine
Run Code Online (Sandbox Code Playgroud)

你将不得不自己写一个 apparmor 配置文件,但我有一个你可以开始的配置文件

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

  • 是的,您“可以”按照 user606723 的建议进行操作,但这并不那么容易,而且在我看来,所有潜在解决方案中最不实用或最简单的。不妨构建一个 chroot 或使用 lxc。您复制二进制文件,然后复制库。通常,您需要手动使用 ldd 来识别库。这种方法需要大量的工作来设置。然后你必须保持监狱最新,你将必须手动更新(复制)二进制文件/库。链接在更新方面可能效果更好,但您仍然需要将它们全部设置好。不知怎的,我不认为这是OP的初衷。那么如何限制他们呢? (2认同)