Jailkit 无法锁定 SFTP,无法为 SSH 工作

Jailkit 无法锁定 SFTP,无法为 SSH 工作

我在 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,将登录 shell 更改为testuser允许/bin/bash他们通过 SSH 访问完整的 bash shell。

接下来我将其编辑/var/jail/etc/jailkit/jk_lsh.ini成如下所示(不确定是否正确)

[testuser]
paths= /usr/bin, /usr/lib/
executables= /usr/bin/scp, /usr/lib/openssh/sftp-server, /usr/bin/sftp

测试用户能够通过 SSH 连接,但只能查看 chroot jail 目录,也能够通过 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/testuser

SFTP 输出:

> sftp testuser@server
Password: 
Connected to server.
sftp> pwd
Remote working directory: /var/jail/home/testuser

怎样才能锁定监狱的 SFTP 访问?

答案1

虽然我确实感受到了 doublesharp 的痛苦(也遇到了这个问题),但 doublesharp 的答案不应该使用(不安全)。这里的问题是 sshd 的 internal-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(方法可能因系统而异)。

答案2

如果存在问题,希望得到纠正,但以下配置似乎有效。

/etc/passwd更改了(中的用户不是 /var/jail/etc/passwd) 已被 jailkit 修改:

原来的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

相关内容