限制 Debian Squeeze 中的用户访问

限制 Debian Squeeze 中的用户访问

我一直在考虑如何限制用户访问他们自己的目录,不允许他们在他们自己的用户目录之上导航。

我正在使用 SFTP,并且不想安装常规 FTP,因为它会引入所有额外的安全问题。

rbash听起来是个好主意,除了它会禁用cd。我希望用户能够在他们的主目录中创建目录,并浏览他们自己的文件夹。

监狱chroot听起来有它自己的一系列问题,听起来比它本身带来的麻烦还要多。

所以,我的问题是,有没有更简单的方法来限制用户只能浏览他们的用户目录,而不能浏览其用户目录以上的任何内容?

答案1

如果您可以将它们限制为仅使用 SFTP 并且不允许它们通过 ssh 登录,那么您可以使用 openssh 内置的 chroot 功能。这里有一篇很好的文章解释了如何

答案2

因此,按照 Stew 指向的链接和说明,我能够让这个工作正常进行。不过,为了让 SSH 密钥正常工作,我必须进行一些更改,因此我想发布一份详细的更改列表,供其他人阅读。

对于chroot仅使用 SSH 进行 SFTP 访问的用户:

从 Debian Squeeze 6.0.5 和 OpenSSH 5.5p1 开始

  1. 添加用户:adduser username

  2. 添加一个组来分配用户,该组适用于您想要 chroot 的用户:

    addgroup sftponly<-- 组名其实不重要,只要你在下面所有地方都更改它就可以了

  3. 添加用户到组:usermod -G groupname username

  4. 安装 libpam-chroot:apt-get install libpam-chroot

  5. 将以下行添加到/etc/pam.d/login

    session required pam_chroot.so debug

  6. 去:/usr/share/doc/libpam-chroot/examples

  7. 然后:chmod 744 setup-chrootdir-shell.sh这样你就可以运行脚本了

  8. 运行脚本,在脚本后指定目录:

    ./setup-chrootdir-shell.sh /path/to/userdir

  9. 验证刚刚创建的脚本的目录是否存在、是否由用户和组 root 拥有,并设置为 755 权限。

  10. 更改用户的主目录:usermod -m -d /home/chrootdir/home username

  11. 禁用用户的shell:chsh -s /bin/false username

  12. 将用户的文件复制到新目录(.ssh 文件夹、.profile 等)

  13. 编辑 sshd 配置文件:vi /etc/ssh/sshd_config

    # %h/.ssh/authorized_keys is the default

    AuthorizedKeysFile /home/%u/.ssh/authorized_keys

    # Subsystem for chroot jail

    # Default is Subsystem sftp /usr/lib/openssh/sftp-server

    Subsystem sftp internal-sftp

    # Chroot jail config

    Match group sftponly

    ChrootDirectory /home/chrootdir/home/%u

    X11Forwarding no

    AllowTcpForwarding no

    ForceCommand internal-sftp

    Match

  14. 如果您正在使用AllowUsers,请将该用户添加到其中。

    AllowUsers username

  15. 编辑/etc/passwd并更改用户的用户目录位置

    vi /etc/passwd

    例如:username:x:1001:1002:/home/chrootdir/home:/bin/false

  16. 重启ssh:/etc/init.d/ssh restart

相关内容