使用 SCP 监控通过 SSH 完成的文件复制

使用 SCP 监控通过 SSH 完成的文件复制

有没有办法保留使用 SCP 复制的文件的日志?我正在管理一个服务器,其中包含一些应该被监视的文件(在特定文件夹及其子文件夹中),因此当有人通过 SSH 复制它们时,应该记录复制过程。

我考虑过查看用户的 Bash 命令历史记录并搜索以 开头的命令scp,但这公然侵犯隐私,而且用户也很容易删除这些历史记录(即使没有恶意)。

有人知道这个方法吗?我可以使用用户名/密码创建一个基于 Web 的服务器界面,这样记录下载就很容易了,但如果有的话,我对“裸机”解决方案感兴趣。

编辑:我查看了 SSHD 的日志选项,例如 FascistLogging 或 Debug 日志,但这些似乎不太合适。它们真的是解决方案吗?

编辑2:我开始相信这个问题不应该出现在 Stack Overflow 上,而应该出现在 Server Fault 上......我该怎么办?

答案1

我会用因克龙。它利用 Linux 内核inotify子系统,如果某些受监控的目录树/文件被修改,您可以执行任何您想要的操作。incrontab文件格式非常简单,例如

/your/directory IN_MODIFY /usr/local/bin/log_file_modifications.sh $@/$#

/usr/local/bin/log_file_modifications.sh每次目录树中的内容被修改时都会运行/your/directory,使用完整路径($@参数)和被修改的文件($#参数)调用脚本。

你的脚本可能很简单

#!/bin/bash
logger -t modification_stalker "Yo dawg, these files got modified $1 $2 ..." 

答案2

sshd 选项在这里没用。scp 只是在远程主机上运行类似“scp -t -- dest_file”的命令。

最简单的方法 - 围绕真正的 scp 程序创建包装器,用于记录命令行参数。

答案3

OpenSSH支持日志记录scp。因此,如果您打开该VERBOSE模式,您甚至可以看到客户端遍历的目录。

查看日志检查

/var/log/auth.log

答案4

您可以为 sshd 设置详细日志记录级别,并使用一些审计软件(例如 auditd)根据日志消息创建报告。

相关内容