发布outline-ss-server 1.4,Outline项目中Shadowsocks代理的实现

Outline-ss-server 1.4代理服务器已经发布,使用Shadowsocks协议来隐藏流量的性质,绕过防火墙并欺骗数据包检查系统。 该服务器是由Outline项目开发的,它另外提供了客户端应用程序的框架和控制接口,允许您在公共云环境或自己的设备上快速部署基于outline-ss-server的多用户Shadowsocks服务器,通过网络界面管理它们并通过按键组织用户访问。 该代码由 Jigsaw 开发和维护,Jigsaw 是 Google 内部的一个部门,旨在开发规避审查和组织信息自由交换的工具。

Outline-ss-server 用 Go 编写,并在 Apache 2.0 许可证下分发。 用作基础的代码是代理服务器 go-shadowsocks2,由 Shadowsocks 开发人员社区创建。 最近,Shadowsocks 项目的主要活动集中在 Rust 语言的新服务器的开发上,而 Go 语言的实现已经一年多没有更新,功能明显滞后。

Outline-ss-server 和 go-shadowsocks2 的区别在于支持通过一个网口连接多个用户、能够打开多个网口接收连接、支持热重启和不中断连接的配置更新、内置基于prometheus平台.io的监控和流量修改工具。

发布outline-ss-server 1.4,Outline项目中Shadowsocks代理的实现

Outline-ss-server 还增加了针对探测请求和流量重放攻击的保护。 通过测试请求的攻击旨在确定代理是否存在;例如,攻击者可以向目标 Shadowsocks 服务器发送不同大小的数据集,并分析服务器在检测到错误并关闭连接之前将读取多少数据。 流量重放攻击基于拦截客户端和服务器之间的会话,然后尝试重新传输拦截的数据以确定代理是否存在。

为了防止通过测试请求进行攻击,outline-ss-server服务器在错误数据到达时不会中断连接,也不会显示错误,而是继续接收信息,充当一种黑洞。 为了防止重放,还会使用为最后几千个握手序列存储的校验和(最多 40 万个,大小在服务器启动时设置,每个序列消耗 20 字节内存)额外检查从客户端接收的数据是否重复。 为了阻止来自服务器的重复响应,所有服务器握手序列都使用带有 32 位标签的 HMAC 身份验证代码。

就流量隐藏程度而言,outline-ss-server 实现中的 Shadowsocks 协议接近 Tor 匿名网络中的 Obfs4 插件传输。 该协议的创建是为了绕过中国的流量审查系统(“中国的防火墙”),并允许您非常有效地隐藏通过另一台服务器转发的流量(由于附加了随机种子和模拟,流量很难识别)连续流动)。

SOCKS5 用作代理请求的协议 - 在本地系统上启动支持 SOCKS5 的代理,该代理将流量传输到实际执行请求的远程服务器。 客户端和服务器之间的流量放置在加密隧道中(支持认证加密 AEAD_CHACHA20_POLY1305、AEAD_AES_128_GCM 和 AEAD_AES_256_GCM),隐藏其创建的事实是 Shadowsocks 的首要任务。 支持 TCP 和 UDP 隧道的组织,以及通过使用类似于 Tor 中的插件传输的插件来创建不受 SOCKS5 限制的任意隧道。

来源: opennet.ru

添加评论