我正在运行Debian稳定版,并且希望为我的“ sftponly”组中的用户建立以下环境:
- 入狱
- 可以通过SFTP传输
- 可以和SCP一起转移
- 无法使用SSH交互式登录
通过我的实验和研究,似乎sshd_config中的以下节使我达到了90%:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
这使我入狱的SFTP却没有SSH,这很好。但这也会禁用SCP,这并不理想,因为有很多客户端是使用SCP而不是SFTP(我们要替换的服务器同时支持这两种协议)的旧式,脚本化进程,并且由于这些客户端不受我们的控制并且很容易修改后,完全禁用SCP可能不切实际。
有意义的是,此配置将禁用SCP,因为传入的SCP连接导致sshd通过用户的登录shell(即该用户)生成“ scp”进程。如果不是特殊的“ internal-sftp”处理程序,似乎SFTP通常也是如此。
因此,我想我的问题是:除了SCP之外,是否有一种方法可以达到与“ internal-sftp”相同的效果,而不必诉诸于使用诸如scponly和rssh之类的第三方工具?关于“ internal-sftp”的真正好处是,它不需要建立带有支持文件的监狱,也不需要处理可能被利用的第三方setuid二进制文件(特别是rssh,具有漏洞利用历史)。