我想为大多数(不是所有)通过 SSH 登录的用户设置一个 chroot jail。我听说使用最新版本的 openssh 可以实现这一点,但我不知道该怎么做。操作指南都说要修补旧版本,但补丁已经不再可用。
我正在运行 debian etch。
答案1
答案2
我只需要设置一个用户,他可以通过 ssh 登录,然后通过 ssh 连接到另一台服务器(该服务器不直接连接到外部世界)。cstamas 和 ericmayo 提供的链接是个不错的开始。
基本上,我在 /etc/ssh/sshd_config 中添加了以下内容:
匹配用户 myuser Chroot目录 /chroot/myuser
从此以后,我只需在 /chroot/myuser 下创建 chroot 环境。我复制了 /bin/bash 和 /usr/bin/ssh 以及它们所需的共享库(ldd 将显示这些内容)。对于较大的环境,编译所需可执行文件的静态链接版本可能更有意义。
Bash 马上就开始工作了,为了使 ssh 可以工作,我还必须创建 .ssh 目录,复制 /etc/passwd、/etc/nsswitch.conf 和 /lib/libnss_*,并通过 mknod 创建 /dev/null、/dev/tty 和 /dev/urandom。
答案3
mkdir /chroot
mkdir -p /chroot/home/<user_name>
mkdir /chroot/home/<user-name>/bin
cp -pr /bin/bash /chroot/home/<user_name>/bin/.
cp -pr /bin/ls /chroot/home/<user_name>/bin/.
cp -pr /lib64 /chroot/home/<user_name>/.
您必须编辑 /etc/sshd_config 文件并添加
ChrootDirectory /chroot/%h
并重新启动 sshd 守护进程。
总而言之,我真诚地认为 sftp 是一个更好的选择。
此外,我还找到了这个网址,看看它是否有用。
答案4
据我所知,OpenSSH 的新版本仅允许 chroot 进行 SFTP 连接。我试过了,它有效。但对于 SSH,可用的解决方案是 chrootssh 补丁。我浏览了 SourceForge 网站,没有文件,所以我认为它已经停用了。
对于 Debian Etch,这里有一些文件:http://debian.home-dn.net/etch/ssh/
这里还有其他解决方案:http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html,包括 chrootssh 。