Безопасный запуск экземпляра EC2 в пользовательской VPC
Запуск экземпляра Amazon EC2 непосредственно в общедоступной сети AWS выполняется быстро, но для любой производственной, промежуточной или конфиденциальной среды он создает ненужный риск. Обеспечение безопасности ваших вычислительных ресурсов требует их изоляции в Virtual Private Cloud (VPC) — вашей собственной логически изолированной части AWS Cloud. Это руководство проведет вас через основные шаги по настройке пользовательской VPC, определению необходимых сетевых компонентов, таких как подсети и таблицы маршрутизации, а также безопасному запуску экземпляра EC2, защищенного строгими правилами групп безопасности.
Освоение настройки VPC является основой для создания надежной, масштабируемой и безопасной инфраструктуры AWS. Вручную определяя границы вашей сети, вы получаете детальный контроль над потоком трафика, IP-адресацией и внешними подключениями, что значительно повышает защиту вашей прикладной среды от несанкционированного доступа.
Понимание основных компонентов безопасной VPC
Virtual Private Cloud (VPC) — это основа, на которой строится вся безопасная сетевая инфраструктура AWS. Перед запуском экземпляра необходимо убедиться, что следующие компоненты настроены правильно:
- VPC: Основной контейнер для вашей сети, определяющий диапазон частных IP-адресов (блок CIDR).
- Подсети: Разделения внутри VPC, классифицируемые как Общедоступные (с прямым доступом в Интернет) или Частные (изолированные).
- Internet Gateway (IGW): Требуется для ресурсов в общедоступных подсетях для связи с Интернетом.
- Таблицы маршрутизации: Правила, определяющие, куда направляется сетевой трафик из подсетей.
- Группы безопасности (SG): Stateful-брандмауэры, управляющие входящим и исходящим трафиком на уровне экземпляра.
Шаг 1: Создание пользовательской VPC и подсетей
Начнем с создания сетевой оболочки и ее сегментации на функциональные области. Для стандартной настройки мы рекомендуем как минимум одну общедоступную и одну частную подсеть.
1.1 Создание VPC
При создании вашей VPC выберите частный блок CIDR, который не пересекается с какими-либо локальными сетями, к которым вы можете подключиться позже (например, с использованием AWS VPN или Direct Connect).
Пример CIDR VPC: 10.0.0.0/16
1.2 Создание подсетей
Подсети должны находиться в определенной Зоне доступности (AZ) для обеспечения высокой доступности. Для этого примера мы создадим одну общедоступную и одну частную подсеть в us-east-1a.
- Общедоступная подсеть:
10.0.1.0/24(Используется для bastion-хостов или балансировщиков нагрузки) - Частная подсеть:
10.0.2.0/24(Используется для серверов приложений и баз данных)
Шаг 2: Настройка интернет-соединения и маршрутизации
Ресурсы в частных подсетях не должны иметь прямого доступа в Интернет. Ресурсы в общедоступной подсети должны быть правильно маршрутизированы для доступа в Интернет через Internet Gateway (IGW).
2.1 Подключение Internet Gateway (IGW)
- Создайте ресурс IGW в консоли AWS.
- Прикрепите этот IGW к вашей недавно созданной VPC.
2.2 Настройка таблиц маршрутизации
Таблицы маршрутизации определяют пути трафика. Вам потребуется как минимум две: одна для общедоступной подсети и одна для частной подсети.
Общедоступная таблица маршрутизации
Эта таблица направляет весь нелокальный трафик (0.0.0.0/0) к присоединенному Internet Gateway.
| Назначение | Цель |
|---|---|
10.0.0.0/16 (CIDR VPC) |
local |
0.0.0.0/0 |
igw-xxxxxxxx (Ваш ID IGW) |
Свяжите эту таблицу маршрутизации с вашей Общедоступной подсетью (10.0.1.0/24).
Частная таблица маршрутизации
Эта таблица разрешает только внутреннюю связь. Критически важно, чтобы в ней не было маршрута, указывающего на IGW.
| Назначение | Цель |
|---|---|
10.0.0.0/16 (CIDR VPC) |
local |
Свяжите эту таблицу маршрутизации с вашей Частной подсетью (10.0.2.0/24).
Рекомендация: Если ресурсам в частной подсети требуется загружать исправления или обновления, следует использовать NAT Gateway, размещенный в общедоступной подсети. В этом случае частная таблица маршрутизации будет направлять трафик
0.0.0.0/0на NAT Gateway, а не на IGW.
Шаг 3: Определение строгих правил групп безопасности
Группы безопасности (SG) действуют как виртуальные брандмауэры для ваших экземпляров EC2. Они работают на уровне экземпляра и являются stateful (возвратный трафик автоматически разрешен).
Для безопасной настройки следует придерживаться принципа наименьших привилегий, явно разрешая только необходимый входящий трафик.
Пример группы безопасности для веб-сервера (частная подсеть)
Если этот экземпляр EC2 является сервером приложений, доступным только с балансировщика нагрузки приложений (ALB), расположенного в общедоступной подсети, правила должны быть очень строгими:
Входящие правила
| Тип | Протокол | Диапазон портов | Источник |
|---|---|---|---|
| HTTP | TCP | 80 | ID SG ALB |
| HTTPS | TCP | 443 | ID SG ALB |
| SSH | TCP | 22 | Диапазон IP вашей корпоративной сети или ID SG Bastion Host |
Исходящие правила
По умолчанию исходящий трафик обычно разрешен ко всем назначениям (0.0.0.0/0). При необходимости вы можете ограничить его далее (например, разрешив только подключения к SG экземпляра RDS).
Совет по безопасности: Никогда не назначайте
0.0.0.0/0для порта 22 (SSH) или порта 3389 (RDP) в общедоступной группе безопасности. Всегда ограничивайте доступ к управлению известными внутренними диапазонами IP-адресов.
Шаг 4: Безопасный запуск экземпляра EC2
При запуске экземпляра убедитесь, что вы сопоставили его с правильными сетевыми компонентами, созданными выше.
- Выберите AMI и тип экземпляра: Выберите желаемый образ Amazon Machine Image (AMI) и аппаратные характеристики.
- Настройки сети: На шаге «Настроить сведения об экземпляре»:
- Сеть: Выберите вашу Пользовательскую VPC.
- Подсеть: Выберите Частную подсеть (
10.0.2.0/24), если вы запускаете сервер приложений, который не должен быть напрямую доступен из Интернета. - Автоматическое назначение общедоступного IP: Убедитесь, что этот параметр Отключен, если вы запускаете экземпляр в частной подсети. (Если вы выберете общедоступную подсеть, вы можете включить этот параметр для экземпляра, которому требуется прямой общедоступный доступ, например, для bastion-хоста).
- Группы безопасности: Выберите Группу безопасности, которую вы настроили на Шаге 3.
- Хранилище и пара ключей: Настройте хранилище и привяжите пару ключей для безопасного SSH-доступа.
Доступ к экземплярам в частной подсети
Поскольку экземпляр, находящийся в частной подсети, не имеет общедоступного IP-адреса, вы не можете подключиться по SSH напрямую из общедоступного Интернета. Вам необходимо использовать один из двух безопасных методов:
- Bastion Host (Jump Box): Запустите небольшой, защищенный экземпляр EC2 в Общедоступной подсети. Сначала подключитесь по SSH к bastion-хосту, а затем с bastion-хоста подключитесь по SSH к частному экземпляру, используя его частный IP-адрес.
- AWS Systems Manager (SSM) Session Manager: Это предпочтительный современный метод. Если у экземпляра установлен агент SSM и привязана соответствующая IAM-роль, разрешающая подключение к SSM, вы можете инициировать безопасную сессию оболочки непосредственно из консоли AWS без необходимости входящих правил SSH или Bastion Host.
Итоги и дальнейшие шаги
Защита экземпляра EC2 в пользовательской VPC включает в себя многоуровневую сетевую безопасность от макроуровня (VPC, подсети, таблицы маршрутизации) до микроуровня (группы безопасности). Тщательно контролируя IP-адресацию и поток трафика:
- Вы гарантируете, что серверы приложений размещаются в изолированных частных подсетях.
- Вы используете IGW или NAT Gateway только при необходимости.
- Вы применяете принцип наименьших привилегий с помощью входящих правил группы безопасности.
После запуска экземпляра не забывайте отслеживать его активность с помощью AWS CloudTrail и VPC Flow Logs для обеспечения непрерывной видимости трафика вашей частной сети.