Bastion host: безопасный SSH-доступ к приватным серверам

Разработчикам приходится открывать SSH-доступ к серверам в приватных подсетях, что создаёт риски для безопасности. Мы настраиваем bastion host — единую точку входа с жёстким hardening и логированием сессий. Наша команда реализует проект под ключ, обеспечивая надёжный и контролируемый доступ.
Часто задаваемые вопросы

Bastion host: единственная точка входа в приватную инфраструктуру

Представьте: у вас 50 серверов в приватных подсетях, ни одного публичного IP. Чтобы подключиться, разработчики копируют ключи на каждый сервер? Или открывают SSH на всех инстансах? Оба варианта — дыра в безопасности. По статистике, большинство инцидентов связаны именно с неправильным управлением доступом. Мы сталкивались с таким не раз и знаем, как это исправить.

Bastion host — единственная контролируемая точка входа во всю private-инфраструктуру. Вместо 50 открытых портов — один jump-хост с жёстким hardening. Доступ через SSH ProxyJump, без копирования ключей на bastion. Сессии пишутся, каждое подключение логируется. Мы настраиваем такие решения под ключ — от простого bastion до интеграции с Teleport или AWS SSM. Оценим ваш проект за один день.

Как bastion host снижает риск безопасности?

Любой security audit (PCI DSS, SOC 2) требует изоляции доступа к production. Bastion минимизирует attack surface: вы открываете один порт на bastion, и то только с белого списка IP. Полный контроль сессий — кто, когда, что делал. Без bastion это невозможно. Согласно NIST SP 800-207, минимальная конфигурация должна включать bastion для доступа к критическим системам. Экономия на лицензиях при использовании bastion вместо VPN может достигать 70%. Стоимость одного инцидента безопасности может быть многократно выше.

Архитектура: как мы строим bastion в AWS

Типичная схема от наших инженеров: bastion в public subnet с Elastic IP, все EC2 в private subnets. Security Group bastion принимает SSH только с офисных IP (например, 203.0.113.0/24). Security Group внутренних серверов — только от bastion. Никаких 0.0.0.0/0. Пример Terraform:

resource "aws_security_group" "bastion" {
  name = "bastion-sg"
  vpc_id = var.vpc_id

  ingress {
    from_port = 22
    to_port = 22
    protocol = "tcp"
    cidr_blocks = var.allowed_cidr_blocks # ["203.0.113.0/24"]
  }

  egress {
    from_port = 0
    to_port = 0
    protocol = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

resource "aws_security_group" "internal" {
  name = "internal-servers-sg"
  vpc_id = var.vpc_id

  ingress {
    from_port = 22
    to_port = 22
    protocol = "tcp"
    security_groups = [aws_security_group.bastion.id]
  }
}

Что делать, если у вас нет публичных IP?

Если инфраструктура полностью изолирована, используйте AWS SSM или Azure Bastion. Эти сервисы не требуют публичного IP — доступ через API с IAM-аутентификацией. Но для интерактивной работы bastion быстрее: задержка SSM на 200–500 мс выше. Мы часто комбинируем: bastion для SSH, SSM для автоматизации.

Практический пример: bastion для Kubernetes

В одном проекте мы настраивали bastion для доступа к Kubernetes API. У нас был частный кластер EKS в VPC без публичного доступа. Devops-инженерам нужно было запускать kubectl и helm. Решение: bastion с установленным kubectl и helm, а также настроенным kubeconfig через AWS IAM Authenticator. Доступ через ProxyJump с MFA. Это позволило полностью изолировать API-сервер и при этом дать разработчикам удобный интерфейс. Весь процесс описан в runbook, который мы передаём клиенту.

Как настроить bastion за 5 шагов

  1. Выберите дистрибутив — Ubuntu LTS, минимум пакетов, только SSH.
  2. Примените Security Group — разрешите SSH только с ваших IP (офис/VPN), остальное запретите.
  3. Настройте SSH ProxyJump на клиентских машинах (см. конфиг ниже).
  4. Включите MFA через Google Authenticator или Duo.
  5. Активируйте запись сессий — tlog, auditd или SSM.

Пример ~/.ssh/config для прозрачного доступа:

Host bastion
    HostName 203.0.113.10
    User ubuntu
    IdentityFile ~/.ssh/id_ed25519
    ServerAliveInterval 60

Host *.internal
    User ubuntu
    IdentityFile ~/.ssh/id_ed25519
    ProxyJump bastion

После этого ssh app-server-01.internal подключается автоматически через bastion. Для scp: scp -o ProxyJump=bastion file.tar.gz app-server-01.internal:/tmp/.

Bastion vs AWS SSM: что выбрать?

Критерий Bastion Host AWS SSM Session Manager
Публичный IP Требуется Не требуется
SSH-ключи Да Нет (IAM)
Запись сессий Через tlog/script Встроенная (S3 + CloudTrail)
Скорость Высокая Средняя (лаг)
Сложность настройки Низкая Средняя (IAM + Agent)

SSM хорош для простых сценариев, но для частой интерактивной работы bastion быстрее и привычнее. Мы часто комбинируем: bastion для SSH, SSM для автоматизации. Дополнительно, bastion снижает затраты на инциденты безопасности при правильной настройке.

Какие меры безопасности обязательны на bastion?

Базовый hardening на bastion:

sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config
echo "AllowUsers bastion-user" >> /etc/ssh/sshd_config
echo "Port 2222" >> /etc/ssh/sshd_config
systemctl reload sshd

fail2ban для блокировки брутфорса:

[sshd] enabled = true maxretry = 3 bantime = 3600 findtime = 600 

MFA через libpam-google-authenticator обязательна для продакшна. Для команд от 10 человек — интеграция с Duo или Okta через RADIUS. Это даёт двухфакторную аутентификацию поверх SSH-ключа.

Чек-лист настройки bastion host:

  • Минимальный дистрибутив (Ubuntu LTS, Debian, Alpine)
  • SSH на нестандартном порту
  • Только ключи + MFA
  • fail2ban с maxretry=3
  • Security Group с белым списком IP
  • Запись сессий (tlog, auditd)
  • Регулярные обновления

Процесс работы: от аудита до деплоя

  1. Аудит текущей инфраструктуры — анализ VPC, Security Groups, существующих методов доступа.
  2. Проектирование архитектуры — схема с bastion, маршрутизация, резервирование.
  3. Развёртывание через Terraform — создание bastion-хоста, Security Groups, NAT при необходимости.
  4. Настройка SSH и MFA — hardening, ProxyJump, интеграция с корпоративным IdP.
  5. Тестирование и документирование — проверка подключений, запись инструкций для команды.
  6. Обучение и поддержка — разъяснение процесса, runbook.

Сроки и стоимость

Базовая настройка bastion с hardening занимает от 3 до 5 часов. Интеграция с SSM или Teleport — от 1 до 2 рабочих дней. Стоимость рассчитывается индивидуально в зависимости от сложности инфраструктуры и требований по аудиту. В среднем, экономия на лицензиях и администрировании составляет до 70% после внедрения.

Что входит в настройку bastion под ключ

  • Проектирование архитектуры (схема VPC, Security Groups, NAT)
  • Развёртывание bastion через Terraform/CloudFormation
  • Настройка SSH ProxyJump и конфигов для команды
  • MFA (TOTP или корпоративное)
  • Система аудита сессий (tlog, auditd или Teleport)
  • Документация и обучение команды

Гарантируем, что после настройки вы пройдёте любой audit. Опыт наших инженеров — 7+ лет в DevOps, более 50 проектов по безопасности инфраструктуры.

Закажите настройку bastion — получите консультацию и оценку вашего проекта. Свяжитесь с нами сегодня.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139