Как безопасно запустить экземпляр EC2 в пользовательской VPC

Запустите EC2 в пользовательской VPC с публичными и частными подсетями, таблицами маршрутизации, группами безопасности и безопасными путями доступа.

Как безопасно запустить экземпляр EC2 в пользовательской VPC

Запуск экземпляра Amazon EC2 в VPC по умолчанию быстр, но часто дает меньше контроля, чем требуется для производственной или промежуточной среды. Пользовательская VPC позволяет выбрать диапазон адресов, разделить публичные и частные подсети и точно решить, какие пути выходят в интернет.

Это руководство показывает практичную безопасную конфигурацию: публичная подсеть для балансировщиков нагрузки или бастионных хостов, частная подсеть для экземпляров приложений, таблицы маршрутизации, соответствующие этим ролям, и группы безопасности, разрешающие только необходимый трафик.

Понимание основных компонентов безопасной VPC

Виртуальное частное облако (VPC) — это основа, на которой строится вся безопасная сеть AWS. Перед запуском экземпляра необходимо убедиться, что следующие компоненты настроены правильно:

  1. VPC: Основной контейнер для вашей сети, определяющий диапазон частных IP-адресов (блок CIDR).
  2. Подсети: Разделы внутри VPC, классифицируемые как Публичные (с прямым доступом в интернет) или Частные (изолированные).
  3. Интернет-шлюз (IGW): Требуется для ресурсов в публичных подсетях для связи с интернетом.
  4. Таблицы маршрутизации: Правила, определяющие, куда направляется сетевой трафик из подсетей.
  5. Группы безопасности (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)

  1. Создайте ресурс IGW в консоли AWS.
  2. Подключите этот 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

При запуске экземпляра убедитесь, что он сопоставлен с правильными сетевыми компонентами, созданными выше.

  1. Выбор AMI и типа экземпляра: Выберите нужный образ Amazon Machine Image (AMI) и аппаратные характеристики.
  2. Настройки сети: На шаге 'Настройка деталей экземпляра':
    • Сеть: Выберите вашу Пользовательскую VPC.
    • Подсеть: Выберите Частную подсеть (10.0.2.0/24), если вы запускаете сервер приложений, который не должен быть напрямую доступен из интернета.
    • Автоматическое назначение публичного IP: Убедитесь, что эта опция Отключена, если запускаете в частную подсеть. (Если вы выберете публичную подсеть, вы можете включить эту опцию для экземпляра, которому нужен прямой публичный доступ, например, для бастионного хоста).
    • Группы безопасности: Выберите Группу безопасности, настроенную на шаге 3.
  3. Хранилище и ключевая пара: Настройте хранилище и свяжите ключевую пару для безопасного доступа по SSH.

Доступ к экземплярам в частной подсети

Поскольку экземпляр, находящийся в частной подсети, не имеет публичного IP-адреса, вы не можете подключиться по SSH напрямую из публичного интернета. Вы должны использовать один из двух безопасных методов:

  1. Бастионный хост (Jump Box): Запустите небольшой, защищенный экземпляр EC2 в Публичной подсети. Сначала вы подключаетесь по SSH к бастионному хосту, а затем с бастионного хоста подключаетесь по SSH к частному экземпляру, используя его частный IP-адрес.
  2. AWS Systems Manager (SSM) Session Manager: Это предпочтительный современный метод. Если на экземпляре установлен агент SSM и присоединена соответствующая роль IAM, разрешающая подключение через SSM, вы можете инициировать безопасную сессию оболочки непосредственно из консоли AWS без необходимости в правилах входящего SSH или бастионных хостах.

Итоги и следующие шаги

Безопасность экземпляра EC2 в пользовательской VPC включает многоуровневую сетевую защиту от макроуровня (VPC, подсети, таблицы маршрутизации) до микроуровня (группы безопасности). Тщательно контролируя IP-адресацию и поток трафика:

  • Вы гарантируете, что серверы приложений находятся в изолированных частных подсетях.
  • Вы используете IGW или NAT-шлюз только там, где это необходимо.
  • Вы применяете принцип минимальных привилегий через правила входящего трафика групп безопасности.

После запуска экземпляра не забывайте отслеживать его активность с помощью AWS CloudTrail и VPC Flow Logs для поддержания постоянной видимости трафика в вашей частной сети.