在AWS中,我们的用户(系统管理员)可以使用SSH隧道访问内部区域DB服务器,而不受任何本地第一墙的限制。如您所知,要访问内部节点,用户必须先通过公共区域网关服务器。因为网关实际上是一条通道,所以我希望控制网关服务器上隧道用户的流量。例如,为了获得所有客户端当前连接的ip地址,要确认用户访问的内部路径(例如DB服务器ip),我希望控制未经授权用户的连接。
对于我的梦想成真,我认为下面的想法真的是理想的。1)将sshd端口更改为22以外的其他端口。重新启动sshd守护进程。2)在sshd之前定位ssh代理(nginx、proxy等),并让代理从客户端获取所有ssh流量。3) ssh代理将流量路由到sshd 4)然后通过分析ssh代理日志可以看到所有用户的活动。就这样。
这可能是梦吗?
发布于 2016-07-15 10:27:04
聪明,但有一个关键的缺陷:你不会获得任何新的信息。
为什么?SSH中的第一个S:“安全”。
您所设想的"ssh代理“将无法告诉您SSH连接内部发生了什么,而SSH连接正是在这里协商隧道的。当然,连接是加密的,SSH的一个重要点是它不能被监听。ssh代理位于同一台机器上这一事实并没有什么不同。如果它能被嗅出来,它就不会安全。
SSH代理可以告诉您的是,入站连接是从客户端计算机创建的,syslog已经告诉您了。
实际上,它根本不是一个"ssh代理“--它只是入站连接上的一个天真的TCP连接代理。
因此,您将无法通过这种方法了解任何新的信息。
听起来,您需要的是ssh守护进程(大概是openssh )记录由连接用户建立的隧道连接。
这篇博客文章 (具有讽刺意味的是,您需要绕过无效的SSL证书才能查看)提到了服务器故障,并显示了对openssh源代码的简单修改,以记录您想要的信息:谁设置了隧道,以及在哪里。
因此,在我看来,额外的TCP代理似乎是多余的--您只需要执行实际隧道(sshd)的进程来记录它正在做或被请求做的事情。
https://stackoverflow.com/questions/38389285
复制相似问题