我在我的CentOS 5.8服务器上安装了jailkit,并根据我找到的在线指南对它进行了配置。下面是作为root执行的命令:
mkdir /var/jail
jk_init -j /var/jail extshellplusnet
jk_init -j /var/jail sftp
adduser testuser; passwd testuser
jk_jailuser -j /var/jail testuser然后,我编辑了/var/jail/etc/passwd,将testuser的登录shell更改为/bin/bash,让他们通过SSH访问完整的bash。
接下来,我编辑了/var/jail/etc/jailkit/jk_lsh.ini如下所示(不确定这是否正确)
[testuser]
paths= /usr/bin, /usr/lib/
executables= /usr/bin/scp, /usr/lib/openssh/sftp-server, /usr/bin/sftptestuser可以通过SSH进行连接,并且仅限于查看chroot监狱目录,还可以通过SFTP登录,但是整个文件系统是可见的,可以遍历。
SSH输出:
> ssh testuser@server
Password:
Last login: Sat Oct 20 03:26:19 2012 from x.x.x.x
bash-3.2$ pwd
/home/testuserSFTP产出:
> sftp testuser@server
Password:
Connected to server.
sftp> pwd
Remote working directory: /var/jail/home/testuser怎样才能阻止SFTP进入监狱?
发布于 2021-05-28 00:55:29
虽然我确实感觉到了doublesharp的痛苦(也遇到了这个问题),但是不应该使用doublesharp在这里的答案(不安全)。这里的问题是,sshd的内部sftp在执行/usr/sbin/jk_chrootsh之前正在执行,这需要出于安全原因执行。因此,要解决这个问题,所需要做的就是确保您的/etc/ssh/sshd_config文件有以下一行.
Subsystem sftp /usr/lib/openssh/sftp-server
..。而不是这一行..。
Subsystem sftp internal-sftp
还要确保您也没有在此文件中进行任何用户/组匹配。这里的主要想法是,如果您要使用jailkit来隔离Linux系统上的用户,那么您需要强制所有用户通过/usr/sbin/jk_chrootsh,如果需要的话,可以使用它自己的sftp功能。
在对/etc/ssh/ sshd _config进行更改之后,请确保重新启动sshd(方法可能因系统而异)。
发布于 2012-10-20 15:26:45
如果存在问题,希望得到纠正,但是下面的配置似乎奏效了。
更改了由jailkit修改的/etc/passwd (而不是/var/jail/etc/passwd)中的用户:
原始testuser:503:503::/var/jail/./home/testuser:/usr/sbin/jk_chrootsh
改性testuser:503:503::/home/testuser:/bin/bash
将配置添加到/etc/ssh/sshd_config中:
Match Group testuser
ChrootDirectory /var/jail/现在,当通过SSH或SFTP登录时,用户仅限于/var/jail及以下,默认为/var/jail/home/testuser中的主目录。
https://serverfault.com/questions/440456
复制相似问题