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 шагов
- Выберите дистрибутив — Ubuntu LTS, минимум пакетов, только SSH.
- Примените Security Group — разрешите SSH только с ваших IP (офис/VPN), остальное запретите.
- Настройте SSH ProxyJump на клиентских машинах (см. конфиг ниже).
- Включите MFA через Google Authenticator или Duo.
- Активируйте запись сессий — 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 sshdfail2ban для блокировки брутфорса:
[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)
- Регулярные обновления
Процесс работы: от аудита до деплоя
- Аудит текущей инфраструктуры — анализ VPC, Security Groups, существующих методов доступа.
- Проектирование архитектуры — схема с bastion, маршрутизация, резервирование.
- Развёртывание через Terraform — создание bastion-хоста, Security Groups, NAT при необходимости.
- Настройка SSH и MFA — hardening, ProxyJump, интеграция с корпоративным IdP.
- Тестирование и документирование — проверка подключений, запись инструкций для команды.
- Обучение и поддержка — разъяснение процесса, 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 — получите консультацию и оценку вашего проекта. Свяжитесь с нами сегодня.







