Категория: Сеть и firewallОбновлено 2026-10-22

Bastion host (бастионный хост)

Бастионный хост (bastion host, или jump host) это жёстко защищённый сервер, который служит единственной намеренно открытой точкой входа в частную сеть. Администратор сначала подключается к нему, обычно по SSH, и уже оттуда попадает на внутренние серверы, поэтому им не нужен публичный порт SSH. NIST определяет его как компьютер, спроектированный и настроенный так, чтобы выдерживать атаки.

Что такое бастионный хост и когда он нужен

Бастионный хост это одна машина между интернетом и серверами, которые вы защищаете. Вместо того чтобы открывать SSH на каждой базе данных, приложении и рабочем узле, вы открываете его только на бастионе, а внутренние серверы принимают SSH исключительно с адреса бастиона. Глоссарий NIST определяет термин как компьютер специального назначения, спроектированный и настроенный так, чтобы выдерживать атаки, поэтому на бастионе должно работать как можно меньше программ.

Выигрыш в концентрации. Вы укрепляете, обновляете, мониторите и логируете одну точку входа вместо многих и видите, кто к какой внутренней системе подключался. Бастион оправдан, когда серверов несколько и они в частной сети, команда администраторов большая или нужно знать, кто куда заходил. Для одного VPS он обычно лишний: лучше настроить SSH с входом только по ключам, как описано в руководстве по защите SSH.

Подключение через бастион с помощью ProxyJump

В OpenSSH поддержка есть из коробки. Согласно справке ssh(1), опция -J сначала подключается к промежуточному хосту, а затем устанавливает оттуда TCP-проброс к конечному адресу. Можно перечислить несколько узлов через запятую. Это сокращение для директивы ProxyJump из ssh_config(5).

Разовое подключение выглядит так:

ssh -J jump.example.com app.internal

Для повседневной работы опишите маршрут в ~/.ssh/config:

Host bastion
    HostName jump.example.com
    User ops

Host app
    HostName 10.0.0.12
    User deploy
    ProxyJump bastion

Теперь ssh app идёт через бастион, а другие инструменты, читающие тот же конфиг, например scp и sftp, используют тот же маршрут. В справке отмечено, что параметры из командной строки относятся к конечному хосту, а не к промежуточным, поэтому настройки для jump host держите в конфиге.

Как защитить бастион

Считайте бастион самой уязвимой машиной из всех, что у вас есть. Начните с входа только по ключам и добавьте второй фактор по руководству по двухфакторной аутентификации; директива AuthenticationMethods позволяет требовать несколько методов. Не ставьте ничего, кроме sshd и мониторинга, разрешите входящий SSH в файрволе только из известных сетей, задайте LogLevel VERBOSE вместо INFO по умолчанию и отправляйте логи за пределы хоста (см. руководство по анализу логов).

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

Одно исключение из обычного чек-листа: ProxyJump это TCP-проброс, поэтому AllowTcpForwarding здесь должен остаться включённым. Ограничивайте его на уровне ключа в authorized_keys опциями из sshd(8):

restrict,port-forwarding,permitopen="10.0.0.12:22" ssh-ed25519 AAAA...

Ограничения и альтернативы

Бастион не панацея. Это единая точка отказа: если он недоступен, администраторы теряют доступ, поэтому держите запасной путь, например консоль провайдера. Это и ценная цель: тот, кто контролирует бастион, оказывается на пути к внутренней сети. В справке sshd отмечено, что отключение проброса не повышает безопасность, если пользователям не запрещён доступ к оболочке, поэтому учётным записям только для перехода не давайте и shell.

Поскольку соединение через ProxyJump это пробрасываемый TCP-поток, бастион фиксирует, кто к какому адресу подключился, но не команды, набранные внутри сессии. Если нужны записи на уровне команд, собирайте их на целевых серверах или используйте специальные средства записи сессий.

Внутренним серверам по-прежнему нужны обновления, учётные записи по принципу наименьших привилегий и собственные правила файрвола. Распространённая альтернатива, когда команде нужен доступ не только по SSH, это VPN или частная сеть провайдера. Для одного небольшого сервера лишний переход не нужен: усильте прямой доступ.

Связанные термины: SSH, Аутентификация по ключам, Двухфакторная аутентификация, Файрвол, authorized_keys, Проброс SSH-агента (agent forwarding).

Часто задаваемые вопросы

Что такое бастионный хост?

Бастионный хост это защищённый сервер, единственная публично доступная точка входа в частную сеть. Администраторы подключаются к нему, а затем через него попадают на внутренние серверы, которые могут отказывать в прямом доступе из интернета.

Бастионный хост и jump host это одно и то же?

На практике да. Термин jump host используется в справке OpenSSH, а bastion host подчёркивает, что машина укреплена так, чтобы выдерживать атаки.

Как подключиться к серверу через бастион?

Используйте ssh -J с промежуточным и конечным хостом, например ssh -J jump.example.com app.internal, или задайте ProxyJump в ~/.ssh/config. Несколько промежуточных хостов перечисляются через запятую.

Нужно ли пробрасывать агент для доступа к внутренним серверам?

Нет. В справке ssh сказано, что проброс агента нужно включать с осторожностью, а промежуточный хост назван более безопасной альтернативой: любой, кто может обойти права доступа к файлам на удалённом хосте, способен использовать ваш агент.

Нужен ли бастион для одного VPS?

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

Хотите увидеть, в каком состоянии ваш сервер?

Запустите бесплатную read-only проверку сервера или откройте Security Lab и посмотрите цикл обнаружение, сдерживание, восстановление, проверка в действии.

Получить бесплатную проверку сервераОткрыть Security Lab