streisand
Streisand
欲盖弥彰的Streisand效应.
互联网对我们并不公平。ISP、通信、政治家,他们串通一气封锁那些我们感兴趣和关注的网站和信息。或许是时候打破枷锁,来场正面较量了。
Streisand介绍
- 只需要一个简单的脚本,就能在全新的 Ubuntu 16.04 服务器上运行多个不同的科学上网工具,它们能够让你匿名并且加密所有的网络流量。
- Streisand 原生支持多个 VPS 供应商,其中包括亚马逊EC2,微软云服务,DigitalOcean,Google云计算,Linode和Rackspace;随着软件的开发还将支持更多云和VPS——只要运行的是 Ubuntu 16.04 ,不论提供商是谁还是有成百个实例都能用这个方法部署。
- 整个部署过程顺利的话大概在10分钟左右搞定。试想一个没有系统管理能力的人可能要花数天来完成其中一项工作,而我们用 Streisand 让你获得获得开箱既得的畅快体验。
- 一旦部署完成,你可以将使用指南发送给你的朋友,家人和你觉得对你重要的人**(译者注:原文是社会活动家)**。在这个指南中包含唯一的一个 SSL 证书,这也意味着你发送给他们的只是一个简单的文件而已。
- 部署好网关中包含了用户需要的一切内容,例如设置向导,所支持操作系统需要的客户端。即使无法下载到官方客户端的朋友都可以在网关中的镜像里下载到需要的最新版本客户端。
- 这才是开始,来来来,看看后面更精彩…
更多特性
- 新用户登录时,使用 Nginx 提供密码保护和网关加密。加密网关通过 SSL 证书,或者通过 Tor隐藏服务进行加密。
- 网关将自动生成客户端配置说明,架设在轻量级的 http 服务器 Nginx 上。而您可以用电脑或是手机的浏览器轻松阅读,只需按部就班就能轻松配置客户端了。
- 所有科学上网需要的客户端软件都进行了 SHA-256 检查,并且通过 GPG 进行了签名认证。确保那些无法通过官方渠道下载客户端的用户同样能够从镜像放心下载。
- 所有客户端需要的额外文件,比如:OpenVPN 的配置文件,都可以通过网关下载到。
- 目前 Tor 用户可以借助 Streisand 所提供的优秀特性传输大文件或者控制 Tor 服务其他流量(比如BT,传统的 Tor 并不适合进行BT这样的数据传输)。
- 网关会自动生成一个唯一的密码、一个 SSL 证书和一个 SSL 私钥。在Streisand部署后,网关说明和证书都通过 SSH 进行传输。
- 不同的服务和多个守护进程带来了巨大的灵活性。如果其中一个连接方式遭到封锁,还有其他方式可以尝试使用。它们大多数都能够避免深度包检测。
- OpenConnect/AnyConnect, OpenSSH(没有测试), OpenVPN (stunnel加持的), Shadowsocks, and Tor (obfs4进行混淆传输)都可以在中国使用
- 每一个科学上网工具都提供了文档和详细的描述。 Streisand 或许是迄今为止最为全面的指南,帮助你安装和配置客户端。在必要的时候也能够再次通过手动完成任何相关操作。
- 为了避免科学上网工具被大面积破坏,端口在设计上也是有讲究的。比方说 OpenVPN ,并没有运行在默认的1194端口,而是636端口,这个是很多跨国公司使用的标准 LDAP/SSL 连接端口。
- 这里需要特别注意的是 L2TP/IPsec 为了不影响兼容性,无法修改为其他特定端口。
提供的服务
- L2TP/IPsec 使用 Libreswan/xl2tpd 架设。
- 随机生成、选择预分享密钥和密码;
- Windows, macOS, Android 和 iOS 用户可以使用系统自带的 VPN 进行设置、连接,而不需要另外下载第三方的软件来实现。
- Monit
- 能够监视、处理运行状态,针对那些奔溃的进程或者没有响应的进程进行自动重启和维护。
- OpenSSH
- 支持 Windows 和 Android 的 SSH 隧道, 并且需要使用 PuTTY 将默认的密钥对导出成 .ppk 的格式;
- Tinyproxy 默认安装并绑定到主机,它作为一个 http(s) 代理提供给那些原生不支持 SOCKS 代理的软件通过 SSH 隧道访问网络,比如说 Android 上的鸟嘀咕。
- OpenConnect / Cisco AnyConnect
- oepnConnect (ocserv) 是一个非常强劲、轻巧的 VPN 服务器,并且完全兼容思科的 AnyConnect 客户端;
- 其中包涵了很多顶级的标准协议,比如:HTTP, TLS 和 DTLS, 当然还有很多被跨国公司广泛使用的且流行的技术;
- 这就意味着 OpenConnect 非常易用且高速,而且经得住审查的考验,几乎从未被封锁。
- OpenVPN
- 从自带的 .ovpn 配置文件生成一个简单的客户端配置文件;
- 同时支持 TCP 和 UDP 连接;
- 多个客户端可以分享相同的证书和密钥。但默认生成5个单独的配置;
- 客户端的 DNS 解析由 Dnsmasq 负责,避免 DNS 泄露;
- 启用 TLS 认证,有助于防止主动探测攻击。错误的 HMAC 流量并不会被轻易丢弃。
- Shadowsocks
- 安装的是高性能的 libev 版本,这个版本能够处理数以千计的并发连接;
- Android 和 iOS 只需要扫描一个二维码就能完成自动配置。DNS 可以设置为 8.8.8.8,或者将配置一一复制粘贴到客户端上;
- 采用 ChaCha20 和 Poly1305 对 AEAD 进行加密,增强了安全性并提升了穿透性;
- 使用 simple-obfs 插件提供流量混淆以便于从审查的网络中脱逃(尤其是QOS节流中)。
- sslh
- sslh 是一个协议解复用器(这个我不了解,如果有更好的翻译请request),在一个高度限制的网络环境下(只能访问 http 端口的网络为例),它作为一种备选方案,仍然可以通过 OpenSSH 和 OpenVPN 进行连接,因为通过 sslh 让二者共享了 443 端口。
- Stunnel
- 监听并且将 OpenVPN 的流量进行封装,让 OpenVPN 的流量伪装成标注的 SSL 流量,从而可以让 OpenVPN 客户端成功通过隧道进行连接,躲避深度包检测。
- 通过隧道连接的 OpenVPN 的配置文件和直接连接 OpenVPN 的配置文件是一起生成的,详细的说明也一同生成。
- stunnel 证书和密钥是 PKCS #12 格式,SSL 隧道程序能够很好的兼容,尤其 OpenVPN Android 版本也能够通过 SSLDroid 传输。在中国的移动设备上使用 OpenVPN 成为可能*(据译者所知,大陆 OpenVPN 以前完全阵亡)*。
- Tor
- 桥接的名字是随即生成的;
- Obfsproxy 默认安装并且配置支持 obfs4 传输;
- Android 手机使用 Orbot 扫描二维码即可获取桥接信息并完成自动配置。
- UFW
- 防火墙根据不同的服务完全配置好,任何未经授权的流量都将被阻止。
- 系统无人值守安全更新
- Streisand 所在的服务器自动配置成无人值守更新,自动更新级别为安全更新。
- WireGuard
- Linux 用户可以使用下一代更加简化,基于内核的黑科技 VPN ,速度快,而且使用了很多之前 VPN 所没有加密类型。
安装
在你搞事情之前,认真阅读
重要说明
Streisand 基于 Ansible ,它可以在远程服务器完成自动配置、打包等工作,Streisand 是将远程服务器自动配置成为多个 VPN 服务及科学上网的工具。
Streisand 运行在你自己的计算机上时(或者你电脑的虚拟机上时),它将把网关部署到你 VPS 提供商的另一个服务器上(通过你自己的API自动生成)。另外,如果 Streisand 运行在 VPS 上,它将会把网关部署到另一个 VPS 上,所以说原先你运行 Streisand 的那个 VPS 就多余了,记得部署完成并获得文档后把它删掉,而部署出来的那个 VPS 你是无法使用 SSH 连接进去的,除非你有公钥(当然这是不可能的,因为整个配置过程都没有提供公钥给你下载或者你想办法把它搞出来)。
在某些情况下,你可能需要运行 Streisand/Ansible 在 VPS 上并将其自身配置为 Streisand 服务器,这种模式适合当你无法在你自己的计算机上运行和安装 Streisand/Ansible 时,或本地与 VPS 之间的 SSH 连接不稳定时。
准备工作
在本地计算机完成以下所有步骤(也可以在 VPS 上运行)。
- Streisand 运行在 BSD,Linux,或者 macOS 上,Windows 上是无法运行的。所有的指令都需要在终端下运行。
- 需要 Python 2.7 ,一般在 macOS 、Linux 及 BSD 系统上都是标配,如果你使用的发行版标配是 Python 3,你需要安装 Python 2.7 来运行 Streisand。