限制用户通过 SSH 登录到某个目录

限制用户通过 SSH 登录到某个目录

当用户使用 SSH 连接时,我无法将用户限制到固定目录

我希望用户限制在 /var/www/home 但我自己连接并且他们可以在系统中自由移动

我将主目录设置为 /var/www/home,以便它们在登录时转到那里,但这并不限制它们。

我已经根据谷歌的建议尝试了一些东西,但到目前为止似乎没有任何效果/做我想做的事

例如我已将www的chmod更改为755并且root拥有但仍然没有效果

答案1

你需要设立一个“监狱”。从这里:

第 1 步:设置监狱空间

新建一个目录:

mkdir -p /home/test

查找支持会话所需的文件。理想情况下,您只需要最低限度的内容,因为目标是隐藏系统的其余部分:

ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

现在您可以制作必要的/dev文件。这里-m设置权限,c是针对字符设备的,两个数字是主设备号和次设备号:

mkdir -p /home/test/dev/        
cd /home/test/dev/
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8

现在您可以将文件设置为 拥有root且只能写入root

chown root:root /home/test
chmod 0755 /home/test

第 2 步:设置外壳

首先添加 shell 二进制文件,例如bash

mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/

找出bash运行所需的库(注意:您可能需要的不仅仅是 lib64 库。例如我的库位于/lib/x86_64-linux-gnu/和 中/lib64):

ldd /bin/bash
mkdir -p /home/test/lib64
cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

第 3 步:设置用户

首先创建用户并给他们一个密码:

useradd sshguest
passwd sshguest

现在移动所需的/etc文件:

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/

第 4 步:配置 sshd 以使用监狱

使用您最喜欢的编辑器将以下行添加到/etc/ssh/sshd_config

#define username to apply chroot jail to
Match User sshguest
#specify chroot jail
ChrootDirectory /home/test

然后通过重新启动服务来加载新配置:

sudo service sshd restart

第 5 步:查看 shell 是否工作

您应该能够连接并运行 shell 内置命令:

ssh sshguest@[IP of Host]
  $ pwd
  $ echo "foo"

第6步:给新用户一个主目录并添加其他程序

首先给帐户一个家:

mkdir -p /home/test/home/tecmint
chown -R sshguest:sshguest /home/test/home/sshguest
chmod -R 0700 /home/test/home/sshguest

现在,对于您希望被监禁的 shell 能够访问的任何程序,您需要重复复制二进制文件并检查需要哪些共享库,然后像使用bash.所以如果你愿意ls你会这样做:

cp -v /bin/ls /home/test/bin/
ldd /bin/ls
cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/
### or whatever directory and libs you need on your system

相关内容