2. Сетевая безопасность
В этом разделе представлены рекомендации пользователям по настройкам безопасности в Yandex Virtual Private Cloud.
Подробно о том, как настроить сетевую инфраструктуру, рассказывается в вебинаре Как работает сеть в Yandex Cloud
Чтобы изолировать приложения друг от друга, поместите ресурсы в разные группы безопасности, а если требуется наиболее строгая изоляция — в разные сети. Трафик внутри сети по умолчанию разрешен, а между сетями — нет. Трафик между сетями можно передавать только через виртуальную машину с двумя сетевыми интерфейсами в разных сетях, VPN или сервис Yandex Cloud Interconnect.
2.1 Для объектов облака используется межсетевой экран или группы безопасности
Встроенный механизм групп безопасности позволяет управлять доступом ВМ к ресурсам и группами безопасности Yandex Cloud или ресурсам в интернете. Группа безопасности — это набор правил для входящего и исходящего трафика, который можно назначить на сетевой интерфейс ВМ. Группы безопасности работают как stateful firewall, то есть отслеживают состояние сессий: если правило разрешает создать сессию, ответный трафик будет автоматически разрешен. Инструкцию по настройке групп безопасности см. в разделе Создать группу безопасности. Указать группу безопасности можно в настройках ВМ.
Группы безопасности могут использоваться для защиты:
- ВМ.
- Управляемых баз данных.
- Балансировщиков нагрузки Yandex Application Load Balancer.
- Кластеров Yandex Managed Service for Kubernetes.
Список доступных сервисов расширяется.
Вы можете управлять сетевым доступом без групп безопасности, например, с помощью отдельной ВМ — межсетевой экран на основе образа NGFW из Yandex Cloud Marketplace, либо своего собственного образа. Использование NGFW может быть критично для тех клиентов, которым необходима следующая функциональность:
- Составление логов сетевых соединений.
- Потоковый анализ трафика на предмет зловредного контента.
- Обнаружение сетевых атак по сигнатурам.
- Другая функциональность классических NGFW-решений.
Убедитесь, что в ваших облаках используются группы безопасности на каждом объекте облака, либо используется отдельная ВМ NGFW из Cloud Marketplace, либо по принципу «bring your own image» («используй свое устройство» — принцип, позволяющий использовать свое оборудование или образы системы).
Проверка наличия групп безопасности на объектах:
- Откройте консоль управления Yandex Cloud
в вашем браузере. - Перейдите в каждое облако и в каждый каталог и последовательно открывайте все перечисленные ресурсы в пункте «Объекты, на которые возможно применить группы безопасности».
- В настройках объектов найдите параметр Группа безопасности и убедитесь, что назначена хотя бы одна группа безопасности.
- Если в параметрах каждого объекта, который поддерживает группы безопасности указана хотя бы одна группа, рекомендация выполняется. Если нет, перейдите к пункту «Инструкции и решения по выполнению».
Проверка наличия NGFW вместо групп безопасности:
- Откройте консоль управления Yandex Cloud в вашем браузере.
- Перейдите в каждое облако и в каждый каталог и последовательно откройте все диски ВМ.
- В настройках дисков найдите параметр Продукт Marketplace.
- Если в параметрах Продукт Marketplace в диске указано одно из названий продуктов NGFW: Check Point CloudGuard IaaS — Firewall & Threat Prevention PAYG, UserGate NGFW, рекомендация выполняется. Если нет, перейдите к пункту «Инструкции и решения по выполнению».
-
Посмотрите доступные вам организации и зафиксируйте необходимый
ID
:yc organization-manager organization list
-
Выполните команду для поиска объектов облака без группы безопасности:
export ORG_ID=<ID организации> for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id'); do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id'); do for VM_ID in $(yc compute instance list --folder-id=$FOLDER_ID --format=json | jq -r '.[].id'); do yc compute instance get --id=$VM_ID --format=json | jq -r '. | select(.network_interfaces[].security_group_ids | not)' | jq -r '.id' done; done; done
-
Если выдается пустая строка, рекомендация выполняется. Если выдается результат с
ID
облачного ресурса, перейдите к пункту «Инструкции и решения по выполнению».
Проверка наличия NGFW вместо группы безопасности:
-
Выполните команду для поиска NGFW в облаке. По умолчанию команда ищет Checkpoint или Usergate. Если используете свой образ, укажите его.
export ORG_ID=<ID организации> for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id'); do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id'); do for DISK_ID in $(yc compute disk list --folder-id=$FOLDER_ID --format=json | jq -r '.[].id'); do yc compute disk get --id=$DISK_ID --format=json | jq -r '. | select(.product_ids[0]=="f2ecl4ak62mjbl13qj5f" or .product_ids[0]=="f2eqc5sac8o5oic7m99k")' | jq -r '.id' done; done; done
-
Если выдается
ID
ВМ с NGFW, рекомендация выполняется. Если выдается пустая строка, перейдите к пункту «Инструкции и решения по выполнению».
Инструкции и решения по выполнению:
- Примените группы безопасности на все объекты, на которых группа отсутствует.
- Для применения группы безопасности с помощью Terraform используйте настройку групп безопасности (dev/stage/prod) с помощью Terraform
. - Для использования NGFW установите
на ВМ межсетевой экран (NGFW): Check Point. - Инструкция
по использованию UserGate NGFW в облаке. - NGFW в режиме active-passive
.
2.2 В Virtual Private Cloud существует как минимум одна группа безопасности
Чтобы назначить группы безопасности на облачные объекты в Virtual Private Cloud, должна существовать как минимум одна группа безопасности. Дополнительно существует возможность создания группы безопасности по умолчанию — такая группа назначается облачным объектам при подключении к подсетям, если у них нет ни одной группы. Убедитесь в том, что хотя бы одна группа безопасности существует в каждой сети.
- Откройте консоль Yandex Cloud в вашем браузере.
- Перейдите в каждое облако, далее в каждый каталог и в каждую Virtual Private Cloud.
- Перейдите в раздел Группы безопасности.
- Если обнаружена как минимум одна группа безопасности для каждой Virtual Private Cloud, либо группа по умолчанию, рекомендация выполняется. Если нет, перейдите к пункту «Инструкции и решения по выполнению».
-
Посмотрите доступные вам организации и зафиксируйте необходимый
ID
:yc organization-manager organization list
-
Выполните команду для поиска каталогов без группы безопасности:
export ORG_ID=<ID организации> for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id'); do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id'); \ do echo "SG_ID: " && yc vpc security-group list --folder-id=$FOLDER_ID --format=json | jq -r '.[] | select(.id)' | jq -r '.id' && echo "FOLDER_ID: " $FOLDER_ID && echo "-----" done; done
-
Если у каждого сочетания
SG_ID
напротивFOLDER_ID
, в которой она находится, указаныID
, рекомендация выполняется. Если нет, перейдите к пункту «Инструкции и решения по выполнению».
Инструкции и решения по выполнению:
Создайте группу безопасности в каждой Virtual Private Cloud с ограниченными правилами доступа, чтобы ее можно было назначать на облачные объекты.
2.3 В группах безопасности отсутствует слишком широкое правило доступа
В группе безопасности существует возможность открыть сетевой доступ для абсолютно всех IP-адресов интернета и также по всем диапазонам портов. Опасное правило выглядит следующим образом:
- Диапазон портов: 0-65535 или пусто.
- Протокол: любой или TCP/UDP.
- Источник: CIDR.
- CIDR блоки: 0.0.0.0/0 (доступ со всех адресов) или ::/0 (ipv6).
Важно
Если диапазон портов не указан, считается, что доступ предоставляется по всем портам (0-65535).
Открывать сетевой доступ необходимо только по тем портам, которые требуются для работы вашего приложения, и для тех адресов, с которых необходимо подключаться к вашим объектам.
- Откройте консоль Yandex Cloud в вашем браузере.
- Перейдите в каждое облако, далее в каждый каталог и в каждую Virtual Private Cloud.
- Перейдите в раздел Группы безопасности.
- Если не обнаружено ни одной группы безопасности, в которой есть правила сетевого доступа, разрешающие доступ по всем портам для всех адресов (интерпретация указана выше), рекомендация выполняется. Если нет, то перейдите к пункту «Инструкции и решения по выполнению».
-
Посмотрите доступные вам организации и зафиксируйте необходимый
ID
:yc organization-manager organization list
-
Найдите группы безопасности с опасным правилом доступа:
export ORG_ID=<ID организации> for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id'); do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id'); \ do echo "SG_ID: " && yc vpc security-group list --folder-id=$FOLDER_ID \ --format=json | jq -r '.[] | select(.rules[].direction=="INGRESS" and .rules[].ports.to_port=="65535" and .rules[].cidr_blocks.v4_cidr_blocks[]=="0.0.0.0/0")' | jq -r '.id' \ && echo "FOLDER_ID: " $FOLDER_ID && echo "-----" done; done
-
Если
SG_ID
напротивFOLDER_ID
указано пустое значение, рекомендация выполняется. Если вы видите не пустоеSG_ID
, перейдите к пункту «Инструкции и решения по выполнению».
Инструкции и решения по выполнению:
Удалите опасное правило в каждой группе безопасности или отредактируйте, указав доверенные IP-адреса.
2.4 Доступ по управляющим портам открыт только для доверенных IP-адресов
Рекомендуется открывать доступ к вашей облачной инфраструктуре по управляющим портам только с доверенных IP-адресов. Убедитесь, что в ваших правилах доступа в рамках группы безопасности отсутствуют широкие правила доступа по управляющим портам:
- Диапазон портов: 22, 3389 или 21.
- Протокол: TCP.
- Источник: CIDR.
- CIDR блоки: 0.0.0.0/0 (доступ со всех адресов) или ::/0 (ipv6).
- Откройте консоль Yandex Cloud в вашем браузере.
- Перейдите в каждое облако, далее в каждый каталог и в каждую Virtual Private Cloud.
- Перейдите в раздел Группы безопасности.
- Если не обнаружено ни одной группы безопасности, в которой есть правила сетевого доступа, разрешающие доступ по управляющим портам для всех адресов (интерпретация указана выше), рекомендация выполняется. Если нет, перейдите к пункту «Инструкции и решения по выполнению».
-
Посмотрите доступные вам организации и зафиксируйте необходимый
ID
:yc organization-manager organization list
-
Выполните команду для поиска групп безопасности с опасным правилом доступа:
export ORG_ID=<ID организации> for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id'); do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id'); \ do echo "SG_ID: " && yc vpc security-group list --folder-id=$FOLDER_ID \ --format=json | jq -r '.[] | select(.rules[].direction=="INGRESS" and (.rules[].ports.to_port=="22" or .rules[].ports.to_port=="3389" or .rules[].ports.to_port=="21") and .rules[].cidr_blocks.v4_cidr_blocks[]=="0.0.0.0/0")' | jq -r '.id' \ && echo "FOLDER_ID: " $FOLDER_ID && echo "-----" done; done
-
Если
SG_ID
напротивFOLDER_ID
указано пустое значение, рекомендация выполняется. ЕслиSG_ID
не пустое, перейдите к пункту «Инструкции и решения по выполнению».
Инструкции и решения по выполнению:
Удалите опасное правило в каждой группе безопасности или укажите доверенные IP-адреса.
2.5 Включена защита от DDoS атак
В Yandex Cloud существует базовая защита от DDoS и расширенная. Необходимо убедиться, что у вас используется как минимум базовая защита.
- Yandex DDoS Protection — это компонент сервиса Virtual Private Cloud для защиты облачных ресурсов от DDoS-атак. DDoS Protection предоставляется в партнерстве с Qrator Labs. Вы можете включать ее самостоятельно на внешний IP-адрес через инструменты управления облаком. Работает до L4 уровня модели OSI.
- Расширенная защита от DDoS-атак — работает на 3 и 7 уровнях модели OSI. Вы также можете отслеживать показатели нагрузки, параметры атак и подключить Solidwall WAF в личном кабинете Qrator Labs. Чтобы включить расширенную защиту, обратитесь к вашему менеджеру или в техническую поддержку.
- Откройте консоль Yandex Cloud в вашем браузере.
- Откройте все созданные сети.
- Перейдите в раздел IP-адреса.
- Если у всех публичных адресов в столбце Защита от DDoS-атак установлено значение Включена, рекомендация выполняется. Если нет, перейдите к пункту «Инструкции и решения по выполнению».
Обратитесь к вашему персональному менеджеру и уточните, подключена ли у вас расширенная защита от DDoS-атак.
-
Посмотрите доступные вам организации и зафиксируйте необходимый
ID
:yc organization-manager organization list
-
Выполните команду для поиска IP-адресов без защиты от DDoS:
export ORG_ID=<ID организации> for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id'); do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id'); \ do echo "Address_ID: " && yc vpc address list --folder-id=$FOLDER_ID \ --format=json | jq -r '.[] | select(.external_ipv4_address.requirements.ddos_protection_provider=="qrator" | not)' | jq -r '.id' \ && echo "FOLDER_ID: " $FOLDER_ID && echo "-----" done; done
-
Если
Address_ID
напротивFOLDER_ID
указано пустое значение, рекомендация выполняется. В противном случае перейдите к пункту «Инструкции и решения по выполнению».
Инструкции и решения по выполнению:
-
Вебинар Защита от DDoS в Yandex Cloud
. -
Все материалы по защите от DDoS в Yandex Cloud.
2.6 Используется защищенный удаленный доступ
Чтобы обеспечить удаленное подключение администраторов к облачным ресурсам, используйте одно из следующих решений:
-
Site-to-site VPN между удаленной площадкой (например, вашим офисом) и облаком. В качестве шлюза для удаленного доступа используйте ВМ с функцией site-to-site VPN на основе образа из Cloud Marketplace.
Варианты настройки:
- Создание туннеля IPSec VPN с использованием демона strongSwan.
- Создание site-to-site VPN-соединения с Yandex Cloud с помощью Terraform
. - Client VPN между удаленными устройствами и Yandex Cloud. В качестве шлюза для удаленного доступа используйте ВМ с функцией client VPN на основе образа из Cloud Marketplace.
См. инструкцию в разделе Создание VPN-соединения с помощью OpenVPN. Возможно так же использование сертифицированных СКЗИ.
-
Приватное выделенное соединение между удаленной площадкой и Yandex Cloud c помощью сервиса Cloud Interconnect.
Для доступа в инфраструктуру по управляющим протоколам (например, SSH, RDP) рекомендуется создать бастионную ВМ. Для этого можно использовать бесплатное решение Teleport
Для дополнительного контроля действий администраторов рекомендуется использовать решения PAM (Privileged Access Management) с записью сессии администратора (например, Teleport). Для доступа по SSH и VPN рекомендуется отказаться от паролей и вместо этого использовать открытые ключи, X.509-сертификаты и SSH-сертификаты. При настройке SSH для ВМ рекомендуется использовать SSH-сертификаты, в том числе и для хостовой части SSH.
Для доступа к веб-сервисам, развернутым в облаке, рекомендуется использовать TLS версий 1.2 и выше.
- Откройте консоль Yandex Cloud в вашем браузере.
- Откройте все созданные сети.
- Перейдите в раздел Таблицы маршрутизации.
- Если найдены маршруты в приватные сети удаленных площадок, которые направлены через ВМ с VPN шлюзом, рекомендация выполняется.
- Проверьте ВМ в каждом облаке на наличие VPN-шлюзов. Также проверьте у назначенных им групп безопасности открытые порты для VPN.
Обратитесь к вашему персональному менеджеру и уточните, подключен ли у вас сервис Cloud Interconnect. Если подключен, проверьте, выполняется ли удаленный доступ.
2.7 Исходящий доступ в интернет контролируется
Возможные варианты организации исходящего доступа в интернет:
- Публичный IP-адрес. Адрес назначается ВМ по принципу one-to-one NAT.
- Egress NAT (NAT-шлюз). Включает доступ в интернет для подсети через общий пул публичных адресов Yandex Cloud. Не рекомендуется использовать Egress NAT для критичных взаимодействий, так как IP-адрес NAT-шлюза может использоваться несколькими клиентами одновременно. Следует учитывать эту особенность при моделировании угроз для инфраструктуры.
- NAT-инстанс. Функцию NAT выполняет отдельная ВМ. Для создания такой ВМ можно использовать образ NAT-инстанс из Cloud Marketplace.
Сравнение способов доступа в интернет:
Публичный IP-адрес |
Egress NAT |
NAT-инстанс |
Плюсы: |
Плюсы: |
Плюсы: |
|
|
|
Минусы: |
Минусы: |
Минусы: |
|
|
|
Вне зависимости от выбранного варианта организации исходящего доступа в интернет, ограничивайте трафик с помощью одного из механизмов, описанных выше. Для построения защищенной системы необходимо использовать статические IP-адреса, так как их можно внести в список исключений файрвола принимающей стороны.
- Откройте консоль Yandex Cloud в вашем браузере.
- Перейдите в нужный каталог.
- Перейдите в раздел IP-адреса.
- Если у всех публичных адресов в столбце Защита от DDoS-атак установлено значение Включена, рекомендация выполняется. В противном случае перейдите к пункту «Инструкции и решения по выполнению».
-
Посмотрите доступные вам организации и зафиксируйте необходимый
ID
:yc organization-manager organization list
-
Выполните команду для поиска всех ВМ с публичными адресами:
export ORG_ID=<ID организации> for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id'); do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id'); do echo "VM_ID: " && yc compute instance list --folder-id=$FOLDER_ID --format=json | jq -r '.[] | select(.network_interfaces[].primary_v4_address.one_to_one_nat.address)' | jq -r '.id' \ && echo "FOLDER_ID: " $FOLDER_ID && echo "-----" done; done
-
Если
VM_ID
напротивFOLDER_ID
указано пустое значение, рекомендация выполняется. В противном случае перейдите к пункту «Инструкции и решения по выполнению». -
Выполните команду для поиска наличия Egress NAT (NAT-шлюз):
export ORG_ID=<ID организации> for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id'); do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id'); \ do echo "NAT_GW: " && yc vpc gateway list --folder-id=$FOLDER_ID --format=json | jq -r '.[] | select(.id)' | jq -r '.id' && echo "FOLDER_ID: " $FOLDER_ID && echo "-----" done; done
-
Если
NAT_GW
напротивFOLDER_ID
указано пустое значение, рекомендация выполняется. В противном случае перейдите к пункту «Инструкции и решения по выполнению». -
Выполните команду для поиска наличия NAT-инстанса:
export ORG_ID=<ID организации> for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id'); do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id'); do for DISK_ID in $(yc compute disk list --folder-id=$FOLDER_ID --format=json | jq -r '.[].id'); do yc compute disk get --id=$DISK_ID --format=json | jq -r '. | select(.product_ids[0]=="fd8v7ru46kt3s4o5f0uo")' | jq -r '.id' done; done; done
-
Если результатом является пустая строка, рекомендация выполняется. Если видите
ID
NAT-инстанса, перейдите к пункту «Инструкции и решения по выполнению».
Инструкции и решения по выполнению:
- В случае наличия публичных адресов на ВМ убедитесь, что они необходимы. В противном случае удалите внешний IP-адрес в настройках ВМ.
- В случае наличия NAT-Gateway убедитесь, что он необходим. В противном случае удалите его.
- В случае наличия NAT-инстанс убедитесь, что он необходим. В противном случае удалите его.
2.8 Запросы DNS не передаются в сторонние рекурсивные резолверы
Для повышения отказоустойчивости часть трафика может передаваться в сторонние рекурсивные резолверы. Если необходимо избежать этого, обратитесь в службу технической поддержки.