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 操作系统版本发布进一步的更新(而且我们不想升级服务器),我被我所拥有的东西困住了。
有什么建议 ?
我不确定 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
. 我认为您不需要比ForceCommand
sshd 配置更多的东西。
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)
希望您可以附加您的日志记录并且您离开了。