Chrooted SSH / SFTP教程(Debian Lenny)

Chrooted SSH / SFTP教程(Debian Lenny)

版本1.0
作者:Falko Timme

自版本4.8起,OpenSSH支持chrooting(请参阅http://openssh.org/txt/release-4.8 ),因此不再需要任何补丁。 本教程介绍如何给用户chroot SSH访问。 通过此设置,您可以为用户提供shell访问,而不必担心他们可以看到整个系统。 您的用户将被关在特定目录中,这些目录将无法突破。 我还将展示如何使用chroot的SFTP。

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

1初步说明

Debian Lenny的OpenSSH版本是5.1p1,因此支持chrooting。

我将在这里使用用户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 /usr/lib/openssh/sftp-server
[...]

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

[...]
Match User falko
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server

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

[...]
Match Group users
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand /usr/lib/openssh/sftp-server

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

重启OpenSSH:

/etc/init.d/ssh restart

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

chmod 700 /home/falko

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

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 / usr / lib / openssh / sftp-server的行! 这使得用户仍然可以使用chroot的SFTP (如果您还在/ etc / ssh / sshd_config中也有Subsystem sftp / usr / lib / openssh / sftp-server ),还有chroot的SSH。

重启OpenSSH:

/etc/init.d/ssh restart

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

chmod 700 /home/falko

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

5链接

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

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

支付宝扫一扫打赏

微信扫一扫打赏