Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
zttp — Zero-trust SSH бастион-прокси с управлением ключами на базе Vault, применением политик RBAC, полной записью сессий и административным TUI для аудируемого доступа к производственной инфраструктуре. | Kitploit
Инструменты/GitLabGitLab/nihal799/zttp
Аутентификация и авторизацияБезопасность облачной инфраструктурыОборонительные ИнструментыСетевая безопасностьDevSecOpsУправление идентификацией и доступом (IAM)
GitLabnihal799/zttp

zttp

Zero-trust SSH бастион-прокси с управлением ключами на базе Vault, применением политик RBAC, полной записью сессий и административным TUI для аудируемого доступа к производственной инфраструктуре.

Репозиторий
132 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

ZTTP — прозрачный прокси с нулевым доверием

Укреплённый, самостоятельно размещаемый SSH-бастион с управлением ключами на базе Vault, применением политик RBAC, полной записью сессий и интерактивной TUI для администрирования — создан для команд, которым нужен аудируемый доступ с нулевым доверием к производственной инфраструктуре.


Содержание

  • Зачем нужен ZTTP
  • Обзор архитектуры
  • Ключевые возможности
  • Предварительные требования
  • Быстрый старт — сервер
  • Быстрый старт — клиент
  • Конфигурация
  • Роли и политика RBAC
  • Административная консоль
  • Журналы аудита и записи сессий
  • Сборка из исходного кода
  • Справочник по Makefile
  • Скриншоты и демо
  • Структура проекта
  • Модель безопасности
  • Участие в разработке
  • Лицензия

Зачем нужен ZTTP

Современным инженерным командам нужен способ дать разработчикам минимально необходимый доступ для выполнения их задач — не больше и не меньше. Традиционное распространение SSH-ключей чревато ошибками: ключи передаются между коллегами, забываются на ноутбуках и отзываются слишком поздно.

ZTTP решает эту проблему, выступая в роли единственной двери в вашу инфраструктуру:


Обзор архитектуры

root@kitploit:~
Ноутбук разработчика
      │
      │  zttp
      │  (Под капотом: SSH через порт 2224)
      ▼
┌─────────────────────────────────────────────────────────┐
│                     Прокси ZTTP                         │
│                                                         │
│  ① Шлюз аутентификации — TUI входа bcrypt/Argon2id     │
│  ② Механизм RBAC       — проверка политики с учётом окружения │
│  ③ Получение из Vault  — эфемерное получение SSH-ключа  │
│  ④ Мост               — прозрачный TCP-туннель          │
│  ⑤ Запись аудита      — регистратор кадров ttyrec       │
└──────────┬──────────────────────────────────────────────┘
           │  ssh (частный IP, эфемерный ключ)
           ▼
     Целевой сервер

Инфраструктурные сервисы (Docker Compose):


Ключевые возможности

  • 🔐 Аутентификация с нулевым доверием — Интерактивная TUI входа по SSH с bcrypt-хешированием паролей, ограничением частоты запросов и блокировкой учётной записи после 5 неудачных попыток
  • 🛡️ Механизм политик RBAC — Контроль доступа по ролям и окружениям с помощью одного оптимизированного JOIN в PostgreSQL (без лишних запросов)
  • 🗝️ SSH-ключи на базе Vault — Закрытые ключи никогда не попадают на диск; получаются эфемерно для каждой сессии из HashiCorp Vault
  • 📹 Полная запись сессий — Все сессии записываются в формате .ttyrec с кадрами, содержащими временные метки
  • 🖥️ Интерактивная административная TUI — Полноценный терминальный интерфейс для управления пользователями, регистрации серверов, выдачи прав доступа и просмотра журналов
  • 🔍 Просмотр журналов аудита — Просмотр сессий по серверам, воспроизведение записей или чтение чистых текстовых журналов прямо из административной консоли
  • ⚡ Kill Switch — gRPC-эндпоинт для мгновенного завершения любой активной сессии
  • 📋 Журнал действий администратора — Каждое административное действие (создание пользователя, выдача прав, просмотр журналов) записывается в постоянный журнал аудита
  • 🌍 Кроссплатформенный клиент — Один бинарный файл CLI для Linux, macOS (amd64/arm64) и Windows

Предварительные требования

Сервер (хост прокси):

  • Docker ≥ 24 и Docker Compose ≥ 2.20
  • Публичный IP-адрес или IP в локальной сети на порту 2224
  • make (необязательно, но рекомендуется)

Разработчик (клиент):

  • Любой SSH-клиент (команда ssh)
  • Компьютер под управлением Linux, macOS или Windows

Быстрый старт — сервер

1. Клонируйте репозиторий

root@kitploit:~
git clone https://gitlab.com/Nihal799/zttp.git
cd zttp

2. Настройте окружение

root@kitploit:~
cp .env.example .env

Отредактируйте .env и задайте как минимум:

root@kitploit:~
PROXY_NODE_IP=<публичный-ip-вашего-сервера>
POSTGRES_PASSWORD=<надёжный-пароль>
VAULT_TOKEN=<надёжный-токен-vault>

⚠️ Никогда не коммитьте файл .env. Он указан в .gitignore.

3. Запустите все сервисы

root@kitploit:~
make docker-up
# или напрямую:
docker compose -f deploy/docker-compose.yml up -d --build

4. Проверьте работоспособность сервисов

root@kitploit:~
make docker-ps
curl http://localhost:8080/healthz

5. Соберите и опубликуйте установщики CLI

root@kitploit:~
make release PROXY_ADDR=<ip-вашего-сервера>:2224

Эта команда выполняет кросс-компиляцию клиентов для всех платформ и автоматически обновляет dist/install.sh и dist/install.ps1 с правильным URL сервера. Контейнер Nginx раздаёт их по адресу http://<ip-вашего-сервера>:8555/.


Быстрый старт — клиент

Linux / macOS

root@kitploit:~
curl -fsSL http://<ip-прокси>:8555/install.sh | bash

Windows (PowerShell, запуск от имени администратора)

root@kitploit:~
irm http://<ip-прокси>:8555/install.ps1 | iex

Подключение

После установки подключитесь к шлюзу ZTTP:

root@kitploit:~
zttp
# или напрямую:
ssh -p 2224 <ваше-имя-пользователя>@<ip-прокси>

Вам будет показан экран входа в терминале. После аутентификации вы увидите список серверов, к которым у вас есть доступ.


Конфигурация

Вся конфигурация задаётся через переменные окружения (или файл .env). Полный справочник см. в .env.example.


Роли и политика RBAC

ZTTP использует ролевую модель. Каждому пользователю назначается роль; у каждой роли есть политика, определяющая, к каким окружениям серверов она имеет доступ.

Роли и назначения серверов управляются через административную консоль (см. ниже). Механизм RBAC выполняет все проверки одним запросом к PostgreSQL — он никогда не раскрывает клиенту причину отказа в доступе (защита от перечисления).


Административная консоль

Подключитесь к серверу zttp-admin из меню шлюза или войдите с учётной записью, имеющей роль security-admin.

Административная консоль предоставляет:

Все административные действия записываются в admin-actions.log внутри тома аудита.


Журналы аудита и записи сессий

Все сессии хранятся в Docker-томе zttp-audit-logs (/var/log/zttp/audit/ внутри контейнера).

Просмотр из административной консоли

  1. Войдите как security-admin
  2. Выберите Просмотр журналов аудита
  3. Выберите сервер из списка
  4. Выберите сессию
  5. Выберите Просмотр текстового журнала (без ANSI-кодов, удобочитаемый) или Воспроизведение записи (воспроизведение в реальном времени)
  6. Нажмите Ctrl+C для возврата

Просмотр с хоста (сырые данные)

root@kitploit:~
# Список записей
sudo ls /var/lib/docker/volumes/zttp-audit-logs/_data/

# Воспроизведение записи с помощью ttyplay
sudo ttyplay /var/lib/docker/volumes/zttp-audit-logs/_data/<id-сессии>.ttyrec

# Чтение журнала действий администратора
sudo cat /var/lib/docker/volumes/zttp-audit-logs/_data/admin-actions.log

Сборка из исходного кода

Требования: Go 1.25+, Docker (для кросс-компиляции)

root@kitploit:~
# Сборка прокси + CLI для текущей платформы
make build

# Кросс-компиляция CLI для всех платформ (Linux, macOS, Windows)
make release PROXY_ADDR=<ip-прокси>:2224

# Запуск тестов
make test

# Локальный запуск прокси (требуются запущенные Postgres и Vault)
make run-proxy

Справочник по Makefile


Скриншоты и демо

1. Установка

Демо установки (Нажмите, чтобы воспроизвести демо)

2. Безопасный вход

Демо безопасного входа (Нажмите, чтобы воспроизвести демо)

3. Добавление сервера (административная консоль)

Демо добавления сервера (Нажмите, чтобы воспроизвести демо)

4. Подключение к серверу (шлюз)

Демо подключения к серверу (Нажмите, чтобы воспроизвести демо)

5. Kill Switch (административное отключение)

Демо Kill Switch (Нажмите, чтобы воспроизвести демо)


Структура проекта

root@kitploit:~
zttp/
├── cmd/
│   ├── proxy/          # Точка входа сервера прокси
│   └── zttp/           # Точка входа клиента CLI
├── db/
│   └── migrations/     # Миграции схемы PostgreSQL
├── deploy/
│   ├── docker-compose.yml
│   ├── Dockerfile.proxy
│   └── vault-seed.sh   # Заполнение тестовых SSH-ключей в Vault
├── dist/
│   ├── install.sh      # Скрипт установки для Linux/macOS
│   └── install.ps1     # Скрипт установки для Windows
├── internal/
│   ├── audit/          # Журналирование действий администратора
│   ├── auth/           # Аутентификация пользователей (bcrypt, блокировка)
│   ├── cli/            # TUI клиента CLI и логика подключения
│   ├── config/         # Конфигурация на основе переменных окружения
│   ├── killswitch/     # gRPC-сервис kill-switch
│   ├── proxy/          # SSH-прокси, TUI шлюза, TUI администратора, мост
│   ├── rbac/           # Механизм контроля доступа на основе ролей
│   ├── ratelimit/      # Ограничение частоты запросов по IP
│   ├── session/        # Отслеживание сессий и хранилище БД
│   └── vault/          # Клиент SSH-ключей HashiCorp Vault
├── proto/              # Определения gRPC-протокола
├── tools/
│   └── hashpw/         # Инструмент CLI: генерация bcrypt-хеша пароля
├── .env.example        # Шаблон конфигурации
├── go.mod
└── Makefile

Модель безопасности


Участие в разработке

  1. Сделайте форк репозитория
  2. Создайте ветку для функции: git checkout -b feat/ваша-функция
  3. Внесите изменения, убедившись, что каждый файл получает отдельный коммит
  4. Запустите тесты: make test
  5. Откройте запрос на слияние

Пожалуйста, не коммитьте:

  • .env или любые файлы, содержащие секреты
  • Реальные IP-адреса или имена хостов производственных серверов
  • Скомпилированные бинарные файлы (бинарный файл zttp в корне указан в .gitignore)

Лицензия

Этот проект является проприетарным. Все права защищены.


Создано с использованием Go, PostgreSQL, HashiCorp Vault и Docker.

Скачать инструмент
ПроблемаРешение ZTTP
SSH-ключи хранятся на ноутбукахКлючи живут только в HashiCorp Vault — никогда не попадают на диск
Нет видимости того, кто что делалКаждое нажатие клавиши записывается в формате .ttyrec
Неограниченный доступ к продакшенуМеханизм политик на основе ролей обеспечивает соблюдение правил для каждого окружения
Нет способа остановить активную сессиюgRPC-эндпоинт kill-switch завершает любую активную сессию
Непрозрачный доступ для аудиторовАдминистративная TUI с воспроизведением сессий, текстовыми журналами и журналом действий администратора
СервисНазначение
zttp-proxySSH-бастион (бинарный файл Go)
zttp-postgresБаза данных плоскости управления (пользователи, серверы, политики RBAC)
zttp-vaultHashiCorp Vault — хранит закрытые SSH-ключи
zttp-nginxРаздаёт установщики CLI по адресу /release/
zttp-init-auditОдноразовый контейнер, исправляющий права на тома
ПеременнаяПо умолчаниюОписание
PROXY_LISTEN_ADDR0.0.0.0:2222Адрес привязки SSH-прокси
HTTP_LISTEN_ADDR0.0.0.0:8080HTTP-адрес проверки работоспособности
GRPC_LISTEN_ADDR0.0.0.0:9090gRPC-адрес kill-switch
PROXY_NODE_IP127.0.0.1Внешний IP, встраиваемый в бинарные файлы CLI
DATABASE_URLpostgres://zttp:...Строка подключения к PostgreSQL
VAULT_ADDRhttp://localhost:8201URL сервера Vault
VAULT_TOKENdev-root-token-zttpКорневой токен Vault (только для разработки — в продакшене используйте AppRole)
MAX_FAILED_ATTEMPTS5Порог блокировки
LOCKOUT_DURATION15mПродолжительность блокировки учётной записи
RATE_LIMIT_PER_MIN10Максимум попыток входа в минуту с одного IP
AUDIT_LOG_DIR/var/log/zttp/auditКаталог для записей сессий
SOC_WEBHOOK_URL(пусто)Необязательный вебхук для оповещений SOC
РольДоступ
security-adminПолный доступ ко всем окружениям + административная консоль
sre-tier1Все окружения, включая продакшен
sre-tier2Только staging и разработка
devТолько окружение разработки
readonlyОкружение разработки, ограниченный набор команд
Пункт менюОписание
Добавить пользователяСоздание нового пользователя с назначением роли
Добавить серверРегистрация целевого сервера (имя хоста, IP, окружение, SSH-пользователь)
Управление доступом к серверамВыдача или отзыв доступа пользователя к конкретным серверам
Просмотр пользователейСписок всех пользователей и их ролей
Просмотр серверовСписок всех зарегистрированных серверов
Просмотр журналов аудитаПросмотр сессий, воспроизведение записей, чтение текстовых журналов
[ Назад ]Возврат к шлюзу серверов
КомандаОписание
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=мойпарольГенерация bcrypt-хеша для ручного заполнения БД
make cleanУдаление скомпилированных бинарных файлов и кэша сборки
УровеньМеханизм
ТранспортВсе клиентские подключения — SSH (шифрование при передаче)
Аутентификацияbcrypt (стоимость 12) / Argon2id — открытый текст структурно запрещён в схеме
Защита от перебораБлокировка учётной записи (5 попыток / 15 мин) + ограничитель частоты по IP
АвторизацияЗапрос RBAC с одним JOIN — отказы всегда общие («Отказано в доступе»)
Управление секретамиЗакрытые SSH-ключи хранятся исключительно в HashiCorp Vault, получаются эфемерно
Журнал аудитаПолная запись нажатий клавиш в формате .ttyrec, неизменяемый журнал администратора с добавлением только в конец
Изоляция процессовПрокси работает от непривилегированного пользователя (UID 65532) внутри контейнера distroless
Kill switchЛюбая активная сессия может быть завершена через gRPC без перезапуска прокси