在我工作的地方,有多个用户通过ssh登录任意一台服务器,执行各种任务。一般来说,它们应该只在服务器上运行命令,而不是从服务器复制文件。是的,他们有根访问权限。
我需要了解的是,用户从每台服务器传输出的数据量。换句话说,从用户登录的那一刻到他们断开连接的那一刻,我需要找出在他们的服务器和 ssh 服务器之间传输的总数据,即发送和接收的数据。这可能有助于跟踪可能已将大量敏感数据传输出服务器的用户。服务器上有一些大文件。
在我工作的地方,有多个用户通过ssh登录任意一台服务器,执行各种任务。一般来说,它们应该只在服务器上运行命令,而不是从服务器复制文件。是的,他们有根访问权限。
我需要了解的是,用户从每台服务器传输出的数据量。换句话说,从用户登录的那一刻到他们断开连接的那一刻,我需要找出在他们的服务器和 ssh 服务器之间传输的总数据,即发送和接收的数据。这可能有助于跟踪可能已将大量敏感数据传输出服务器的用户。服务器上有一些大文件。
由于用户具有 root 访问权限,因此您在机器本身上所做的任何事情都是不可信的。您应该使用流量嗅探器,该嗅探器被配置为查看进出所观察服务器的所有流量(通过在智能以太网交换机中设置监控端口)。流量嗅探器无法解密任何 SSH 会话的内容,但它可以看到交换的数据量,这就是您感兴趣的全部内容。
我可以想到两种方法将流量嗅探器上观察到的 TCP 流与用户相关联。
如果您可以通过远程系统(SSH 客户端)的 IP 地址来识别流量属于哪个用户,例如,如果客户端都有静态 IP 地址,请使用它。
否则,在被观察的服务器上配置远程syslog,从远程syslog服务器的认证日志中获取信息。每次打开会话时,OpenSSH 都会记录这样一条消息:
因为 TCP 端口号和用户名都可以在 syslog 消息中找到,所以您可以识别 TCP 流(由数据包嗅探器捕获)属于哪个用户。
对于第二种解决方案,用户仍有机会破坏系统。由于他们具有 root 访问权限,因此如果他们真的愿意,他们可以修改发送到远程系统日志服务器的日志消息。不过,使用远程系统日志服务器会使用户干预日志记录更具挑战性,而且事后不可能这样做。