Безопасность облачных сетей

Как устроена сеть в облаке и почему большинство облачных утечек — это не «взлом», а неправильно настроенный доступ.

VPC (Virtual Private Cloud) — изолированная виртуальная сеть внутри облака с собственным диапазоном адресов, подсетями и правилами трафика, которой вы управляете как своим дата-центром.

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

Зачем это знать защитнику

Подавляющее большинство громких облачных инцидентов — не эксплойты нулевого дня, а мисконфиги: публичный bucket, security group с правилом 0.0.0.0/0 на порт базы, забытый административный интерфейс. Защитник в облаке — это во многом инженер конфигурации: он проектирует сеть так, чтобы ошибка не приводила к катастрофе, и автоматически ловит опасные настройки.

Строительные блоки облачной сети

VPC и подсети

VPC задаёт частное адресное пространство (например, 10.0.0.0/16) и делится на подсети. Ключевое разделение — публичные и приватные подсети.

  • Публичная подсеть имеет маршрут в интернет-шлюз. Сюда выносят только то, что обязано быть доступно снаружи: балансировщик, реверс-прокси.
  • Приватная подсеть не имеет прямого маршрута из интернета. Здесь живут серверы приложений и, главное, базы данных. Исходящий доступ к интернету (за обновлениями) даётся через NAT-шлюз — он выпускает наружу, но не впускает входящие соединения.

Базы данных и внутренние сервисы никогда не должны жить в публичной подсети. Это первое правило облачной сетевой гигиены.

Security groups и network ACL

Security group (SG) — это файрвол на уровне самого ресурса (виртуальной машины, базы). Он stateful: если вы разрешили входящее соединение, ответ уходит автоматически. Правила — это «что разрешено» (по умолчанию запрещено всё). Network ACL работает на уровне подсети, он stateless (нужно описывать оба направления) и умеет явные deny — это грубый внешний эшелон.

# Концепт правил security group для веб-сервера (псевдоформат)
# Разрешаем HTTPS снаружи и SSH только из админ-сети
INGRESS  tcp  443   from 0.0.0.0/0           # сайт доступен всем
INGRESS  tcp  22    from 203.0.113.10/32     # SSH только с одного админ-IP
EGRESS   all                                 # исходящее по необходимости
# Базы — отдельная SG: порт БД открыт ТОЛЬКО для SG приложения,
# а не для 0.0.0.0/0
INGRESS  tcp  5432  from sg-app               # ссылка на группу, не на весь мир

Обратите внимание на последнюю строку: правило ссылается не на диапазон адресов, а на другую группу безопасности. Так база принимает соединения только от серверов приложения, и при масштабировании ничего переписывать не нужно.

Сегментация в облаке

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

  • По уровням приложения (tiers): web → app → data. Каждый уровень в своей подсети, со своей SG; data-уровень принимает трафик только от app, а не от web напрямую.
  • По окружениям: prod, staging и dev — в разных VPC или хотя бы строго разделённых подсетях, без сквозных правил между ними.
  • Микросегментация: минимальные разрешения между конкретными сервисами, а не «вся подсеть видит всю подсеть».

Через всё это проходит принцип наименьших привилегий: открыт только тот порт, только тому источнику и только туда, где это реально нужно.

Как это работает под капотом

Облачная сеть — программно-определяемая (SDN): «маршрутизаторы», «файрволы» и «подсети» — это записи в конфигурации платформы, а не железо. Поэтому, во-первых, всё описывается кодом (Terraform, CloudFormation) и проходит ревью, как обычный pull request. Во-вторых, security group — это не сетевой бутылочный горлышко, а фильтр, применяемый к интерфейсу каждого ресурса, поэтому он масштабируется автоматически. В-третьих, доступ к самому облаку (кто может менять правила) — это уже IAM, и слабая IAM-политика сводит на нет любую сетевую сегментацию: если злоумышленник получил права менять SG, он сам себе откроет дверь.

Как защититься от мисконфигов

  • Запрещено по умолчанию. Начинайте с пустых правил и добавляйте минимум. Никаких 0.0.0.0/0 на административные порты (SSH/RDP, порты БД).
  • Базы и внутренние сервисы — в приватных подсетях, без публичного IP. Доступ к ним — по ссылке на SG, не по адресу.
  • Инфраструктура как код + ревью. Изменения сети проходят через репозиторий и проверку — труднее «по-быстрому открыть порт» в проде.
  • Автоматический аудит конфигурации (CSPM). Инструменты непрерывно сканируют облако на опасные настройки: публичные бакеты, открытые порты, отсутствие шифрования. Это ловит человеческие ошибки до атакующего.
  • VPC Flow Logs. Включите журналирование сетевых потоков — без него вы не увидите ни разведку, ни эксфильтрацию, ни источник инцидента.
  • Сильная IAM. Право менять сетевые правила — только у тех, кому положено; MFA, наименьшие привилегии, регулярный пересмотр.

Это лабораторно-образовательный материал: экспериментируйте только в своих аккаунтах. Несанкционированный доступ к чужой облачной инфраструктуре наказуем (УК РФ ст. 272/274).

Итоги

  • VPC — это ваша частная сеть в облаке; делите её на публичные и приватные подсети, а базы держите только в приватных.
  • Security group — stateful-файрвол ресурса с логикой «запрещено по умолчанию»; ссылайтесь на другие SG вместо диапазонов адресов.
  • Сегментируйте по уровням (web/app/data) и окружениям (prod/stage/dev), применяя наименьшие привилегии.
  • Главная облачная угроза — мисконфиг, а не эксплойт; защищают инфраструктура-как-код, CSPM-аудит, Flow Logs и сильная IAM.
Проверьте себя
1. Почему базы данных в облаке размещают в приватной подсети, а не в публичной?
AПриватные подсети работают быстрее
BВ приватной подсети нет прямого маршрута из интернета, поэтому БД не доступна снаружи напрямую
CЭто снижает стоимость трафика
DВ публичных подсетях нельзя создавать базы данных технически
2. В чём преимущество правила security group, ссылающегося на другую SG (например, «порт БД открыт для sg-app»), а не на диапазон IP?
AТак быстрее проходят пакеты
BБаза принимает соединения только от серверов приложения, и при масштабировании правила не нужно переписывать
CЭто единственный способ открыть порт в облаке
DЭто шифрует соединение между приложением и базой
3. Что является самой частой причиной утечек данных в облаке?
AУязвимости нулевого дня в гипервизоре провайдера
BФизическая кража серверов из дата-центра
CМисконфиги — публичные бакеты, открытые security groups, забытые админ-интерфейсы
DСлабое шифрование диска по умолчанию