谁在用 SFTP 向我发送文件?有什么方法可以查出吗?

谁在用 SFTP 向我发送文件?有什么方法可以查出吗?

我必须负责一台用作文件服务器的 Ubuntu Linux 机器。我几乎没有使用过 Linux。我试图解决的问题之一是有人将一堆非常大的文件传输到此服务器并占用了所有可用空间。我四处打听,没有人使用这些文件,也不知道它们来自哪里。我不想每天都登录以删除这些文件,但我不知道该追踪谁来追踪它们的来源。我只知道这些文件正在被推送到我们的服务器,很可能是通过 sftp,而且我们并没有从某个地方提取这些文件(我还没有找到任何执行此操作的 cron 作业)。我有什么办法可以找出这些文件的来源并阻止它们吗?

答案1

一些想法:

是否有一个通用的 SFTP 用户名和密码供大家用于连接服务器,还是每个人都有自己的用户名?如果他们都有自己的用户名,您可以使用 查看文件的所有者ls -l path/to/file

由于 SFTP 在 SSH 之上运行,因此您可以检查身份验证日志/var/log/auth.log以查看谁登录了以及何时登录。您可以检查大型文件中的创建时间,看看是否可以关联创建/登录时间。该auth.log文件包含每次登录计算机的 IP 地址和用户名。获得 IP 地址后,您可以进行反向 DNS 查找(即使用dig @your_nameserver -x offending_ip +short,或进行您能想到的任何其他网络侦察。

至于在发现谁占用了所有空间后该怎么做,这取决于谁在使用您的文件服务器。如果是公共文件服务器,禁止 IP 似乎是合理的,但如果有人打算滥用您的服务,他们可以通过另一个 IP 代理并再次重复。如果是贵组织的内部文件服务器,如果您能找到违规者,您可能希望与他们交谈。起草一套使用文件服务器的简单规则(即不要上传大文件)并将其发布在人们可以看到的地方可能是值得的。

答案2

一般来说:

  • 文件始终会包含所有权详细信息、用户名和组,查找这两者可能已经提供有关实际业务用户、特定业务流程或负责的服务器流程的信息
  • 文件位置/目录路径通常也暗示特定服务。例如,文件暗示/var/wwwWeb 服务器进程、在线上传表单或 Web DAV 等。
  • 此外,大多数守护进程(包括 sftp)将记录用户身份验证和/或上传等事件,/var/log这也可能允许您确定此类上传源自哪个系统

答案3

您可以使用 systemtap 查找哪个 PID 正在创建该文件。以下是查看删除的方法:https://serverfault.com/a/310477/30946 为了创建,您需要观察creat(2)open(2)系统调用。

Systemtap 脚本如下:

probe syscall.creat, syscall.open
{
    printf ("%s(%d) open (%s) userID(%d)\n", execname(), pid(), argstr, uid())
}

相关内容