![使用 SCP 监控通过 SSH 完成的文件复制](https://linux22.com/image/585147/%E4%BD%BF%E7%94%A8%20SCP%20%E7%9B%91%E6%8E%A7%E9%80%9A%E8%BF%87%20SSH%20%E5%AE%8C%E6%88%90%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%8D%E5%88%B6.png)
有没有办法保留使用 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)根据日志消息创建报告。