Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
zttp — 제로 트러스트 SSH 배스천 프록시로, Vault 기반 키 관리, RBAC 정책 적용, 전체 세션 녹화, 그리고 프로덕션 인프라에 대한 감사 가능한 접근을 위한 관리자 TUI를 제공합니다. | Kitploit
도구/GitLabGitLab/nihal799/zttp
Authentication & AuthorizationCloud Infrastructure SecurityDefensive ToolsNetwork SecurityDevSecOpsIdentity & Access Management (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볼륨 권한을 수정하는 일회성 컨테이너

주요 기능

  • 🔐 제로 트러스트 인증 — bcrypt 비밀번호 해싱, 속도 제한, 5회 실패 후 계정 잠금을 갖춘 대화형 SSH 로그인 TUI
  • 🛡️ RBAC 정책 엔진 — 단일 최적화된 PostgreSQL JOIN으로 역할별, 환경별 접근 제어 (왕복 없음)
  • 🗝️ Vault 기반 SSH 키 — 개인 키는 디스크에 저장되지 않으며, 세션마다 HashiCorp Vault에서 임시로 가져옴
  • 📹 전체 세션 녹화 — 모든 세션이 타임스탬프 프레임과 함께 .ttyrec 형식으로 녹화됨
  • 🖥️ 대화형 관리자 TUI — 사용자 관리, 서버 등록, 접근 권한 부여, 로그 검토를 위한 전체 터미널 UI
  • 🔍 감사 로그 뷰어 — 서버별로 세션을 탐색하고, 녹화를 재생하거나, 관리자 콘솔에서 직접 깔끔한 텍스트 로그를 읽기
  • ⚡ 킬 스위치 — 모든 활성 세션을 즉시 종료하는 gRPC 엔드포인트
  • 📋 관리자 작업 로그 — 모든 관리 작업(사용자 생성, 접근 권한 부여, 로그 조회)이 영구 감사 추적에 기록됨
  • 🌍 멀티 플랫폼 클라이언트 — Linux, macOS(amd64/arm64), Windows용 단일 바이너리 CLI

사전 요구 사항

서버 (프록시 호스트):

  • Docker ≥ 24 및 Docker Compose ≥ 2.20
  • 포트 2224에서 공용 또는 LAN 접근 가능한 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

이것은 모든 플랫폼용 클라이언트를 크로스 컴파일하고 dist/install.sh 및 dist/install.ps1을 올바른 서버 URL로 자동 업데이트합니다. 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.1CLI 바이너리에 내장되는 외부 IP
DATABASE_URLpostgres://zttp:...PostgreSQL 연결 문자열
VAULT_ADDRhttp://localhost:8201Vault 서버 URL
VAULT_TOKENdev-root-token-zttpVault 루트 토큰 (개발 전용 — 운영 환경에서는 AppRole 사용)
MAX_FAILED_ATTEMPTS5잠금 임계값
LOCKOUT_DURATION15m계정 잠금 지속 시간
RATE_LIMIT_PER_MIN10IP당 분당 최대 로그인 시도 횟수
AUDIT_LOG_DIR/var/log/zttp/audit세션 녹화 디렉터리 경로
SOC_WEBHOOK_URL(비어 있음)SOC 알림용 선택적 웹훅

역할 및 RBAC 정책

ZTTP는 역할 기반 모델을 사용합니다. 각 사용자에게는 역할이 할당되며, 각 역할에는 접근할 수 있는 서버 환경을 정의하는 정책이 있습니다.

역할접근 권한
security-admin모든 환경에 대한 전체 접근 + Admin Console
sre-tier1프로덕션을 포함한 모든 환경
sre-tier2스테이징 및 개발 환경만
dev개발 환경만
readonly개발 환경, 제한된 명령 집합

역할 및 서버 할당은 Admin Console(아래 참조)을 통해 관리됩니다. RBAC 엔진은 모든 검사를 단일 PostgreSQL 쿼리로 수행하며, 클라이언트에게 접근이 거부된 이유를 절대 노출하지 않습니다(열거 방지).


Admin Console

게이트웨이 메뉴에서 zttp-admin 서버에 연결하거나, security-admin 역할을 가진 계정으로 로그인하세요.

Admin Console은 다음을 제공합니다:

메뉴 옵션설명
Add User역할 할당과 함께 새 사용자 생성
Add Server대상 서버 등록 (호스트명, IP, 환경, SSH 사용자)
Manage Server Access특정 서버에 대한 사용자 접근 권한 부여 또는 취소
View Users모든 사용자와 해당 역할 목록 표시
View Servers등록된 모든 서버 목록 표시
View Audit Logs세션 탐색, 녹화 재생, 텍스트 로그 열람
[ Back ]서버 게이트웨이로 돌아가기

모든 관리자 작업은 감사 볼륨 내의 admin-actions.log에 기록됩니다.


감사 로그 및 세션 녹화

모든 세션은 zttp-audit-logs Docker 볼륨(컨테이너 내부의 /var/log/zttp/audit/)에 저장됩니다.

Admin Console에서 보기

  1. security-admin으로 로그인
  2. View Audit Logs 선택
  3. 목록에서 서버 선택
  4. 세션 선택
  5. View Text Log(ANSI 제거, 읽기 가능) 또는 Play Recording(실시간 재생) 선택
  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-dockerDocker 컨테이너 내부에서 크로스 컴파일 (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수동 DB 시딩용 bcrypt 해시 생성
make clean컴파일된 바이너리 및 빌드 캐시 제거

스크린샷 및 데모

도구 다운로드