我们生活在一个有趣的时代。一方面,我们有组织和官员想知道别人在说什么。另一方面,也有公民希望维护自己的隐私权,不想分享与通信和上网有关的信息。然而,这篇文章不是关于社会的。现在许多人的技术素养在不断提高。几年前,Proxy或VPN这样的词只有IT专业人士才知道。现在我们可以说,很多人都知道VPN是什么,而且他们每天都在使用这些技术。例如,vpn和类似的流量加密服务在中国是被禁止的。你甚至可能因此被监禁。委内瑞拉政府封锁了与Tor的直接联系。俄罗斯关闭了对许多西方网站和服务的访问(谷歌、亚马逊和微软的IPs在某个时候被部分屏蔽)。
让我们试着找出限制通信的措施可以朝哪个方向进一步发展。
至于ACL过滤器,一切都很清楚。ACL筛选器已工作。很难解决这个问题。
至于DPI–深度包检查,事情变得更有趣。
使用DPI识别流量类型的方法可分为两组:
签名分析。这归结为对每个和所有数据包进行分类,并将报头和结构与已知的现有样本进行比较,从而确定数据包的性质和用途。很多隧道都可以用这种方法探测到。例如SOCKS、OpenVPN、L2TP/IPSec.
对流量交换模式进行了初步分析。即分析传入和传出流量的比率以及请求和响应的频率,并使用其他一些标准,允许将真正的协议流量与试图伪装自己的隧道分离。
让我们将协议\技术分成几个组,云免服务器购买,并尝试预测感兴趣的各方如何开始阻止\过滤\监视它们。
对于第3点和第4点,可以使用白名单。那些不在白名单中的人可能会预料到第1点和第2点的人的命运。
在以上所有点中,使用端口443的TLS/SSL看起来是最不可疑和可靠的选择。
因此,让我们尝试将其移动到这个选项。
下面是一些屏蔽连接和流量的技术。
AnyConnect/OpenConnect。这是anyconnectssl协议的开源版本。建立连接时,TLS(TCP)和DTL(UDP)是可见的。但是如果提供者切断UDP通信,AnyConnect就会切换回TCP,看起来就像TLS。即使是加密隧道内的身份验证也可以像HTTP一样工作。
Shadowsocks。这是一个加密的SOCKS代理。实际上,如果强烈需要,它可以被识别,互联网大数据,但是有很多插件将它伪装成HTTPS.
Wireguard。它具有强大的加密和安全的会话设置机制。但是,交换是通过UDP进行的。Wireshark将数据包类型定义为完全不可理解的东西。尚不清楚第三方DPI将对您的关系发表什么意见/结论。
obfs3,obfs4。使数据包模糊,以便从外部看它们是完全随机的一组值。也就是说,属于上面列表的第4点。它看起来像HTTPS,但有一个例外。除了TCP本身的TLS之外,它还主动发送UDP数据包。UDP可以用来加速数据传输(以防它没有被防火墙切断)。
SSTP。这是一个来自微软的VPN协议。本机支持的Windows,辅助软件需要使它与Linux的工作。从外部看,它看起来像HTTPS,甚至Wireshark也完全证实了这一点。
假设您正在主机上构建一个VPN服务器,并将其设置为侦听端口443。似乎一切都很好,但有一个大问题,但如果你假装是HTTPS,仍然有可能找到什么确切的"挂起"端口443。任何人都可以用浏览器测试这个端口。这种方法在中国使用
因此,企业管理平台软件,我们需要在443端口上安装最普通、最标准的web服务器。接下来是一个有趣的问题。以上技术/服务都没有在文档中描述如何实现端口共享。
一些极客建议使用服务器名称指示(SNI),这是TLS扩展。它允许指定主机名,然后使用sniproxy、HAProxy在不同的服务之间扩展连接。
问题是,在当前的TLS实现中,使用SNI时指定的主机名是纯文本传输的,也可以被窃听。
WebSocket可能有助于
在HTTPS中隐藏隧道的最佳方法之一是使用流行工具。现代web长期以来一直在使用一种解决方案,通过TCP在服务器和浏览器之间建立连接,称为WebSocket协议(RFC 6455)。
客户端创建一个特殊的HTTP请求,服务器必须以特殊的方式响应该请求。在快速握手之后,您可以开始通过相同的TCP连接发送数据。从外面看,大数据的培训,一切都像普通的HTTPS。
有许多WebSocket实现,你甚至可以找到Haskell变体。我使用的是使用nodejs创建的wstunnel。您可以通过隧道连接到SOCKS代理OpenVPN或Dante。
这种方法有一个小问题。除了VPN或SOCKS客户机本身之外,企业网站自助建站,您还运行了wstunnel客户机。这在智能手机上可能会有问题。