Использование Azure Bastion для безопасного доступа к виртуальным машинам
01.04.2025
Эта техническая и образовательная статья призвана помочь аналитикам безопасности, ИТ-администраторам и системным инженерам реализовать и настроить Бастион Azure для безопасного доступа к виртуальным машинам (ВМ) в Azure. В облачной среде безопасность доступа к виртуальным машинам имеет важное значение для защиты ресурсов и данных. Традиционно доступ к виртуальным машинам через RDP (протокол удаленного рабочего стола) или SSH (Secure Shell) требовал открытия общедоступных портов в Интернете, что значительно увеличивало поверхность атаки. Azure Bastion предлагает надежное и безопасное решение для устранения этой угрозы, предоставляя безопасный доступ без необходимости использования VPN или общедоступных IP-адресов [1].
Введение
Миграция инфраструктур в облако принесла многочисленные преимущества с точки зрения масштабируемости и гибкости. Однако безопасность остается главной проблемой. Доступ к виртуальным машинам является критически важным моментом, поскольку они часто являются сердцем многих приложений и сервисов. Открытие портов RDP (3389) или SSH (22) непосредственно в Интернете является опрометчивой практикой обеспечения безопасности, поскольку это делает их легкой мишенью для атак методом перебора и других эксплойтов [2].
Azure Bastion — это полностью управляемая служба «Платформа как услуга» (PaaS), которую вы предоставляете в своей виртуальной сети. Он позволяет вам подключаться к виртуальным машинам в вашей виртуальной сети непосредственно с портала Azure, используя RDP и SSH, без необходимости использования общедоступных IP-адресов на виртуальных машинах, агентов, установленных на виртуальных машинах, или специальных клиентов/конфигураций на вашем локальном компьютере. Bastion действует как безопасный прокси-сервер, маршрутизируя трафик RDP/SSH через безопасное соединение TLS (Transport Layer Security) с браузером пользователя, защищая виртуальные машины от прямого доступа к Интернету [3].
В этом практическом руководстве будут рассмотрены предварительные требования, подготовка и настройка Бастиона Azure, подключение к виртуальным машинам Windows и Linux с помощью RDP и SSH, управление сеансами, а также тестирование и проверка безопасного доступа. Будут предоставлены пошаговые инструкции, практические примеры и краткие объяснения, чтобы читатель мог реализовать, протестировать и проверить эти функции. Кроме того, будут обсуждены советы по безопасности, проверки соответствия и лучшие практики для обеспечения безопасного и эффективного удаленного доступа к вашим виртуальным машинам автономным, профессиональным и надежным способом.
Почему Бастион Azure важен для доступа к виртуальным машинам?
- Повышенная безопасность: устраняется необходимость использования общедоступных IP-адресов на виртуальных машинах, защищая их от прямых атак из Интернета. Доступ осуществляется по TLS через браузер.
- Упрощенный доступ: подключение к виртуальным машинам напрямую с портала Azure без необходимости использования собственных клиентов RDP/SSH или VPN.
- Нулевое доверие: соответствует принципам нулевого доверия, гарантируя, что доступ всегда проверяется и разрешается, независимо от местоположения пользователя.
- Аудит и мониторинг: позволяет отслеживать сеансы и управлять ими с возможностью записи сеансов (доступно в версии Premium) в целях аудита и обеспечения соответствия.
- Снижение стоимости и сложности. Будучи полностью управляемым сервисом PaaS, он устраняет необходимость в управлении собственными переходными устройствами или сложными VPN.
- Защита от сканирования портов: виртуальные машины не имеют общедоступных IP-адресов, что делает их невидимыми для сканеров портов и вредоносных ботов в Интернете.
Предварительные условия
Для реализации Azure Bastion вам потребуются следующие элементы:
- Активная подписка Azure: подписка Azure для создания ресурсов и управления ими.
- Административный доступ: учетная запись с ролью «Владелец» или «Участник» в подписке или группе ресурсов, где расположены виртуальные машины.
- Виртуальная сеть Azure (VNet): существующая виртуальная сеть, содержащая виртуальные машины, к которым вы хотите подключиться.
- Выделенная подсеть для Бастиона Azure: подсеть в вашей виртуальной сети с именем AzureBastionSubnet и префиксом не менее /27 (например: 10.0.2.0/27). Эта подсеть является эксклюзивной для Bastion и не может использоваться для других ресурсов [4].
- Виртуальные машины (ВМ): существующие виртуальные машины Windows или Linux в той же виртуальной сети (или одноранговых виртуальных сетях), к которой вы хотите подключиться.
Шаг за шагом: настройка Бастиона Azure
Давайте подготовим Azure Bastion и используем его для подключения к виртуальной машине.
1. Создание подсети AzureBastionSubnet
Дои развернуть Бастион, вам необходимо создать выделенную подсеть.
- Откройте браузер и перейдите на портал Azure: https://portal.azure.com.
- Войдите в систему под учетной записью, имеющей необходимые разрешения.
- В верхнем поле поиска введите «Виртуальные сети» и выберите его из результатов.
- Выберите виртуальную сеть, в которой расположены ваши виртуальные машины.
- На левой панели навигации в разделе «Настройки» выберите Подсети.
-
Нажмите «+Подсеть».
-
Добавить подсеть:
- Имя: введите
AzureBastionSubnet(это имя является обязательным). - Диапазон адресов подсети: укажите диапазон адресов с префиксом не ниже
/27(например,10.0.2.0/27). - Остальные настройки оставьте по умолчанию.
- Имя: введите
-
Нажмите Сохранить.
- Объяснение: AzureBastionSubnet — это место, где будет развернута служба Azure Bastion. Крайне важно, чтобы имя было именно «AzureBastionSubnet», чтобы службу можно было правильно подготовить.
2. Подготовка Azure Bastion
Теперь, когда подсеть готова, мы можем развернуть службу Bastion.
- На портале Azure в верхнем поле поиска введите «Бастион» и выберите его из результатов.
-
Нажмите «+ Создать».
-
Основы:
- Подписка: выберите подписку.
- Группа ресурсов: выберите ту же группу ресурсов, что и ваша виртуальная сеть.
- Имя: дайте вашему экземпляру Bastion имя (например,
myBastionHost). - Регион: выберите тот же регион, что и ваша виртуальная сеть.
- Уровень: выберите «Базовый» (для базового RDP/SSH) или «Стандартный» (для дополнительных функций, таких как запись сеанса, совместное использование ссылок и т. д.). В этом руководстве мы будем использовать «Basic».
-
Виртуальная сеть:
- Виртуальная сеть: выберите виртуальную сеть, в которой вы создали AzureBastionSubnet.
- Подсеть: AzureBastionSubnet будет выбран автоматически.
- Общедоступный IP-адрес: нажмите «Создать новый». Дайте общедоступному IP-адресу имя (например, myBastionPublicIP). Этот общедоступный IP-адрес предназначен для службы Bastion и не доступен вашим виртуальным машинам.
-
Нажмите «Проверить + создать», а затем Создать.
- Объяснение: Подготовка Бастиона Azure может занять от 5 до 10 минут. После развертывания он будет готов к использованию для доступа к вашим виртуальным машинам.
3. Подключение к виртуальной машине Windows через RDP
Давайте подключимся к виртуальной машине Windows, не раскрывая ее порт RDP.
- На портале Azure перейдите к своей виртуальной машине Windows.
- На левой панели навигации выберите Подключиться.
- Выберите Бастион.
- Введите учетные данные и пароль пользователя виртуальной машины Windows.
-
Нажмите Подключиться.
- Ожидаемое действие: откроется новая вкладка браузера, и вы увидите рабочий стол виртуальной машины Windows. Соединение полностью основано на HTML5 в браузере.
4. Подключение к виртуальной машине Linux через SSH
Давайте подключимся к виртуальной машине Linux, не раскрывая ее порт SSH.
- На портале Azure перейдите к своей виртуальной машине Linux.
- На левой панели навигации выберите Подключиться.
- Выберите Бастион.
- Выберите «Тип аутентификации»: «Имя пользователя и пароль» или «Закрытый ключ SSH».
- Если «Имя пользователя и пароль», введите учетные данные виртуальной машины Linux.
- Если
SSH Private Key, загрузите файл вашего закрытого ключа (.pemили.ppk).
-
Нажмите Подключиться.
- Ожидаемое действие: откроется новая вкладка браузера, и вы увидите терминал вашей виртуальной машины Linux, позволяющий выполнять команды SSH.
Проверка и тестирование
Крайне важно убедиться, что доступ через Бастион Azure работает должным образом и что виртуальные машины недоступны другими способами.
1. Проверка подключения Бастиона
- Сценарий. Попробуйте получить доступ к виртуальным машинам Windows и Linux с помощью Azure Bastion, как описано в шагах 3 и 4 выше.
- Ожидаемое действие: соединения RDP и SSH должны быть успешно установлены через браузер.
- Проверка:
- Убедитесь, что вы можете взаимодействовать с рабочим столом виртуальной машины Windows и выполнять команды в терминале виртуальной машины Linux.
2. Проверка прямой недоступности виртуальных машин
- Сценарий. Попробуйте получить доступ к виртуальным машинам напрямую из Интернета с помощью клиента RDP или SSH, указав общедоступный IP-адрес виртуальной машины (если он есть) или частный IP-адрес (если вы находитесь за пределами виртуальной сети).
- Ожидаемое действие: попытки прямого подключения должны завершиться неудачей, поскольку порты RDP/SSH не должны быть общедоступными.
- Проверка:
*Если ваши виртуальные машины имеют общедоступные IP-адреса, проверьте правила группы сетевой безопасности (NSG), связанные с сетевым интерфейсом виртуальной машины или подсетью виртуальной машины. Убедитесь, что порты 3389 (RDP) и 22 (SSH) не открыты для «Любой» или «Интернет».
- В идеале виртуальные машины, доступ к которым осуществляется через Bastion, не должны иметь связанных с ними общедоступных IP-адресов.
3. Мониторинг сессий Bastion (стандартный SKU)
Если вы предоставили Бастиону стандартный SKU, вы можете отслеживать активные сеансы.
- На портале Azure перейдите к ресурсу Azure Bastion («myBastionHost»).
- На левой панели навигации в разделе «Мониторинг» выберите Сеансы.
- Вы увидите список активных сеансов RDP и SSH, включая пользователя, исходный IP-адрес и целевую виртуальную машину.
Советы и рекомендации по безопасности
- Удаление общедоступных IP-адресов с виртуальных машин. После настройки Бастиона Azure удалите все общедоступные IP-адреса с виртуальных машин. Это главное преимущество Bastion в плане безопасности.
- Настройте группы безопасности сети соответствующим образом. Убедитесь, что группы безопасности сети (NSG) подсетей ваших виртуальных машин и AzureBastionSubnet настроены правильно и разрешают только необходимый трафик. Бастиону необходим доступ к частным портам RDP/SSH виртуальных машин, но виртуальным машинам не нужен публичный входящий доступ.
- Принцип минимальных привилегий: назначайте только необходимые разрешения, чтобы пользователи могли подключаться к виртуальным машинам через Bastion. Azure RBAC можно использовать для контроля того, кто может использовать Bastion.
- Строгая аутентификация: всегда используйте строгую аутентификацию для учетных данных виртуальной машины. Объедините его с Azure AD для проверки подлинности и, если возможно, условного доступа, чтобы потребовать MFA для доступа к порталу Azure, который, в свою очередь, контролирует доступ к Бастиону.
- Запись сеанса (SKU Premium). Для сред, требующих строгого соответствия требованиям и аудита, рассмотрите возможность использования SKU Azure Bastion Premium для записи сеансов RDP и SSH. Это обеспечивает визуальную запись того, что было сделано на виртуальных машинах.
- Мониторинг журналов: отслеживайте журналы активности Azure для Bastion и журналы безопасности ваших виртуальных машин, чтобы обнаруживать подозрительную активность или попытки несанкционированного доступа.
- Обновления и исправления: обновляйте свои виртуальные машины с помощью новейших исправлений безопасности для устранения внутренних уязвимостей.
Распространенное устранение неполадок
- Я не вижу опции «Бастион» при попытке подключения к виртуальной машине:
- Убедитесь, что Бастион Azure подготовлен в той же виртуальной сети (или одноранговой виртуальной сети), что и виртуальная машина.
- Убедитесь, что AzureBastionSubnet существует и имеет правильный префикс адреса (/27 или больше).
- Проверьте, находится ли Бастион в состоянии «Работает» на портале Azure.
- Ошибка подключения RDP/SSH через Bastion:
- Неверные учетные данные. Убедитесь, что учетные данные пользователя и пароль (или ключ SSH) верны для виртуальной машины.
- Проблемы NSG. Убедитесь, что NSG подсети виртуальной машины разрешает входящий трафик через порты 3389 (RDP) или 22 (SSH) AzureBastionSubnet.
- Брандмауэр виртуальной машины: убедитесь, что внутренний брандмауэр виртуальной машины не блокирует соединения RDP/SSH.
- Служба RDP/SSH не запущена. Убедитесь, что на виртуальной машине запущена служба RDP (для Windows) или SSH (для Linux).
- Снижение производительности или отключения:
- Проверьте пропускную способность вашего интернет-соединения. Bastion транслирует видео сеанса в ваш браузер.
- Рассмотрите возможность использования версии Bastion Standard или Premium, которая обеспечивает лучшую производительность и дополнительные функции.
- Проверьте высокую загрузку ЦП или памяти на целевой виртуальной машине, что может повлиять на производительность сеанса.
- Я не могу получить доступ к внутренним ресурсам виртуальной машины через Bastion:
- Azure Bastion обеспечивает подключение к виртуальной машине. После подключения к виртуальной машине доступ к другим внутренним ресурсам виртуальной сети будет зависеть от конфигурации собственной сети виртуальной машины и применимых правил группы безопасности сети.
Заключение
Azure Bastion — это важный компонент безопасности облачных сред, обеспечивающий безопасный и упрощенный метод доступа к виртуальным машинам. Устраняя прямой доступ портов RDP/SSH к Интернету, это значительно уменьшает поверхность атаки и укрепляет общую безопасность. Тщательная реализация, интеграция с лучшими практиками безопасности и непрерывный мониторинг имеют решающее значение для максимизации преимуществ Bastion. С этим гБлагодаря такому практическому подходу специалисты по безопасности и ИТ-администраторы будут хорошо подготовлены к настройке, проверке и управлению Azure Bastion, гарантируя, что доступ к их виртуальным машинам всегда будет безопасным и соответствующим требованиям.
Ссылки:
[1] Microsoft Learn. Что такое Лазурный бастион?. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/bastion/bastion-overview. [2] Microsoft Learn. Аспекты проектирования и планирования использования Azure Bastion для обеспечения безопасного удаленного доступа к виртуальным машинам в Azure. Доступно по адресу: [https://learn.microsoft.com/pt-br/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-virtual-machine-remote-access] (https://learn.microsoft.com/pt-br/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-virtual-machine-remote-access) [3] Microsoft Learn. Подключитесь к виртуальной машине Windows с помощью RDP — Azure Bastion. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-rdp-windows [4] Microsoft Learn. Настройте хост-бастион. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/bastion/tutorial-create-host-portal [5] Microsoft Learn. Подключитесь к виртуальной машине Linux с помощью SSH — Azure Bastion. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/bastion/bastion-connect-vm-ssh-linux [6] Microsoft Learn. Мониторинг и управление сеансами Azure Bastion. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/bastion/session-monitoring [7] Microsoft Learn. Настроить запись сеанса Bastion. Доступно по адресу: https://learn.microsoft.com/pt-br/azure/bastion/session-recording