Как безопасно запустить экземпляр EC2 в пользовательской VPC
Запустите EC2 в пользовательской VPC с публичными и частными подсетями, таблицами маршрутизации, группами безопасности и безопасными путями доступа.
Как безопасно запустить экземпляр EC2 в пользовательской VPC
Запуск экземпляра Amazon EC2 в VPC по умолчанию быстр, но часто дает меньше контроля, чем требуется для производственной или промежуточной среды. Пользовательская VPC позволяет выбрать диапазон адресов, разделить публичные и частные подсети и точно решить, какие пути выходят в интернет.
Это руководство показывает практичную безопасную конфигурацию: публичная подсеть для балансировщиков нагрузки или бастионных хостов, частная подсеть для экземпляров приложений, таблицы маршрутизации, соответствующие этим ролям, и группы безопасности, разрешающие только необходимый трафик.
Понимание основных компонентов безопасной VPC
Виртуальное частное облако (VPC) — это основа, на которой строится вся безопасная сеть AWS. Перед запуском экземпляра необходимо убедиться, что следующие компоненты настроены правильно:
- VPC: Основной контейнер для вашей сети, определяющий диапазон частных IP-адресов (блок CIDR).
- Подсети: Разделы внутри VPC, классифицируемые как Публичные (с прямым доступом в интернет) или Частные (изолированные).
- Интернет-шлюз (IGW): Требуется для ресурсов в публичных подсетях для связи с интернетом.
- Таблицы маршрутизации: Правила, определяющие, куда направляется сетевой трафик из подсетей.
- Группы безопасности (SG): Межсетевые экраны с отслеживанием состояния, которые контролируют входящий и исходящий трафик на уровне экземпляра.
Шаг 1: Создание пользовательской VPC и подсетей
Начнем с создания сетевой оболочки и разделения ее на функциональные зоны. Для стандартной настройки рекомендуется как минимум одна публичная и одна частная подсеть.
1.1 Создание VPC
При создании VPC выберите частный блок CIDR, который не пересекается с локальными сетями, к которым вы можете подключиться позже (например, с помощью AWS VPN или Direct Connect).
Пример CIDR VPC: 10.0.0.0/16
1.2 Создание подсетей
Каждая подсеть находится в одной зоне доступности (AZ). Производственные VPC обычно используют соответствующие публичные и частные подсети как минимум в двух AZ, но в этом примере конфигурация небольшая: одна публичная и одна частная подсеть в us-east-1a.
- Публичная подсеть:
10.0.1.0/24(Используется для бастионных хостов или балансировщиков нагрузки) - Частная подсеть:
10.0.2.0/24(Используется для серверов приложений и баз данных)
Шаг 2: Настройка подключения к интернету и маршрутизации
Ресурсы в частных подсетях не должны иметь прямого доступа в интернет. Ресурсы в публичной подсети должны быть правильно маршрутизированы для выхода в интернет через интернет-шлюз (IGW).
2.1 Подключение интернет-шлюза (IGW)
- Создайте ресурс IGW в консоли AWS.
- Подключите этот IGW к вашей новой VPC.
2.2 Настройка таблиц маршрутизации
Таблицы маршрутизации определяют пути трафика. Вам нужно как минимум две: одна для публичной подсети и одна для частной подсети.
Таблица маршрутизации для публичной подсети
Эта таблица направляет весь неместный трафик (0.0.0.0/0) на подключенный интернет-шлюз.
| Назначение | Цель |
|---|---|
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-шлюз, размещенный в публичной подсети. Тогда таблица маршрутизации частной подсети будет направлять трафик
0.0.0.0/0на NAT-шлюз вместо IGW.
Шаг 3: Определение строгих правил групп безопасности
Группы безопасности (SG) действуют как виртуальные брандмауэры для ваших экземпляров EC2. Они работают на уровне экземпляра и являются отслеживающими состояние (возвратный трафик разрешается автоматически).
Для безопасной настройки следует придерживаться принципа минимальных привилегий, явно разрешая только необходимый входящий трафик.
Пример группы безопасности для веб-сервера (частная подсеть)
Если этот экземпляр EC2 является сервером приложений, доступным только из балансировщика нагрузки приложений (ALB), находящегося в публичной подсети, правила должны быть строго ограничены:
Входящие правила
| Тип | Протокол | Диапазон портов | Источник |
|---|---|---|---|
| HTTP | TCP | 80 | ID SG балансировщика нагрузки |
| HTTPS | TCP | 443 | ID SG балансировщика нагрузки |
| SSH | TCP | 22 | Диапазон IP вашей корпоративной сети или ID SG бастионного хоста |
Исходящие правила
По умолчанию исходящий трафик обычно разрешен во все направления (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: Убедитесь, что эта опция Отключена, если запускаете в частную подсеть. (Если вы выберете публичную подсеть, вы можете включить эту опцию для экземпляра, которому нужен прямой публичный доступ, например, для бастионного хоста).
- Группы безопасности: Выберите Группу безопасности, настроенную на шаге 3.
- Хранилище и ключевая пара: Настройте хранилище и свяжите ключевую пару для безопасного доступа по SSH.
Доступ к экземплярам в частной подсети
Поскольку экземпляр, находящийся в частной подсети, не имеет публичного IP-адреса, вы не можете подключиться по SSH напрямую из публичного интернета. Вы должны использовать один из двух безопасных методов:
- Бастионный хост (Jump Box): Запустите небольшой, защищенный экземпляр EC2 в Публичной подсети. Сначала вы подключаетесь по SSH к бастионному хосту, а затем с бастионного хоста подключаетесь по SSH к частному экземпляру, используя его частный IP-адрес.
- AWS Systems Manager (SSM) Session Manager: Это предпочтительный современный метод. Если на экземпляре установлен агент SSM и присоединена соответствующая роль IAM, разрешающая подключение через SSM, вы можете инициировать безопасную сессию оболочки непосредственно из консоли AWS без необходимости в правилах входящего SSH или бастионных хостах.
Итоги и следующие шаги
Безопасность экземпляра EC2 в пользовательской VPC включает многоуровневую сетевую защиту от макроуровня (VPC, подсети, таблицы маршрутизации) до микроуровня (группы безопасности). Тщательно контролируя IP-адресацию и поток трафика:
- Вы гарантируете, что серверы приложений находятся в изолированных частных подсетях.
- Вы используете IGW или NAT-шлюз только там, где это необходимо.
- Вы применяете принцип минимальных привилегий через правила входящего трафика групп безопасности.
После запуска экземпляра не забывайте отслеживать его активность с помощью AWS CloudTrail и VPC Flow Logs для поддержания постоянной видимости трафика в вашей частной сети.