将用户限制为SFTP Plus设置Chrooted SSH / SFTP(Debian Squeeze)

限制用户进入SFTP Plus设置Chrooted SSH / SFTP(Debian Squeeze)

本教程介绍如何在Debian Squeeze上为用户提供chroot SSH和/或chrooted SFTP访问。 通过此设置,您可以为用户提供shell访问,而不必担心他们可以看到整个系统。 您的用户将被关在特定目录中,这些目录将无法突破。 我还将展示如何限制用户进入SFTP,以免他们使用SSH(这部分是独立于本教程的chroot部分)。

我不会保证这将为您工作!

1初步说明

我将在这里使用用户falko与home目录/ home / falko 。 用户falko属于组用户 。 我想将用户chroot到/ home目录。

2安装OpenSSH

如果尚未安装OpenSSH,请按如下方式进行安装:

apt-get install ssh openssh-server

3启用Chrooted SFTP

启用S​​FTP非常简单。 打开/ etc / ssh / sshd_config ...

vi /etc/ssh/sshd_config

...并确保你有以下行:

[...]
Subsystem sftp internal-sftp
[...]

然后在文件末尾添加以下节(为要chroot的每个用户添加这样一个节):

[...]
Match User falko
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

而不是为每个用户添加节,您也可以chroot组,例如如下所示:

[...]
Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

这将使所有用户组的成员都chroot到/ home目录。 请注意,ChrootDirectory指令中路径名的所有组件必须是其他用户或组不可写的根目录(请参阅

man 5 sshd_config

)。 这就是为什么我们不能指定/ home / falko ,例如,因为它不是用户和组root所有

重启OpenSSH:

/etc/init.d/ssh restart

如果您将多个用户chroot到同一目录,但不希望用户浏览其他用户的主目录,则可以按如下所示更改每个主目录的权限:

chmod 700 /home/falko

之后,您可以使用SFTP客户端登录,例如FileZillaWinSCP

请注意,在此时您尚未设置chroot SSH(请参阅下一章),您在/ etc / ssh / sshd_config中指定的用户/组仅具有SFTP访问权限。 SSH不能为这些用户工作,因为SSH chroot环境需要一些额外的文件才能工作(因为我们使用ForceCommand internal-sftp )。

4启用Chroot SSH

启用chroot SSH更复杂一些,因为我们必须使用用户应该能够使用的所有程序/工具(例如/ bin / bash/ bin / cp等)来设置一个chroot环境。 这意味着我们还必须将这些程序所需的所有库都复制到chroot jail。 您可以使用cp命令手动执行此操作,您可以使用ldd命令来查找工具需要哪些库,例如

ldd /bin/bash

我们还必须使用mknod命令在chroot jail内创建一些设备,如/ dev / null/ dev / zero/ dev / tty/ dev / urandom

但是,这可能是一个乏味的任务。 幸运的是,有一个脚本可以为我们做这个。

首先,我们需要安装一些先决条件:

apt-get install sudo debianutils coreutils

然后我们将make_chroot_jail.sh下载到/ usr / local / sbin ,并使root用户可执行:

cd /usr/local/sbin
wget http://www.fuschlberger.net/programs/ssh-scp-sftp-chroot-jail/make_chroot_jail.sh
chmod 700 /usr/local/sbin/make_chroot_jail.sh

在我们使用脚本之前,您可能需要将一些程序(例如/ usr / bin / vi )添加到该脚本中的发行版的APPS行中,以便自动将这些工具添加到chroot jail:

vi /usr/local/sbin/make_chroot_jail.sh
[...]
elif [ "$DISTRO" = DEBIAN ]; then
  APPS="/bin/bash /bin/cp /usr/bin/dircolors /bin/ls /bin/mkdir /bin/mv /bin/rm /bin/rmdir /bin/sh /bin/su /usr/bin/groups /usr/bin/id /usr/bin/rsync /usr/bin/ssh /usr/bin/scp /sbin/unix_chkpwd /usr/bin/vi"
else
[...]

接下来我们添加一个指向/ home的符号链接/ home / home

cd /home
ln -s . home

现在我们可以使用脚本了。 用法如下:

make_chroot_jail.sh username [/path/to/chroot-shell [/path/to/chroot]]

chroot-shell是由脚本创建的特殊shell,用于chroot用户。 由于OpenSSH默认支持chrooting,因此我们不需要脚本创建一个特殊的shell; 相反,我们可以使用/ bin / bash/ bin / sh

用户是否已经存在并不重要。 如果他现在,他将被更新; 如果没有,他将被创造。

make_chroot_jail.sh falko /bin/bash /home

这将使用chroot jail / home创建/更新用户falko

要更新chroot jail中的所有文件/库,请运行

make_chroot_jail.sh update /bin/bash /home

现在我们需要配置与SFTP配置相似的OpenSSH。 打开/ etc / ssh / sshd_config ...

vi /etc/ssh/sshd_config

...并在文件末尾添加以下节(为要chroot的每个用户添加此节):

[...]
Match User falko
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no

而不是为每个用户添加节,您也可以chroot组,例如如下所示:

[...]
Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no

这将使所有用户组的成员都chroot到/ home目录。

与SFTP配置的区别在于,这一次,我们不能在Match stanzas中使用ForceCommand internal-sftp的行! 这使得用户仍然可以使用chroot的SFTP (前提是您还可以在/ etc / ssh / sshd_config配置Subsystem sftp internal-sftp ),还可以使用chroot SSH。

重启OpenSSH:

/etc/init.d/ssh restart

如果您将多个用户chroot到同一目录,但不希望用户浏览其他用户的主目录,则可以按如下所示更改每个主目录的权限:

chmod 700 /home/falko

之后,您可以使用SSH客户端(如PuTTY)登录。

5限制用户仅使用SFTP

本章独立于chroote,所以与第3章和第4章无关 - 这意味着您不必按第3章和第4章所述设置chrooting,才能将用户限制为SFTP(但如果您已经设置了chrooted的SFTP和SSH用户,并希望以后禁用SSH,此处显示的方法也是如此;如果您只设置了chroot的SFTP,而不是chroot的SSH,访问限制在SFTP,如第3章末尾所述)。

它显示了如何使用户只能使用SFTP,并禁止该用户使用SSH。 所有你需要做的是将用户的登录shell更改为/ usr / lib / openssh / sftp-server ,例如:

usermod -s /usr/lib/openssh/sftp-server falko

/ usr / lib / openssh / sftp-server必须作为有效的登录shell在/ etc / shells中列出,因此如果尚未列出,请将其添加到/ etc / shells中 ,如下所示:

echo '/usr/lib/openssh/sftp-server' >> /etc/shells

这只能做一次,而不是每个想要限制SFTP的用户。

6链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏