socks5 代理在 ssh 上的安全性如何?

信息安全 SSH 代理人
2021-08-29 19:47:34

在工作中,我们都使用 Windows 7+,具有完全的管理权限。每台 PC 都有一个专用 IP 并使用代理。它被设置为 HTTP 代理,并且选中了将其用于所有类型的连接的选项。

我家里有一个带有 SSH 服务器的“ddwrt”路由器。我使用 PuTTY 使用端口 443 与我的家庭路由器建立 SSH 连接。PuTTY 配置为 socks5 代理隧道,并且启用 Firefox 以通过 SSH 发送 DNS 请求,Chrome 也(我检查了 dnsleaktest,我的家配置了谷歌公共 DNS是使用的,不是公司的,这里没有 DNS 泄漏)。我必须在 Putty 中设置公司代理才能访问 Internet。

一切正常,我认为我对此很安全,但是我必须在 Putty 中设置的代理让我有点困扰,因为我不确定该代理是否可以看到来自 Putty 的流量?或者连接仍然是加密的,无论是否通过公司代理,socks5隧道都是通过公司代理建立的。

我猜他们看到了腻子连接到的 IP 地址(通过端口 443,而不是 22),但仅此而已,他们没有看到其他任何东西,只是我的路由器和工作中的 PC 之间的加密流。

我怀疑他们使用任何特殊的代理来整合中间人攻击,这超出了他们的知识范围,并且猜测该软件对他们来说太贵了。

你怎么认为?

请不要回答我不应该将工作用于个人事物等,我是在我老板的知识下做到这一点的,他厌倦了 IT 的东西,她基本上指示我访问社交网站。

3个回答

至于DNS:一般来说,SOCKS协议的原理是,当客户端想要连接到服务器example.com的80端口时,它通过隧道发送消息“请打开到80端口的连接example.com并来回转发字节” ",因此名称example.com将在隧道的另一端(此处为您的家庭路由器)解析。正如@M'vy 所指出的,Firefox 可以这样做,在这种情况下,必须假设 SOCKS 消息将讨论已解析的 IP 地址。

至于企业代理,它的工作方式与 SSL 一样:浏览器向代理发送“CONNECT”命令,带有目标名称和端口,并要求代理在两个方向上传播字节。在您的情况下,公司代理认为它正在转发一些 SSL 连接,但实际上这是一些 SSH。从密码学上讲,代理仍然在“外部”;它不会看到数据,尤其是它甚至不会知道您正在浏览哪些网站。公司代理在您的桌面系统和家庭路由器之间看到一个非常繁忙的连接。

但请注意,SSH 和 SSL 协议不使用相同类型的标头,因此公司代理可能会注意到通过它的不是 SSL(即使它使用传统的 HTTPS 端口 443),而是真正的 SSH。根据监视工具和系统管理员的努力,代理可能会确定事情有问题并发出警报。

调查应该很容易得出结论,他们网络上分配给您的计算机正在使用 SSH 而不是 HTTPS 连接到端口 443 上的消费级 ISP 主机(内容检查可以轻松确定您使用的协议,包括能够检测 SSH 流量)。

此流量确切内容应该是不透明的(但即使这样也不能保证),没有恶意或一些非常高级的分析。

有几种方法可以收集更多信息:

  • 意外数据泄漏(此处的其他答案解决了该问题)
  • 一个中间人攻击-确保你有SSH指纹权
  • 您计算机或工作区域上的软件/硬件,用于拦截您本地的未加密数据
  • 请求(或拦截)您的家庭 ISP 未加密的隧道端
  • 侧信道攻击或高级频率分析

频率分析的一个例子:视频和音频有一定的模式;我什至听说过有报道称可以根据数据量破译加密的实时音频(暂停压缩得很好,单词压缩得不好,而且都是实时的)。

仅考虑数据的爆发,很明显您不只是使用外壳。我猜想确定您正在浏览网页并不难,尽管我不知道这是否可以通过现有工具轻松发现。

鉴于某些网站的某些属性(例如,网站动态加载新内容的方式需要一定的轮询频率并且可能会提取一定范围内的数据),甚至可以记录您正在访问的网站,尽管我怀疑该频率分析可以确定确切的内容(旁道攻击在这方面很有可能)。

如果您担心旁道攻击或复杂的恶意软件或硬件(例如椅子后面的摄像头),那么被解雇可能是您最不担心的 :-) 我们至少在几年前技术变得无处不在,可以部署以使员工保持目标。 希望成为严厉的雇主会选择便宜的选择,并简单地阻止 SSH 流量到未经批准的主机(无论端口如何)。

您和您的代理之间的连接是加密的。它通过公司代理,它只能看到加密的流量。

正如您所说,代理将注册到您的代理 IP 地址的连接,并最终可以监控通过该连接的数据量(这是检测代理的常用方法)。

DNS 请求可能不会通过您的代理进行,Chrome 浏览器似乎默认执行此操作,但不是 Firefox,您必须network.proxy.socks_remote_dnsabout:config.

关于中间人攻击,您必须确保登录时提供的主机密钥与您自己服务器的指纹匹配。提醒一下,PuTTY 将已知指纹存储到注册表中:HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys并且可以通过运行检查服务器 SSHd 指纹:

for file in /etc/ssh/*sa_key.pub                                                                                
do
    ssh-keygen -lf $file
done