是否可以强制使用 SFTP 而不是允许 SCP 回退?

是否可以强制使用 SFTP 而不是允许 SCP 回退?

我有一台装有 openssh OpenSSH_4.3p2 的 Red Hat 5.4 服务器,我一直尝试在我的服务器中设置 scp/sftp 日志,但遇到了一些问题。

我按照这个其他帖子。如果用户选择使用 pscp 或 SFTP 客户端(如 cyberduck、filezilla、winscp 等)传输文件,这些功能非常有用。在这种情况下,我能够知道已导航的目录树。

但是,如果用户选择执行 rsync(使用 scp 作为协议)或明确调用 scp 命令,则唯一记录的是登录/注销事件。导航到传输文件的实际树不会显示在日志跟踪中。

有没有办法禁用 scp 而仍然允许 sftp ?或者有没有办法强制 scp 命令表现为 sftp ?

也许这个问题在较新的 openssh 端口中不存在。但是,由于 Red Hat 不会为我的 5.4 OS 版本发布进一步的更新(而且我们不想升级服务器),所以我只能使用现有的版本。

有什么建议 ?

答案1

我不确定 SCP 的日志记录。我查看了这一点。所做的就是在略有不同的模式下在另一端scp进行调用。应该能够记录它执行的内容。从scpsshd代码看起来sshd需要LogLevel=DEBUG编写 exec,但在 DEBUG 或任何更高级别(6.1p1)上对我来说没有输出。不幸的是,一旦sshd执行了某些操作,正在运行的二进制文件就可以在底层做任何它想做的事情,因此如果二进制文件也实现了日志记录,那会很有帮助。没有真正的日志记录scp因此这需要某种补丁。

这立即让我想到编写一个包装器来scp至少获取一些信息。

mv /usr/bin/scp /usr/bin/scp.ori; touch /usr/bin/scp; chmod 755 /usr/bin/scp;

然后输入以下内容/usr/bin/scp

#!/bin/sh

logger -i -p auth.info "scp ran with [$*]"
/usr/bin/scp.ori "$@"

不过,这个脚本会随着版本发布而被淘汰,而且它有点不可靠。你实际上只能看到 scp 命令的一侧,而且可能有点简短(例如scp -r user@host:/home/user/ ./-r -f /home/matt/主机上)

还值得注意的是,如果人们有 shell 访问权限,他们就可以复制任何他们想要的内容,而无需使用 scp 或 sftp。

<结束编辑>

可以强制Subsytem登录。以下是针对sftponly我希望仅能够通过 sftp 连接到特定 chroot 位置的组成员,以便他们的用户拥有 shell /usr/sbin/nologin。我认为您不需要ForceCommand在 sshd 配置中添加更多内容。

Subsystem       sftp    internal-sftp
Match group sftponly
         ChrootDirectory /pub/user/%u
         X11Forwarding no
         AllowTcpForwarding no
         ForceCommand internal-sftp
         PasswordAuthentication yes

希望您可以附加您的日志,然后您就可以离开了。

相关内容