Jump-сервер (jump host, bastion host) — специально выделенный и усиленный сервер в DMZ или на периметре сети, служащий единственной точкой входа для SSH-доступа к внутренней инфраструктуре. Вместо того чтобы открывать SSH-порт (22/tcp) на каждом сервере напрямую в интернет, все администраторы сначала подключаются к jump-серверу, а затем прыгают дальше на внутренние хосты.
Как работает jump-сервер
Существует два способа использования jump-сервера:
- Ручной: сначала
ssh user@bastion, затем с bastion —ssh user@internal-server. Приватный ключ для внутреннего сервера должен быть на bastion или в SSH-агенте. - ProxyJump (рекомендуется): SSH-клиент использует bastion как прокси прозрачно для пользователя:
ssh -J user@bastion user@internal-server
# Или в ~/.ssh/config:
Host internal-server
HostName 10.0.0.5
User admin
ProxyJump bastion.example.com
При ProxyJump SSH-туннель от клиента до internal-server проходит через bastion — bastion видит только зашифрованный трафик, без доступа к содержимому. Приватный ключ от внутреннего сервера остаётся на машине администратора (SSH agent forwarding), а не копируется на bastion.
История
Концепцию bastion host сформулировал Маркус Ранум (Marcus Ranum) в начале 1990-х в контексте брандмауэров. С распространением SSH в 2000-х jump-сервер стал стандартным архитектурным паттерном для систем с несколькими уровнями сети. Облачные провайдеры (AWS, GCP, Azure) рекомендуют bastion host как базовый элемент сетевой архитектуры — AWS предлагает managed-вариант через AWS Systems Manager Session Manager.
Hardening jump-сервера
Jump-сервер должен быть максимально защищён, так как является единственной точкой входа:
- Минимальный набор установленных пакетов (только openssh-server)
- Только SSH-ключевая авторизация, пароли отключены
- MFA через PAM (Google Authenticator или FIDO2)
- nftables-правила: разрешить SSH только с IP-адресов офиса/VPN
- Полное аудирование команд (
auditd) и запись сессий (asciinema или ssh-audit) - Отдельный мониторинг и алертинг на все SSH-события
Для крупной инфраструктуры bastion может быть заменён PAM-решением (Teleport, HashiCorp Vault SSH) с централизованным управлением доступом, временными сертификатами и полным аудитом сессий. Teleport позволяет выдавать короткоживущие (24-часовые) SSH-сертификаты вместо статичных ключей, что снижает риски при компрометации учётных данных.
Архитектура bastion host
Классическая схема: внешняя сеть → jump-сервер (DMZ) → внутренняя сеть. Jump-сервер имеет два сетевых интерфейса: публичный (доступен извне через порт 22 или нестандартный) и приватный (доступ к внутренним серверам). Внутренние серверы не имеют прямого доступа из интернета — они принимают подключения только с IP jump-сервера.
На jump-сервере работает минимальный набор сервисов: только SSH, мониторинг и логирование. Никаких веб-серверов, баз данных, FTP. Любой лишний сервис расширяет поверхность атаки.
SSH ProxyJump: подключение через jump-сервер
Прямое подключение к внутреннему серверу через jump-хост в одну команду:
ssh -J user@jump-server.example.com user@internal-server-192.168.1.10
Или через конфиг ~/.ssh/config для автоматизации:
Host internal-prod
HostName 192.168.1.10
User admin
ProxyJump jump.example.com
После этого ssh internal-prod автоматически использует jump-сервер. SSH-agent forwarding (ForwardAgent yes) позволяет использовать ключи локальной машины на внутренних серверах без копирования приватных ключей на jump-хост.
Аудит и логирование
Все сессии через jump-сервер должны логироваться. Инструменты: tlog (запись терминальных сессий в JSON), ttyrec, asciinema для воспроизведения. Teleport от Gravitational — современная альтернатива классическому jump-серверу: проксирует SSH-соединения, записывает сессии, интегрируется с SSO (Okta, Google Workspace), управляет сертификатами вместо authorized_keys.
На что обращать внимание
Jump-сервер — критическая точка: его компрометация открывает доступ ко всей внутренней сети. Обязательные меры: SSH-ключи без парольной аутентификации, двухфакторная аутентификация (Google Authenticator + PAM), fail2ban, ограничение источников подключений через фаервол (allowlist корпоративных IP и VPN-адресов).