假设我通过 SCP 连接到服务器并将一些文件从远程服务器复制到我的家用计算机。服务器管理员能否知道我复制了某些内容、查看复制的内容或知道谁复制了这些内容?
答案1
一个 ServerFault 问题几乎与此相同。希望您在发布问题之前检查过,但您的问题略有不同,因此我将在这里回答。
简而言之,如果任何人都有权访问和允许某个端点(您正在scp
访问或scp
正在访问的系统),他们就可以看到发生了什么。如果他们无法访问任何一个端点,他们很可能无法访问或无法解密您正在做的事情(除了可能通过协议号了解应用程序)。
答案最终取决于您的基础设施。不过,最有可能的是,只要没有严密的监控,并且公司不认为 SCP 构成威胁(这将引发危险信号),您的流量就不会被注意到。对于较小的公司来说尤其如此。
正如@SimonRichter提及:如果有人可以在您的系统上执行命令(即管理员或其他人),他们就可以检查您的进程列表并查看命令行scp -args /filepath/
。但是,这要求他们记录所有进程活动或在您转移时检查它。此外,如果您从自己工作中的系统转移到另一个系统(例如在家里或其他地方),他们不一定具有这种可见性。
此外,正如@alex.forencich 提到的那样:还可以记录所有系统调用(包括文件打开和读取调用),因此即使您的复制程序(scp、sftp 等)没有记录或泄漏任何内容(命令行参数),仍然可以找出读取或写入了哪些文件。请参阅 linux 审计系统。–
答案2
不只是管理员。
为了测试,我只是/bin
从我的服务器复制到我的笔记本电脑上的一个临时目录中。ps
服务器上显示
$ ps 24096
PID TTY STAT TIME COMMAND
24096 ? Ss 0:00 scp -r -f /bin
所有用户通常都可以访问该信息。
答案3
scp
借助服务器上运行的代码(sshd
及其scp
本身)工作。理论上,该服务器代码完全由服务器管理员控制,scp
服务器上运行的用于将文件写入到您的连接的 版本与scp
计算机上运行的用于发出请求的 版本是分开的。
举个例子,服务器管理员可以将scp
服务器上的版本替换为记录所有请求的版本,就像 Web 服务器可以写入日志一样。然后他们可以从这些日志中看到您复制的内容。
他们是否具备专业知识和动力来真正做到这一点尚不确定,但如果他们愿意,那么原则上没有什么可以阻止他们。
我认为这些问题与你的问题类似:https://security.stackexchange.com/questions/14782/is-there-an-easy-way-to-see-a-log-of-scp-activity-on-a-server-ala-var-log-secu,https://askubuntu.com/questions/659896/where-would-you-find-scp-logs
虽然我不知道所有的细节,但看起来开箱即用scp
,sshd
不有选项可以记录您询问的内容。因此,也许需要的不仅仅是简单的配置,但您无法摆脱管理员控制服务器的事实。
答案4
经验法则是,具有 root 访问权限的人可以知道一切(如果他愿意检查的话)。可能唯一不能访问的是证书加密的文件系统。
期间该行为会scp
在远端打开一个进程,可以通过任何人只需调用 即可ps
。如果您设法隐藏进程列表中显示的命令行,则lsof
(打开文件列表)可以显示正在接触的文件。这非常简单,我实际上这样做是为了观察我启动的某个复制进程有多远,如果我在目前无法查看的终端上启动该进程(文件列表正在输出的位置)。
后操作后,使用 进行快速扫描find
可以找到最新的文件(如果在复制期间未保留时间戳)。如果文件在会话期间以任何方式被访问或触碰ssh
,则.bash_history
显示您正在做什么(但您可以根据需要将其删除)。
如果安全性要求非常严格,您可以随时设置额外的监控:您可以使用一个简单的守护进程监听所有文件修改,并记录有关文件系统事务(本地和远程)的所有内容。记录所有用户生成的进程。如果正在进行备份,则删除文件后它们可能仍存储在某处。