如何限制使用 SFTP 功能“转义到本地 shell”?

0 networking security users sftp

为了做一个限制访问的文件服务器,我设置了以下配置:

在文件服务器上 (Debian Wheezy)

  • 创建一个用户data-reader不在家,无壳,命名为组中data
  • 创建一个/somewhere/share/由 root 拥有的目录,其子目录/somewhere/share/data/可由 group 访问data
  • 将以下配置添加到/etc/sshd_config
    Match group data
        ChrootDirectory /somewhere/share
        ForcedCommand internal-sftp
        X11Forwarding no
        AllowTcpForwarding no
    
    Run Code Online (Sandbox Code Playgroud)

这样,data-reader只能使用 SFTP 读取目录中的文件/somewhere/share/data。好的。

在客户端(另一个 Debian)

使用sftp data-reader@<server_ip>连接到服务器。从 SFTP 控制台,我可以使用/somewhere/share/dataSFTP 命令(如ls或 )以只读方式访问get,但我看不到其他路径。好的 !这就是我想要的。

但是有一个很好的命令列出help

!    Escape to local shell
Run Code Online (Sandbox Code Playgroud)

如果我跑

!ls / 
Run Code Online (Sandbox Code Playgroud)

我实际上可以看到/服务器上的所有文件!我可以看到任何文件的内容。但我不希望那样,我希望用户不能离开他的目录。

有没有办法限制这个“转义”命令的访问?

感谢您的帮助。

Jef*_*ler 5

转义到本地 shell 意味着——用户现在在客户端上有一个 shell,而不是在服务器上。触摸两个系统上 /tmp 中的文件(名称不同!)以查看差异。