Архитектура и защита базового интернет-сервиса
Примечание
В регионе Казахстан доступна только зона доступности kz1-a.
В этом руководстве вы развернете и настроите инфраструктуру базового интернет-сервиса с несколькими виртуальными машинами. Подключение к инфраструктуре будет выполняться с удаленной площадки. Доступ к ВМ будет ограничен с помощью групп безопасности. Нагрузка по серверам с веб-приложениями будет распределяться сетевым балансировщиком.
Схема организации сетевого взаимодействия удаленной площадки и базового интернет-сервиса:
Удаленная площадка:
- Сеть
remote-netс подсетьюsubnet-1(10.129.0.0/24). - Тестовая ВМ —
vm-1на базе Linux Ubuntu в подсетиsubnet-1. С помощью этой ВМ проверяется работоспособность инфраструктуры облачной площадки.
Примечание
В качестве удаленной площадки вы также можете использовать свой персональный компьютер. Для этого вам необходимо знать CIDR подсети локального компьютера и внешний IP-адрес, который он использует для выхода в интернет.
Облачная площадка:
- Сеть
networkс подсетямиsubnet-a(192.168.5.0/24),subnet-b(192.168.15.0/24) иsubnet-d(192.168.25.0/24). - IPsec-инстанс (шлюз)
vpnв подсетиsubnet-a. Основная задача IPsec-шлюза — организация IPsec-соединения с удаленной площадкой и обеспечение сетевого взаимодействия между облачными ВМ. - Таблица маршрутизации со статическим маршрутом
vpn-routeобеспечивает передачу трафика из подсетиsubnet-1удаленной площадки к ВМ облачной площадки через основной IPsec-шлюз. - ВМ базового интернет-сервиса
web-node-a,web-node-bиweb-node-dна базе Drupal в подсетяхsubnet-a,subnet-bиsubnet-dсоответственно. - Группа безопасности
vpn-sgиспользуется на ВМvpnдля управления трафиком IPSec-туннеля. Группа безопасностиweb-service-sgобеспечивает передачу трафика между ВМweb-node-a,web-node-bиweb-node-d. - Сетевой балансировщик
web-service-lbраспределяет входящий трафик между ВМweb-node-a,web-node-bиweb-node-d.
Чтобы создать инфраструктуру для интернет-сервиса:
- Подготовьте облако к работе.
- Настройте удаленную площадку.
- Настройте облачную площадку.
- Проверьте работоспособность инфраструктуры.
Если инфраструктура вам больше не нужна, удалите созданные ресурсы.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки создаваемой инфраструктуры входят:
- плата за постоянно запущенные виртуальные машины (см. тарифы Yandex Compute Cloud);
- плата за использование публичных статических IP-адресов (см. тарифы Yandex Virtual Private Cloud);
- плата за использование сетевого балансировщика (см. тарифы Yandex Network Load Balancer).
Настройте удаленную площадку
На этом этапе вы создадите и настроите инфраструктуру удаленной площадки. В нее войдут сеть, подсеть и виртуальная машина, с которой будет осуществляться доступ к инфраструктуре базового интернет-сервиса.
Примечание
В качестве удаленной площадки вы можете использовать свой персональный компьютер. Для этого узнайте CIDR подсети этого компьютера и внешний IP-адрес, который он использует для выхода в интернет.
Если в качестве удаленной площадки вы будете использовать свой персональный компьютер, пропустите этот раздел и переходите к разделу Настройте облачную площадку.
Создайте сеть и подсеть
-
Создайте сеть
remote-net. При создании сети отключите опцию Создать подсети. -
Создайте подсеть для тестовой ВМ на удаленной площадке со следующими параметрами:
- Имя —
subnet-1. - Зона доступности —
kz1-b. - Сеть —
remote-net. - CIDR —
10.129.0.0/24.
- Имя —
Создайте тестовую ВМ
Создайте ВМ, которая будет использоваться для подключения извне к инфраструктуре базового интернет-сервиса.
-
В консоли управления
выберите каталог, в котором будет создана ВМ. -
В списке сервисов выберите Compute Cloud.
-
На панели слева выберите
Виртуальные машины. -
Нажмите кнопку Создать виртуальную машину.
-
Выберите вариант Расширенная настройка.
-
В блоке Образ загрузочного диска выберите образ операционной системы Ubuntu 22.04 LTS OS Login.
-
В блоке Расположение выберите зону доступности
kz1-b. -
В блоке Сетевые настройки:
- В поле Подсеть выберите подсеть
subnet-1. - В поле Публичный IP-адрес выберите
Автоматически.
- В поле Подсеть выберите подсеть
-
В блоке Доступ выберите вариант Доступ по OS Login, чтобы подключаться к создаваемой ВМ и управлять доступом к ней с помощью OS Login в Yandex Identity Hub.
Используя OS Login, вы сможете подключаться к ВМ по SSH-ключам и SSH-сертификатам с помощью стандартного SSH-клиента или CLI. OS Login позволяет ротировать SSH-ключи, используемые для доступа к ВМ, и является наиболее безопасным вариантом доступа.
-
В блоке Общая информация задайте имя ВМ —
vm-1. -
Нажмите кнопку Создать ВМ.
-
Получите публичный IP-адрес созданной ВМ:
-
Дождитесь, когда созданная ВМ
vm-1перейдет в статусRunningи нажмите на строку с этой ВМ. -
Скопируйте значение поля Публичный IPv4-адрес в блоке Сетевой интерфейс на открывшейся странице обзора ВМ.
Публичный IP-адрес удаленной ВМ потребуется позднее при создании группы безопасности.
-
Настройте облачную площадку
Создайте и настройте облачную сеть
-
В консоли управления
перейдите в каталог, в котором будет развернута инфраструктура. -
В списке сервисов выберите Virtual Private Cloud.
-
Создайте облачную сеть
network. При создании сети отключите опцию Создать подсети. -
В сети
networkсоздайте подсети со следующими параметрами:-
Для подключения виртуальной машины
web-node-aи IPsec-инстансаvpn:- Имя —
subnet-a. - Зона доступности —
kz1-a. - Сеть —
network. - CIDR —
192.168.5.0/24.
- Имя —
-
Для подключения виртуальной машины
web-node-b:- Имя —
subnet-b. - Зона доступности —
kz1-b. - Сеть —
network. - CIDR —
192.168.15.0/24.
- Имя —
-
Для подключения виртуальной машины
web-node-d:- Имя —
subnet-d. - Зона доступности —
kz1-d. - Сеть —
network. - CIDR —
192.168.25.0/24.
- Имя —
-
Зарезервируйте два статических публичных IP-адреса
Для работы интернет-сервиса потребуются два статических публичных IP-адреса: один будет назначен VPN-шлюзу, а другой — сетевому балансировщику.
- В консоли управления
перейдите в каталог, в котором будут зарезервированы IP-адреса. - В списке сервисов выберите Virtual Private Cloud.
- На панели слева выберите
IP-адреса. - Нажмите кнопку Зарезервировать адрес.
- В открывшемся окне выберите зону доступности
kz1-aи нажмите кнопку Зарезервировать. - Повторите шаги 4-5 и зарезервируйте статический публичный IP-адрес в зоне доступности
kz1-b.
Создайте и настройте группы безопасности
Чтобы разделить трафик между сегментами сети, необходимо создать группы безопасности и настроить в них правила приема и отправки трафика.
Создайте группу безопасности для VPN-шлюза
Для работы VPN необходимо разрешить прием и передачу трафика на UDP-порты 500 и 4500 из внешней сети — это необходимо для работы IPSec-туннеля. Также необходимо разрешить передачу трафика между подсетями вашей виртуальной сети и сетью на удаленной площадке.
-
В консоли управления
перейдите в каталог, в котором будет создана группа безопасности. -
В списке сервисов выберите Virtual Private Cloud.
-
На панели слева выберите
Группы безопасности. -
Нажмите кнопку Создать группу безопасности.
-
Введите имя группы безопасности —
vpn-sg. -
В поле Сеть выберите сеть
network, созданную ранее. -
В блоке Правила создайте правила в соответствии с таблицей:
Направление
трафикаОписание
Диапазон портов
Протокол
Источник /
НазначениеCIDR блоки
Входящий
udp500500UDPCIDR<публичный_IP-адрес_удаленной_ВМ>/32Входящий
udp45004500UDPCIDR<публичный_IP-адрес_удаленной_ВМ>/32Входящий
internal0-65535ЛюбойCIDR192.168.5.0/24192.168.15.0/24192.168.25.0/2410.129.0.0/241
Исходящий
udp500500UDPCIDR<публичный_IP-адрес_удаленной_ВМ>/32Исходящий
udp45004500UDPCIDR<публичный_IP-адрес_удаленной_ВМ>/32Исходящий
intersubnet0-65535ЛюбойCIDR192.168.5.0/24192.168.15.0/24192.168.25.0/2410.129.0.0/241
1 Если в качестве тестовой ВМ вы будете использовать локальный компьютер, укажите здесь CIDR подсети, в которой этот компьютер находится.
-
Нажмите Создать.
Создайте группу безопасности для виртуальных машин интернет-сервиса
-
В консоли управления
перейдите в каталог, в котором будет создана группа безопасности. -
В списке сервисов выберите Virtual Private Cloud.
-
На панели слева выберите
Группы безопасности. -
Нажмите кнопку Создать группу безопасности.
-
Введите имя группы безопасности —
web-service-sg. -
В поле Сеть выберите сеть
network, созданную ранее. -
В блоке Правила создайте правила в соответствии с таблицей:
Направление
трафикаОписание
Диапазон портов
Протокол
Источник /
НазначениеCIDR блоки /
Группа безопасностиВходящий
ssh22TCPCIDR0.0.0.0/0Входящий
anyself0-65535ЛюбойГруппа безопасностиТекущаяВходящий
healthchecks80TCPПроверки состояния балансировщика—
Исходящий
self0-65535ЛюбойГруппа безопасностиТекущая -
Нажмите Создать.
Создайте и настройте виртуальные машины на облачной площадке
Создайте ВМ для сервиса во всех зонах доступности
-
В консоли управления
выберите каталог, в котором будут созданы ВМ. -
В списке сервисов выберите Compute Cloud.
-
На панели слева выберите
Виртуальные машины. -
Нажмите кнопку Создать виртуальную машину.
-
Выберите вариант Расширенная настройка.
-
В блоке Образ загрузочного диска перейдите на вкладку Marketplace и выберите образ Drupal 10.
-
В блоке Расположение выберите зону доступности
kz1-a. -
В блоке Сетевые настройки:
- Выберите подсеть
subnet-a. - В поле Публичный IP-адрес выберите
Без адреса. - Выберите группу безопасности
web-service-sg.
- Выберите подсеть
-
В блоке Доступ:
-
Выберите вариант подключения SSH-ключ.
-
В поле Логин задайте имя пользователя.
Внимание
Не используйте логин
rootили другие имена, зарезервированные ОС. Для выполнения операций, требующих прав суперпользователя, используйте командуsudo. -
В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
-
Нажмите кнопку Добавить ключ.
-
Задайте имя SSH-ключа.
-
Выберите вариант:
-
Ввести вручную— вставьте содержимое открытого SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно. -
Загрузить из файла— загрузите открытую часть SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно. -
Сгенерировать ключ— автоматическое создание пары SSH-ключей.При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку
/home/<имя_пользователя>/.ssh. В ОС Windows распакуйте архив в папкуC:\Users\<имя_пользователя>/.ssh. Дополнительно вводить открытый ключ в консоли управления не требуется.
-
-
Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.
-
-
-
В блоке Общая информация задайте имя ВМ —
web-node-a. -
Нажмите кнопку Создать ВМ.
-
Повторите шаги 4-10 для создания ВМ
web-node-bиweb-node-d. Создайте их в зонахkz1-bиkz1-d, и подключите к подсетямsubnet-bиsubnet-dсоответственно.
Создайте IPSec-инстанс для удаленного доступа
Для организации защищенного доступа к вашим ресурсам создайте IPSec-инстанс.
-
В консоли управления
перейдите в каталог, в котором будет создана ВМ. -
В списке сервисов выберите Compute Cloud.
-
На панели слева выберите
Виртуальные машины. -
Нажмите кнопку Создать виртуальную машину.
-
Выберите вариант Расширенная настройка.
-
В блоке Образ загрузочного диска перейдите на вкладку Marketplace и выберите образ IPSec-инстанс.
-
В блоке Расположение выберите зону доступности
kz1-a. -
В блоке Сетевые настройки:
- Выберите подсеть
subnet-a. - В поле Публичный IP-адрес выберите
Список. В открывшемся списке выберите зарезервированный IP-адрес. - Выберите группу безопасности
vpn-sg.
- Выберите подсеть
-
В блоке Доступ выберите вариант SSH-ключ и укажите данные для доступа на ВМ:
- В поле Логин введите имя пользователя. Не используйте имя
rootили другие имена, зарезервированные ОС. Для выполнения операций, требующих прав суперпользователя, используйте командуsudo. -
В поле SSH-ключ выберите SSH-ключ, сохраненный в вашем профиле пользователя организации.
Если в вашем профиле нет сохраненных SSH-ключей или вы хотите добавить новый ключ:
-
Нажмите кнопку Добавить ключ.
-
Задайте имя SSH-ключа.
-
Выберите вариант:
-
Ввести вручную— вставьте содержимое открытого SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно. -
Загрузить из файла— загрузите открытую часть SSH-ключа. Пару SSH-ключей необходимо создать самостоятельно. -
Сгенерировать ключ— автоматическое создание пары SSH-ключей.При добавлении сгенерированного SSH-ключа будет создан и загружен архив с парой ключей. В ОС на базе Linux или macOS распакуйте архив в папку
/home/<имя_пользователя>/.ssh. В ОС Windows распакуйте архив в папкуC:\Users\<имя_пользователя>/.ssh. Дополнительно вводить открытый ключ в консоли управления не требуется.
-
-
Нажмите кнопку Добавить.
SSH-ключ будет добавлен в ваш профиль пользователя организации. Если в организации отключена возможность добавления пользователями SSH-ключей в свои профили, добавленный открытый SSH-ключ будет сохранен только в профиле пользователя внутри создаваемого ресурса.
-
- В поле Логин введите имя пользователя. Не используйте имя
-
В блоке Общая информация задайте имя ВМ —
vpn. -
Нажмите кнопку Создать ВМ.
-
Дождитесь, когда созданная ВМ
vpnперейдет в статусRunning, и скопируйте значение поля Внутренний IPv4 в строке, относящейся этой ВМ.Внутренний адрес шлюза понадобится при настройке статического маршрута.
Настройте маршрутизацию для VPN
Настройте маршрутизацию между подсетью на удаленной площадке и IPSec-инстансом.
Создайте таблицу маршрутизации
Создайте таблицу маршрутизации и добавьте в нее статические маршруты:
- В консоли управления
перейдите в каталог, в котором будет настроена маршрутизация. - В списке сервисов выберите Virtual Private Cloud.
- Выберите сеть
network, созданную ранее. - На панели слева выберите
Таблицы маршрутизации. - Нажмите кнопку Создать таблицу маршрутизации.
- Укажите имя таблицы маршрутизации:
vpn-route. - В блоке Статические маршруты нажмите кнопку Добавить маршрут.
- В открывшемся окне:
-
В поле Префикс назначения введите
10.129.0.0/24.Если в качестве тестовой ВМ вы будете использовать локальный компьютер, укажите CIDR его подсети.
-
В поле Next hop укажите внутренний IP-адрес IPSec-шлюза.
-
Нажмите кнопку Добавить.
-
- Нажмите кнопку Создать таблицу маршрутизации.
Привяжите таблицу маршрутизации ко всем подсетям
Чтобы использовать статические маршруты, необходимо привязать таблицу маршрутизации ко всем подсетям в сети network на облачной площадке.
- В консоли управления
перейдите в каталог, где требуется настроить маршрутизацию. - В списке сервисов выберите Virtual Private Cloud.
- На панели слева выберите
Подсети. - В строке с подсетью
subnet-aнажмите и выберите Привязать таблицу маршрутизации. - В открывшемся окне в поле Таблица маршрутизации выберите созданную ранее таблицу
vpn-route. - Нажмите кнопку Привязать.
- Повторите шаги 4-6 для привязки таблицы маршрутизации
vpn-routeк подсетямsubnet-bиsubnet-d.
Создайте сетевой балансировщик
Сетевой балансировщик будет распределять входящий трафик интернет-сервиса между ВМ, объединенными в целевую группу.
Чтобы создать сетевой балансировщик:
-
В консоли управления
перейдите в каталог, где требуется создать балансировщик. -
В списке сервисов выберите Network Load Balancer.
-
Нажмите кнопку Создать сетевой балансировщик.
-
Задайте имя балансировщика —
web-service-lb. -
В поле Публичный адрес выберите
Списоки укажите публичный статический адрес. -
В блоке Обработчики нажмите кнопку Добавить обработчик. В открывшемся окне:
- Введите имя обработчика
web-service-lb-listener. - В поле Порт укажите
80. - В поле Целевой порт укажите
80. - Нажмите кнопку Добавить.
- Введите имя обработчика
-
В блоке Целевые группы нажмите Добавить целевую группу.
-
В поле Целевая группа выберите
Создать целевую группу. В открывшемся окне:- Задайте имя целевой группы:
web-tg. - Выберите виртуальные машины
web-node-a,web-node-bиweb-node-d. - Нажмите кнопку Создать.
- Задайте имя целевой группы:
-
Выберите созданную целевую группу
web-tg.
-
-
В блоке с созданной целевой группой:
- Нажмите кнопку Настроить.
- В открывшемся окне в поле Тип выберите
TCPи нажмите кнопку Применить.
-
Нажмите кнопку Создать.
Проверьте работоспособность инфраструктуры
Проверьте работоспособность инфраструктуры и убедитесь, что трафик к ВМ интернет-сервиса не поступает извне:
-
На удаленном компьютере выполните команду:
curl <публичный_IP-адрес_сетевого_балансировщика>Убедитесь, что ответ от сервера не поступил. Это означает, что сетевой трафик к серверам Drupal запрещен.
-
Добавьте в группу безопасности
web-service-sgдва новых правила для входящего трафика:Описание
Диапазон портов
Протокол
Источник /
НазначениеCIDR блоки
http-external-vm
80
TCP
CIDR
<публичный_IP-адрес_удаленной_ВМ>/32https-external-vm
443
TCP
CIDR
<публичный_IP-адрес_удаленной_ВМ>/32Добавленные правила разрешают доступ с публичного адреса ВМ на удаленной площадке к ВМ целевой группы сетевого балансировщика.
-
Снова выполните на удаленном компьютере команду:
curl <публичный_IP-адрес_сетевого_балансировщика>Убедитесь, что в качестве ответа вернулся HTML-код стартовой страницы Drupal. Это означает, что добавленные в группу безопасности правила разрешили сетевой доступ к виртуальным машинам Drupal с IP-адреса удаленного компьютера.
Как удалить созданные ресурсы
Чтобы перестать платить за развернутые ресурсы:
- Удалите виртуальные машины.
- Удалите сетевой балансировщик.
- Удалите зарезервированные статические публичные IP-адреса.
- При необходимости удалите таблицу маршрутизации, группы безопасности, подсети и сети.