freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Reverst:基于QUIC协议和HTTP3的反向隧道工具
Alpha_h4ck 2024-05-10 23:57:57 151427

关于Reverst

Reverst是一款功能强大的反向隧道工具,Reverst由一个具备负载均衡功能的反向隧道服务器和一个服务器-客户端库组成,该工具使用Go语言开发,基于QUIC和HTTP/3实现其功能。

关于QUIC和HTTP/3

QUIC,即快速UDP互联网连接协议。QUIC(Quick UDP Internet Connections)是由 Google 从2013年开始研究的基于UDP的可靠传输协议,它最早的原型是SPDY + QUIC-Crypto + Reliable UDP,后来经历了SPDY转型为2015年5月IETF 正式发布的HTTP/2.0。考虑到HTTP/2.0和TLS/1.3的发布,它的核心协议族逐步进化为现在的HTTP/3.0 + TLS/1.3 + QUIC-Transport的组合。

而HTTP3则是在保持QUIC稳定性的同时使用UDP来实现高速度(选择QUIC就是选择UDP), 同时又不会牺牲TLS的安全性。HTTP/3的传输层不是TCP,而是UDP+QUIC。

工具特性

当前版本的Reverst具备以下特性:

1、Go语言驱动:基于纯Go语言开发,使用了quic-go库;

2、兼容性;client包(Go)基于net/http标准库抽象实现;

3、负载均衡:可以在同一个隧道运行多个服务实例;

4、高性能:基于QUIC和HTTP/3实现其功能;

使用场景

Reverst主要用于将受限网络中的服务(例如受NAT网关保护的服务)公开并暴露到外网上。隧道文件需要部署在外网上,然后客户端服务器与隧道建立通信,并在目标隧道组中进行注册。隧道组是一组负载平衡的客户端服务器,通过反向隧道HTTP接口暴露在外网中。

下图所示为隧道生命周期:

工具安装

客户端

客户端安装命令:

go get go.flipt.io/reverst/client

代码构建:

go install ./client/...

服务器端

代码构建:

go install ./cmd/...

测试

Reverst使用Dagger来配置并运行一个集成测试套件:

dagger call test --source=.

测试套件会配置一个隧道,并在隧道中注册一个服务器-客户端,并通过隧道HTTP接口请求服务。

工具运行

下列参数是隧道服务器运行时的参数实例:

1、QUCI隧道监听127.0.0.1:7171;

2、HTTP服务监听127.0.0.1:8181;

3、日志记录设置为debug级别;

配置命令如下:

go run ./cmd/reverst/... -l debug \

    -n flipt.dev.local \

    -g examples/simple/group.yml \

    -k examples/simple/server.key \

-c examples/simple/server.crt

下列命令可以运行样例服务器:

go run ./examples/simple/main.go --username user --password pass

下列命令可以向服务发送请求:

curl -H 'Host: flipt.dev.local' 127.0.0.1:8181/fo

工具使用和配置

命令行参数选项与环境变量

reverst -h

COMMAND

  reverst

 

USAGE

  reverst [FLAGS]

 

FLAGS

  -l, --log LEVEL                      debug、info、warn或error (默认: INFO)

  -a, --tunnel-address STRING       接收隧道QUIC连接的地址 (默认: 127.0.0.1:7171)

  -s, --http-address STRING           处理HTTP请求的地址 (默认: 0.0.0.0:8181)

  -n, --server-name STRING           通过TLS识别隧道的服务器名称 (必须)

  -k, --private-key-path STRING      path to TLS private key PEM file (必须)

  -c, --certificate-path STRING      TLS证书PEM文件路径 (必须)

  -g, --tunnel-groups STRING       k8s配置映射标识符或文件路径 (默认: groups.yml)

  -w, --watch-groups                  监控隧道组源以获取更新

      --management-address STRING    管理API的HTTP地址

      --max-idle-timeout DURATION    连接可以空闲的最长时间 (默认: 1ms)

      --keep-alive-period DURATION   keep-alive事件间隔时间(默认: 30s)

隧道组配置

reverst -g path/to/configuration.yml

// alternatively:

reverst -g file:///path/to/configuration.yml

或:

reverst -g k8s://configmap/default/tunnelconfig/groups.yml

配置多个身份验证策略

groups:

  "group-name":

    hosts:

    - "some.host.address.dev" # Host for routing inbound HTTP requests to tunnel group

    authentication:

      basic:

        username: "user"

        password: "pass"

      bearer:

        token: "some-token"

      external:

        scheme: "JWT"

        endpoint: "http://some-external-endpoint/auth/ext"

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可协议。

项目地址

Reverst:【GitHub传送门

参考资料

https://www.flipt.io/

https://github.com/quic-go/quic-go

# 通信安全 # Go # 隧道传输 # 反向隧道 # 隧道搭建
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Alpha_h4ck 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Alpha_h4ck LV.10
好好学习,天天向上
  • 2359 文章数
  • 1023 关注者
Tetragon:一款基于eBPF的运行时环境安全监控工具
2025-01-21
DroneXtract:一款针对无人机的网络安全数字取证工具
2025-01-21
CNAPPgoat:一款针对云环境的安全实践靶场
2025-01-21
文章目录