Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
zttp — 零信任SSH堡垒代理,支持基于Vault的密钥管理、RBAC策略强制、完整会话录制,以及用于对生产基础设施进行可审计访问的管理员TUI。 | Kitploit
工具/GitLabGitLab/nihal799/zttp
身份验证与授权云基础设施安全防御工具网络安全DevSecOps身份与访问管理 (IAM)
GitLabnihal799/zttp

zttp

零信任SSH堡垒代理,支持基于Vault的密钥管理、RBAC策略强制、完整会话录制,以及用于对生产基础设施进行可审计访问的管理员TUI。

查看仓库
11112天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

ZTTP:零信任 SSH 堡垒代理

🔗 项目镜像: GitHub | GitLab

ZTTP 是一个用 Golang 构建的加固型、自托管的零信任 SSH 堡垒代理,具备 HashiCorp Vault 支持的密钥管理、RBAC 策略执行、完整的会话录制以及交互式管理 TUI——专为需要对生产基础设施进行可审计、零信任访问的团队而设计。


目录

  • 为什么选择 ZTTP
  • 架构概览
  • 功能亮点
  • 前置条件
  • 快速开始 — 服务端
  • 快速开始 — 客户端
  • 配置
  • 角色与 RBAC 策略
  • 管理控制台
  • 审计日志与会话录制
  • 从源码构建
  • Makefile 参考
  • 截图与演示
  • 项目结构
  • 安全模型
  • 贡献
  • 许可证

为什么选择 ZTTP

现代工程团队需要一种方式,让开发者获得完成工作所需的最小访问权限——不多不少。传统的 SSH 密钥分发容易出错:密钥被共享、遗忘在笔记本电脑上,并且撤销往往迟了好几天。

ZTTP SSH 代理通过充当进入你基础设施的唯一零信任入口来解决这一问题:

问题ZTTP 解决方案
SSH 密钥在笔记本电脑上共享密钥仅存于 HashiCorp Vault——绝不落盘
无法了解谁做了什么每一次击键都以 .ttyrec 格式录制
生产环境访问权限一刀切基于角色的策略引擎按环境执行规则
无法终止活跃会话Kill-switch gRPC 端点可终止任何实时会话
审计人员面对不透明的访问记录管理 TUI 提供会话回放、文本日志和管理员操作日志

架构概览

Developer Laptop
      │
      │  zttp
      │  (Under the hood: SSH over port 2224)
      ▼
┌─────────────────────────────────────────────────────────┐
│                     ZTTP Proxy                          │
│                                                         │
│  ① Auth Gate     — bcrypt/Argon2id login TUI           │
│  ② RBAC Engine   — environment-aware policy check      │
│  ③ Vault Fetch   — ephemeral SSH key retrieval         │
│  ④ Bridge        — transparent TCP tunnel              │
│  ⑤ Audit Writer  — ttyrec frame recorder               │
└──────────┬──────────────────────────────────────────────┘
           │  ssh (private IP, ephemeral key)
           ▼
     Target Server

基础设施服务(Docker Compose):

服务用途
zttp-proxy核心 ZTTP SSH 堡垒代理(Golang 二进制文件)
zttp-postgres控制平面数据库(用户、服务器、RBAC 策略)
zttp-vaultHashiCorp Vault — 存储 SSH 私钥
zttp-nginx在 /release/ 提供 CLI 安装程序
zttp-init-audit修复卷权限的一次性容器

功能亮点

  • 🔐 零信任认证 — 交互式 SSH 登录 TUI,支持 bcrypt 密码哈希、速率限制,以及连续 5 次失败后锁定账户
  • 🛡️ RBAC 策略引擎 — 按角色、按环境的访问控制,仅使用一次优化的 PostgreSQL JOIN(无往返查询)
  • 🗝️ Vault 托管的 SSH 密钥 — 私钥从不落盘;每个会话从 HashiCorp Vault 临时获取
  • 📹 完整会话录制 — 所有会话均以 .ttyrec 格式录制,并带有时间戳帧
  • 🖥️ 交互式管理 TUI — 完整的终端 UI,用于用户管理、服务器注册、访问授权和日志审查
  • 🔍 审计日志查看器 — 按服务器浏览会话、回放录制内容,或直接从管理控制台读取纯文本日志
  • ⚡ 终止开关 — 通过 gRPC 端点即时终止任何活动会话
  • 📋 管理员操作日志 — 每个管理操作(用户创建、访问授权、日志查看)都会记录到持久化审计追踪中
  • 🌍 多平台客户端 — 适用于 Linux、macOS(amd64/arm64)和 Windows 的单二进制 CLI

先决条件

服务器(代理主机):

  • Docker ≥ 24 和 Docker Compose ≥ 2.20
  • 在端口 2224 上具有公网或局域网可访问的 IP
  • make(可选,但推荐)

开发者(客户端):

  • 任意 SSH 客户端(ssh 命令)
  • Linux、macOS 或 Windows 机器

快速开始 — 服务器

1. 克隆仓库

git clone https://gitlab.com/Nihal799/zttp.git
cd zttp

2. 配置你的环境

cp .env.example .env

编辑 .env 并至少设置:

PROXY_NODE_IP=<your-server-public-ip>
POSTGRES_PASSWORD=<a-strong-password>
VAULT_TOKEN=<a-strong-vault-token>

⚠️ 切勿提交你的 .env 文件。 它已被列入 .gitignore。

3. 启动所有服务

make docker-up
# or directly:
docker compose -f deploy/docker-compose.yml up -d --build

4. 验证服务运行状况

make docker-ps
curl http://localhost:8080/healthz

5. 构建并发布 CLI 安装程序

make release PROXY_ADDR=<your-server-ip>:2224

这会为所有平台交叉编译客户端,并使用正确的服务器 URL 自动更新 dist/install.sh 和 dist/install.ps1。Nginx 容器会在 http://<your-server-ip>:8555/ 提供这些文件。


快速开始 — 客户端

Linux / macOS

curl -fsSL http://<proxy-ip>:8555/install.sh | bash

Windows(PowerShell,以管理员身份运行)

irm http://<proxy-ip>:8555/install.ps1 | iex

连接

安装完成后,连接到 ZTTP 网关:

zttp
# or directly:
ssh -p 2224 <your-username>@<proxy-ip>

你将看到一个终端登录界面。通过身份验证后,你将看到一份你被授权访问的服务器列表。


配置

所有配置均通过环境变量(或 .env 文件)完成。完整参考请参见 .env.example。

变量默认值描述
PROXY_LISTEN_ADDR0.0.0.0:2222SSH 代理绑定地址
HTTP_LISTEN_ADDR0.0.0.0:8080健康检查 HTTP 地址
GRPC_LISTEN_ADDR0.0.0.0:9090终止开关 gRPC 地址
PROXY_NODE_IP127.0.0.1嵌入 CLI 二进制文件的外部 IP
DATABASE_URLpostgres://zttp:...PostgreSQL 连接字符串
VAULT_ADDRhttp://localhost:8201Vault 服务器 URL
VAULT_TOKENdev-root-token-zttpVault 根令牌(仅限开发环境——生产环境请使用 AppRole)
MAX_FAILED_ATTEMPTS5锁定阈值
LOCKOUT_DURATION15m账户锁定持续时间
RATE_LIMIT_PER_MIN10每个 IP 每分钟最大登录尝试次数
AUDIT_LOG_DIR/var/log/zttp/audit会话录制目录路径
SOC_WEBHOOK_URL(空)用于 SOC 告警的可选 webhook

角色与 RBAC 策略

ZTTP 使用基于角色的模型。每个用户被分配一个角色;每个角色都有一个策略,定义其可以访问哪些服务器环境。

角色访问权限
security-admin完全访问所有环境 + 管理控制台
sre-tier1所有环境,包括生产环境
sre-tier2仅限预发布和开发环境
dev仅限开发环境
readonly开发环境,受限命令集

角色和服务器分配通过管理控制台(见下文)进行管理。RBAC 引擎在单个 PostgreSQL 查询中执行所有检查——它绝不会向客户端暴露访问被拒绝的原因(枚举保护)。


管理控制台

从网关菜单连接到 zttp-admin 服务器,或使用具有 security-admin 角色的账户登录。

管理控制台提供以下功能:

菜单选项描述
添加用户创建新用户并分配角色
添加服务器注册目标服务器(主机名、IP、环境、SSH 用户)
管理服务器访问授予或撤销用户对特定服务器的访问权限
查看用户列出所有用户及其角色
查看服务器列出所有已注册的服务器
查看审计日志浏览会话、回放录制、阅读文本日志
[ 返回 ]返回服务器网关

所有管理操作都会记录到审计卷内的 admin-actions.log 中。


审计日志与会话录制

所有会话都存储在 zttp-audit-logs Docker 卷中(容器内路径为 /var/log/zttp/audit/)。

从管理控制台查看

  1. 以 security-admin 身份登录
  2. 选择 查看审计日志
  3. 从列表中选择一个服务器
  4. 选择一个会话
  5. 选择 查看文本日志(已去除 ANSI 转义码,可读)或 播放录制(实时回放)
  6. 按 Ctrl+C 返回

从宿主机查看(原始)

# List recordings
sudo ls /var/lib/docker/volumes/zttp-audit-logs/_data/

# Play a recording with ttyplay
sudo ttyplay /var/lib/docker/volumes/zttp-audit-logs/_data/<session-id>.ttyrec

# Read admin actions log
sudo cat /var/lib/docker/volumes/zttp-audit-logs/_data/admin-actions.log

从源码构建

要求: Go 1.25+、Docker(用于交叉编译)

# Build proxy + CLI for current platform
make build

# Cross-compile CLI for all platforms (Linux, macOS, Windows)
make release PROXY_ADDR=<proxy-ip>:2224

# Run tests
make test

# Run proxy locally (requires Postgres + Vault already running)
make run-proxy

Makefile 参考

命令描述
make build为当前平台构建代理和 CLI
make release为所有平台交叉编译 CLI 二进制文件
make release-docker在 Docker 容器内交叉编译(避免 snap/WSL 问题)
make docker-up启动所有 Docker Compose 服务
make docker-down停止所有服务并删除卷
make docker-logs跟踪代理日志
make docker-ps显示容器状态
make test运行所有 Go 测试
make migrate应用数据库迁移
make seed填充开发数据
make hashpw PW=mypassword为手动数据库填充生成 bcrypt 哈希
make clean删除编译的二进制文件和构建缓存

截图与演示

1. 安装

安装演示 (点击播放演示)

2. 安全登录

安全登录演示 (点击播放演示)

3. 添加服务器(管理控制台)

添加服务器演示 (点击播放演示)

4. 连接服务器(网关)

连接服务器演示 (点击播放演示)

下载工具