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

mmg*_*mgm 3 ssh redhat logging sftp scp

我有一个带有 openssh OpenSSH_4.3p2 的 Red Hat 5.4 服务器,并且一直试图在我的服务器中设置 scp/sftp 日志,但是我遇到了一些问题。

我按照另一个帖子中的说明进行操作。如果用户选择使用 pscp 或 SFTP 客户端(如cyberduck、filezilla、winscp 等)传输文件,则这些方法非常有用。在这种情况下,我能够知道导航的目录树。

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

有没有办法在仍然允许 sftp 的同时禁用 scp ?或者有没有办法强制 scp 命令表现得像 sftp ?

也许这个问题在最近的 openssh 端口中不存在。但是,由于 Red Hat 不会为我的 5.4 操作系统版本发布进一步的更新(而且我们不想升级服务器),我被我所拥有的东西困住了。

有什么建议 ?

Mat*_*att 6

我不确定 SCP 的日志记录。我看了一下这个。所有scp所做的就是调用scp在一个稍微不同的模式的另一端。sshd应该能够记录它执行的内容。从代码来看它似乎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;
Run Code Online (Sandbox Code Playgroud)

然后将以下内容放入 /usr/bin/scp

#!/bin/sh

logger -i -p auth.info "scp ran with [$*]"
/usr/bin/scp.ori "$@"
Run Code Online (Sandbox Code Playgroud)

不过,该脚本会被版本删除,而且有点狡猾。你只有真正看到scp命令的一侧可以是一个有点简单(比如scp -r user@host:/home/user/ ./-r -f /home/matt/在主机上)

还值得注意的是,如果人们拥有 shell 访问权限,他们可以在不使用 scp 或 sftp 的情况下复制他们想要的任何内容。

<结束编辑>

可以强制Subsytem登录。以下内容适用于sftponly我希望只能 sftp 到特定 chroot 位置的组成员,以便他们的用户拥有/usr/sbin/nologin. 我认为您不需要比ForceCommandsshd 配置更多的东西。

Subsystem       sftp    internal-sftp
Match group sftponly
         ChrootDirectory /pub/user/%u
         X11Forwarding no
         AllowTcpForwarding no
         ForceCommand internal-sftp
         PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)

希望您可以附加您的日志记录并且您离开了。