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 — отримайте консультацію та оцінку вашого проекту. Зв'яжіться з нами сьогодні.







