增加防探测功能,增加流量加密功能

This commit is contained in:
wenyifan
2022-09-09 15:29:41 +08:00
parent c2ab6cbe5f
commit a064f72104
12 changed files with 185 additions and 79 deletions

View File

@ -1,11 +1,11 @@
# Shadow-TLS
### TLS伪装代理 -- 包装任意TCP连接为真正合法域名的TLS连接
## 基本原理
与服务端连接后,服务端会请求指定合法的HTTPS域名(例如www.apple.com)并转发TLS握手流量(给防火墙/审计设备表演一个真正的TLS握手),与客户端TLS握手成功后后续将转发实际的TCP流量,对审计设备(防火墙/上网行为管理软件/零信任网关)而言你是访问一个合法且是真实证书的HTTPS网站.
给审计设备表演一个访问指定网站的TLS握手,在后续的加密流量中传输自定义的数据,由于握手的证书是真实的证书,对审计设备(防火墙/上网行为分析/零信任网关)而言本次TCP连接是访问指定网站的HTTPS流量
## 使用场景
- 在有域名白名单的情况下需要将流量转发出去
- 对抗网络审计设备的审查
- 审计设备会验证TLS证书合法性,自签证书无法通过审计设备的场景
## 使用方法
- 服务端示例:
@ -18,6 +18,17 @@
```shell
./shadowtls client -l 0.0.0.0:11222 -s 145.142.63.32:443 -d www.apple.com
```
## 探测防御
- 设置参数密码-p 可开启探测防御功能,服务端检测到非被客户端发起的请求后将会作为标准的SNI代理服务器,转发用于伪装源站的所有流量,对主动探测者而言这台服务器是指定网站的官方服务器
- 若被大量请求可能造成服务器产生大量流量,注意风控
## 流量加密
- 设置加密密钥参数-k 可启用流量加密,密钥长度必须为16,24或32个字符
## 已知限制
- 若审计软件会对HTTPS证书进行替换使用审计软件自签的证书,本工具将不再适用
## 使用Nginx将本服务和其他443端口服务并存
- 编译带有stream和stream_ssl_preread模块的nginx
- 参考以下配置
@ -69,10 +80,6 @@ http {
```
## 安全性特别说明
- 包装的TCP流量没有加密,因由上层处理,推荐配合gost使用
## 特别说明
- 感谢v2ex网友ihciah的思路灵感.
- 仅供技术研究,请勿用于非法用途.