mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['', 'src/pentesting-cloud/azure-security/az-services/vms/az-
This commit is contained in:
@@ -2,27 +2,27 @@
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Основна інформація
|
||||
## Basic Information
|
||||
|
||||
Azure надає **віртуальні мережі (VNet)**, які дозволяють користувачам створювати **ізольовані** **мережі** в хмарі Azure. У межах цих VNet ресурси, такі як віртуальні машини, додатки, бази даних... можуть бути безпечно розміщені та керовані. Мережеве з'єднання в Azure підтримує як комунікацію всередині хмари (між службами Azure), так і з'єднання з зовнішніми мережами та Інтернетом.\
|
||||
Більше того, можливо **підключати** VNet з іншими VNet та з локальними мережами.
|
||||
Azure надає **віртуальні мережі (VNet)**, що дозволяють користувачам створювати **ізольовані** **мережі** в межах Azure cloud. У цих VNet ресурси, такі як віртуальні машини, додатки, бази даних... можуть безпечно розміщуватися та керуватися. Мережеві можливості в Azure підтримують як внутрішню взаємодію в хмарі (між Azure services), так і підключення до зовнішніх мереж та інтернету.\
|
||||
Крім того, можливо **підключати** VNet до інших VNet та до локальних мереж (on-premise).
|
||||
|
||||
## Віртуальна мережа (VNET) та підмережі
|
||||
## Virtual Network (VNET) & Subnets
|
||||
|
||||
Віртуальна мережа Azure (VNet) є уявленням вашої власної мережі в хмарі, що забезпечує **логічну ізоляцію** в середовищі Azure, присвяченому вашій підписці. VNet дозволяють вам надавати та керувати віртуальними приватними мережами (VPN) в Azure, розміщуючи ресурси, такі як віртуальні машини (VM), бази даних та служби додатків. Вони пропонують **повний контроль над налаштуваннями мережі**, включаючи діапазони IP-адрес, створення підмереж, таблиці маршрутів та мережеві шлюзи.
|
||||
Azure Virtual Network (VNet) — це уявлення вашої власної мережі в cloud, що забезпечує **логічну ізоляцію** в середовищі Azure, присвячену вашій підписці. VNets дозволяють створювати та керувати віртуальними приватними мережами (VPNs) в Azure, розміщуючи ресурси, такі як Virtual Machines (VMs), бази даних та application services. Вони дають **повний контроль над налаштуваннями мережі**, включно з діапазонами IP-адрес, створенням підмереж, маршрутними таблицями та мережевими шлюзами.
|
||||
|
||||
**Підмережі** є підрозділами в межах VNet, визначеними конкретними **діапазонами IP-адрес**. Сегментуючи VNet на кілька підмереж, ви можете організувати та захистити ресурси відповідно до вашої мережевої архітектури.\
|
||||
За замовчуванням всі підмережі в межах однієї віртуальної мережі Azure (VNet) **можуть спілкуватися одна з одною** без будь-яких обмежень.
|
||||
**Subnets** — це підрозділи всередині VNet, визначені певними **діапазонами IP-адрес**. Розбиваючи VNet на кілька підмереж, ви можете організувати та захистити ресурси відповідно до архітектури мережі.\
|
||||
За замовчуванням усі підмережі в межах однієї Azure Virtual Network (VNet) **можуть спілкуватися між собою** без будь-яких обмежень.
|
||||
|
||||
**Приклад:**
|
||||
**Example:**
|
||||
|
||||
- `MyVNet` з діапазоном IP-адрес 10.0.0.0/16.
|
||||
- **Підмережа-1:** 10.0.0.0/24 для веб-серверів.
|
||||
- **Підмережа-2:** 10.0.1.0/24 для серверів бази даних.
|
||||
- `MyVNet` with an IP address range of 10.0.0.0/16.
|
||||
- **Subnet-1:** 10.0.0.0/24 for web servers.
|
||||
- **Subnet-2:** 10.0.1.0/24 for database servers.
|
||||
|
||||
### Перерахування
|
||||
### Enumeration
|
||||
|
||||
Щоб перерахувати всі VNet та підмережі в обліковому записі Azure, ви можете використовувати командний інтерфейс Azure (CLI). Ось кроки:
|
||||
Щоб перелічити всі VNet та підмережі в обліковому записі Azure, можна використовувати Azure Command-Line Interface (CLI). Ось кроки:
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -47,18 +47,18 @@ Select-Object Name, AddressPrefix
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Групи безпеки мережі (NSG)
|
||||
## Групи мережевої безпеки (NSG)
|
||||
|
||||
**Група безпеки мережі (NSG)** фільтрує мережевий трафік як до, так і з ресурсів Azure в межах віртуальної мережі Azure (VNet). Вона містить набір **правил безпеки**, які можуть вказувати **які порти відкривати для вхідного та вихідного трафіку** за вихідним портом, вихідною IP-адресою, портом призначення, і можливо призначити пріоритет (чим нижче число пріоритету, тим вищий пріоритет).
|
||||
**Група мережевої безпеки (NSG)** фільтрує мережевий трафік як у напрямку до, так і від ресурсів Azure в межах Azure Virtual Network (VNet). Вона містить набір **правил безпеки**, які можуть вказувати **які порти відкривати для вхідного та вихідного трафіку** за портом джерела, IP джерела, портом призначення, і можна призначити пріоритет (чим менший номер пріоритету, тим вищий пріоритет).
|
||||
|
||||
NSG можуть бути асоційовані з **підмережами та NIC.**
|
||||
NSG можуть бути асоційовані з **підмережами та NIC**.
|
||||
|
||||
**Приклад правил:**
|
||||
**Приклади правил:**
|
||||
|
||||
- Вхідне правило, що дозволяє HTTP-трафік (порт 80) з будь-якого джерела до ваших веб-серверів.
|
||||
- Вихідне правило, що дозволяє лише SQL-трафік (порт 1433) до конкретного діапазону IP-адрес призначення.
|
||||
- Вхідне правило, яке дозволяє HTTP-трафік (порт 80) з будь-якого джерела до ваших веб-серверів.
|
||||
- Вихідне правило, яке дозволяє лише SQL-трафік (порт 1433) до конкретного діапазону IP-адрес призначення.
|
||||
|
||||
### Перерахування
|
||||
### Enumeration
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -71,7 +71,7 @@ az network nsg show --name <nsg-name>
|
||||
az network nsg rule list --nsg-name <NSGName> --resource-group <ResourceGroupName> --query "[].{name:name, priority:priority, direction:direction, access:access, protocol:protocol, sourceAddressPrefix:sourceAddressPrefix, destinationAddressPrefix:destinationAddressPrefix, sourcePortRange:sourcePortRange, destinationPortRange:destinationPortRange}" -o table
|
||||
|
||||
# Get NICs and subnets using this NSG
|
||||
az network nsg show --name MyLowCostVM-nsg --resource-group Resource_Group_1 --query "{subnets: subnets, networkInterfaces: networkInterfaces}"
|
||||
az network nsg show --name <NSGName> --resource-group <ResourceGroupName> --query "{subnets: subnets, networkInterfaces: networkInterfaces}"
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="PowerShell" }}
|
||||
@@ -81,32 +81,35 @@ Get-AzNetworkSecurityGroup | Select-Object Name, Location
|
||||
Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
# Get NSG rules
|
||||
(Get-AzNetworkSecurityGroup -ResourceGroupName <NSGName> -Name <ResourceGroupName>).SecurityRules
|
||||
Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName> |
|
||||
Select-Object -ExpandProperty SecurityRules |
|
||||
Select-Object Name, Priority, Direction, Access, Protocol, SourceAddressPrefix, DestinationAddressPrefix, SourcePortRange, DestinationPortRange
|
||||
|
||||
# Get NICs and subnets using this NSG
|
||||
(Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName>).Subnets
|
||||
(Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName>).NetworkInterfaces
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Azure Firewall
|
||||
|
||||
Azure Firewall - це **керована служба мережевої безпеки** в Azure, яка захищає хмарні ресурси, перевіряючи та контролюючи трафік. Це **станова брандмауер**, який фільтрує трафік на основі правил для рівнів з 3 по 7, підтримуючи зв'язок як **всередині Azure** (східно-західний трафік), так і **з/до зовнішніх мереж** (північно- південний трафік). Розгорнутий на **рівні віртуальної мережі (VNet)**, він забезпечує централізований захист для всіх підмереж у VNet. Azure Firewall автоматично масштабується для обробки вимог до трафіку та забезпечує високу доступність без необхідності ручного налаштування.
|
||||
Azure Firewall — це **керований файрвол зі збереженням стану**, який фільтрує трафік (L3–L7) для потоків east-west та north-south. Розгорнутий на рівні **VNet**, він централізує інспекцію для всіх підмереж і автоматично масштабується для забезпечення доступності.
|
||||
|
||||
Він доступний у трьох SKU—**Basic**, **Standard** та **Premium**, кожен з яких адаптований до специфічних потреб клієнтів:
|
||||
Доступні SKU: **Basic**, **Standard**, та **Premium**:
|
||||
|
||||
| Критерії/Функції | Варіант 1 | Варіант 2 | Варіант 3 |
|
||||
| Criteria/Feature | Option 1 | Option 2 | Option 3 |
|
||||
| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
|
||||
| **Рекомендований випадок використання** | Малі/середні підприємства (SMBs) з обмеженими потребами | Загальне підприємницьке використання, фільтрація рівнів 3–7 | Дуже чутливі середовища (наприклад, обробка платежів) |
|
||||
| **Продуктивність** | До 250 Мбіт/с пропускної здатності | До 30 Гбіт/с пропускної здатності | До 100 Гбіт/с пропускної здатності |
|
||||
| **Розвідка загроз** | Лише сповіщення | Сповіщення та блокування (зловмисні IP/домени) | Сповіщення та блокування (розширена розвідка загроз) |
|
||||
| **Фільтрація L3–L7** | Основна фільтрація | Станова фільтрація через протоколи | Станова фільтрація з розширеною перевіркою |
|
||||
| **Розширений захист від загроз** | Не доступний | Фільтрація на основі розвідки загроз | Включає систему виявлення та запобігання вторгненням (IDPS) |
|
||||
| **TLS перевірка** | Не доступний | Не доступний | Підтримує вхідну/вихідну термінацію TLS |
|
||||
| **Доступність** | Фіксований бекенд (2 ВМ) | Автоматичне масштабування | Автоматичне масштабування |
|
||||
| **Легкість управління** | Основні елементи управління | Керування через Firewall Manager | Керування через Firewall Manager |
|
||||
| **Recommended Use Case** | Малі/середні підприємства (SMBs) з обмеженими потребами | Загальне корпоративне використання, фільтрація Layer 3–7 | Дуже чутливі середовища (наприклад, обробка платежів) |
|
||||
| **Performance** | До 250 Mbps пропускної здатності | До 30 Gbps пропускної здатності | До 100 Gbps пропускної здатності |
|
||||
| **Threat Intelligence** | Тільки оповіщення | Оповіщення та блокування (шкідливі IP/домени) | Оповіщення та блокування (розширена розвідка загроз) |
|
||||
| **L3–L7 Filtering** | Базова фільтрація | Фільтрація зі збереженням стану між протоколами | Фільтрація зі збереженням стану з розширеною інспекцією |
|
||||
| **Advanced Threat Protection** | Недоступно | Фільтрація на основі розвідки загроз | Включає систему виявлення і запобігання вторгнень (IDPS) |
|
||||
| **TLS Inspection** | Недоступно | Недоступно | Підтримує TLS-термінацію для вхідного та вихідного трафіку |
|
||||
| **Availability** | Фіксований бекенд (2 VMs) | Автомасштабування | Автомасштабування |
|
||||
| **Ease of Management** | Базові контролі | Керується через Firewall Manager | Керується через Firewall Manager |
|
||||
|
||||
### Enumeration
|
||||
### Перерахування
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -141,11 +144,16 @@ Get-AzFirewall
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Azure Route Tables
|
||||
## Azure **Таблиці маршрутів (UDR)**
|
||||
|
||||
Azure **Route Tables** використовуються для контролю маршрутизації мережевого трафіку в межах підмережі. Вони визначають правила, які вказують, як пакети повинні пересилатися, або до ресурсів Azure, в інтернет, або до конкретного наступного хопа, такого як Віртуальний Пристрій або Azure Firewall. Ви можете асоціювати таблицю маршрутів з **підмережею**, і всі ресурси в цій підмережі будуть слідувати маршрутам у таблиці.
|
||||
Azure **Таблиці маршрутів (UDR)** дозволяють перевизначати маршрутизацію за замовчуванням, визначаючи префікси призначення (наприклад, `10.0.0.0/16` або `0.0.0.0/0`) та наступний хоп (Віртуальна мережа, Інтернет, Віртуальний шлюз мережі або Віртуальний пристрій).
|
||||
|
||||
**Приклад:** Якщо підмережа містить ресурси, які потребують маршрутизації вихідного трафіку через Мережевий Віртуальний Пристрій (NVA) для перевірки, ви можете створити **маршрут** у таблиці маршрутів, щоб перенаправити весь трафік (наприклад, `0.0.0.0/0`) на приватну IP-адресу NVA як наступний хоп.
|
||||
> Маршрути застосовуються на рівні підмережі; всі VMs у цій підмережі слідують таблиці.
|
||||
|
||||
**Приклад:**
|
||||
|
||||
- Для трафіку, спрямованого в Інтернет, використовуйте маршрут за замовчуванням `0.0.0.0/0` з **Інтернетом** як наступним хопом.
|
||||
- Щоб інспектувати вихідний трафік, направте `0.0.0.0/0` на IP-адресу Network Virtual Appliance (NVA).
|
||||
|
||||
### **Enumeration**
|
||||
|
||||
@@ -155,8 +163,11 @@ Azure **Route Tables** використовуються для контролю
|
||||
# List Route Tables
|
||||
az network route-table list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table
|
||||
|
||||
# List routes for a table
|
||||
az network route-table route list --route-table-name <RouteTableName> --resource-group <ResourceGroupName> --query "[].{name:name, addressPrefix:addressPrefix, nextHopType:nextHopType, nextHopIpAddress:nextHopIpAddress}" -o table
|
||||
# List routes for a table (summary)
|
||||
az network route-table route list --resource-group <ResourceGroupName> --route-table-name <RouteTableName> --query "[].{name:name, addressPrefix:addressPrefix, nextHopType:nextHopType, nextHopIpAddress:nextHopIpAddress}" -o table
|
||||
|
||||
# List routes for a table (full)
|
||||
az network route-table route list --resource-group <ResourceGroupName> --route-table-name <RouteTableName>
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="PowerShell" }}
|
||||
@@ -172,16 +183,16 @@ Get-AzRouteTable
|
||||
|
||||
## Azure Private Link
|
||||
|
||||
Azure Private Link - це сервіс в Azure, який **дозволяє приватний доступ до сервісів Azure**, забезпечуючи, що **трафік між вашою віртуальною мережею Azure (VNet) та сервісом повністю проходить через мережу Microsoft Azure**. Це ефективно інтегрує сервіс у вашу VNet. Така конфігурація підвищує безпеку, не піддаючи дані публічному інтернету.
|
||||
Azure Private Link — це сервіс в Azure, який **забезпечує приватний доступ до Azure services**, гарантуючи, що **трафік між вашим Azure virtual network (VNet) та сервісом прямує виключно по Microsoft's Azure backbone network**. Фактично це інтегрує сервіс у ваш VNet. Така конфігурація підвищує безпеку, оскільки дані не потрапляють у публічний інтернет.
|
||||
|
||||
Private Link можна використовувати з різними сервісами Azure, такими як Azure Storage, Azure SQL Database та користувацькими сервісами, які діляться через Private Link. Це забезпечує безпечний спосіб споживання сервісів з вашої VNet або навіть з різних підписок Azure.
|
||||
Private Link можна використовувати з різними Azure services, такими як Azure Storage, Azure SQL Database та custom services, shared via Private Link. Він надає безпечний спосіб споживати сервіси зсередини вашого власного VNet або навіть з різних Azure subscriptions.
|
||||
|
||||
> [!CAUTION]
|
||||
> NSG не застосовуються до приватних кінцевих точок, що чітко означає, що асоціювання NSG з підмережею, яка містить Private Link, не матиме жодного ефекту.
|
||||
> NSGs do not apply to private endpoints, which clearly means that associating an NSG with a subnet that contains the Private Link will have no effect.
|
||||
|
||||
**Приклад:**
|
||||
**Example:**
|
||||
|
||||
Розгляньте сценарій, коли у вас є **Azure SQL Database, до якої ви хочете отримати безпечний доступ з вашої VNet**. Зазвичай це може вимагати проходження через публічний інтернет. З Private Link ви можете створити **приватну кінцеву точку у вашій VNet**, яка безпосередньо підключається до сервісу Azure SQL Database. Ця кінцева точка робить базу даних такою, що вона виглядає як частина вашої власної VNet, доступна через приватну IP-адресу, що забезпечує безпечний і приватний доступ.
|
||||
Розглянемо сценарій, де у вас є **Azure SQL Database, до якої ви хочете безпечно підключатися з вашого VNet**. Зазвичай це могло б вимагати проходження через публічний інтернет. За допомогою Private Link ви можете створити **private endpoint у вашому VNet**, який підключається безпосередньо до служби Azure SQL Database. Цей endpoint робить базу даних ніби частиною вашого VNet, доступною через private IP address, забезпечуючи тим самим безпечний і приватний доступ.
|
||||
|
||||
### **Enumeration**
|
||||
|
||||
@@ -206,15 +217,62 @@ Get-AzPrivateEndpoint | Select-Object Name, Location, ResourceGroupName, Private
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### DNS OverDoS через service Private DNS zone links
|
||||
|
||||
Коли VNet має **Virtual Network Link** до **service Private DNS zone** (наприклад, `privatelink.blob.core.windows.net`), Azure **примушує вирішувати імена хостів** для ресурсів, зареєстрованих через Private Link, цього типу сервісу через цю зону. Якщо в зоні **відсутній необхідний `A` record** для ресурсу, до якого робочі навантаження все ще звертаються через його публічну кінцеву точку, DNS-перетворення повертає **NXDOMAIN**, і клієнти ніколи не досягають публічної IP-адреси, спричиняючи **availability DoS** без безпосереднього торкання самого ресурсу.
|
||||
|
||||
**Abuse flow (control-plane DoS):**
|
||||
|
||||
1. Отримати RBAC, який дозволяє створювати **Private Endpoints** або змінювати **Private DNS zone links**.
|
||||
2. Створити Private Endpoint для того ж типу сервісу в іншому VNet (Azure автоматично створює service Private DNS zone і зв'язує її з тим VNet).
|
||||
3. Зв'язати ту **service Private DNS zone** з постраждалим VNet.
|
||||
4. Оскільки постраждалий VNet тепер **примушує вирішення через Private DNS zone**, і в цій зоні не існує `A` record для цільового ресурсу, розв'язування імен не вдається, і навантаження не може дістатися до (все ще публічної) кінцевої точки. Це стосується будь-якого сервісу, що підтримує Private Link (storage, Key Vault, ACR, Cosmos DB, Function Apps, OpenAI тощо).
|
||||
|
||||
**Discovery at scale (Azure Resource Graph):**
|
||||
|
||||
- VNETs, пов'язані з blob Private DNS zone (примусове вирішення для PL-registered blob endpoints):
|
||||
```kusto
|
||||
resources
|
||||
| where type == "microsoft.network/privatednszones/virtualnetworklinks"
|
||||
| extend
|
||||
zone = tostring(split(id, "/virtualNetworkLinks")[0]),
|
||||
vnetId = tostring(properties.virtualNetwork.id)
|
||||
| join kind=inner (
|
||||
resources
|
||||
| where type == "microsoft.network/privatednszones"
|
||||
| where name == "privatelink.blob.core.windows.net"
|
||||
| project zoneId = id
|
||||
) on $left.zone == $right.zoneId
|
||||
| project vnetId
|
||||
```
|
||||
- Storage accounts доступні через public endpoint, але **без** Private Endpoint connections (ймовірно перестануть працювати, якщо додати посилання вище):
|
||||
```kusto
|
||||
Resources
|
||||
| where type == "microsoft.storage/storageaccounts"
|
||||
| extend publicNetworkAccess = properties.publicNetworkAccess
|
||||
| extend defaultAction = properties.networkAcls.defaultAction
|
||||
| extend vnetRules = properties.networkAcls.virtualNetworkRules
|
||||
| extend ipRules = properties.networkAcls.ipRules
|
||||
| extend privateEndpoints = properties.privateEndpointConnections
|
||||
| where publicNetworkAccess == "Enabled"
|
||||
| where defaultAction == "Deny"
|
||||
| where (isnull(privateEndpoints) or array_length(privateEndpoints) == 0)
|
||||
| extend allowedVnets = iif(isnull(vnetRules), 0, array_length(vnetRules))
|
||||
| extend allowedIps = iif(isnull(ipRules), 0, array_length(ipRules))
|
||||
| where allowedVnets > 0 or allowedIps > 0
|
||||
| project id, name, vnetRules, ipRules
|
||||
```
|
||||
## Azure Service Endpoints
|
||||
|
||||
Azure Service Endpoints розширюють приватний адресний простір вашої віртуальної мережі та ідентичність вашого VNet до сервісів Azure через пряме з'єднання. Увімкнувши кінцеві точки сервісу, **ресурси у вашому VNet можуть безпечно підключатися до сервісів Azure**, таких як Azure Storage та Azure SQL Database, використовуючи магістральну мережу Azure. Це забезпечує, що **трафік з VNet до сервісу Azure залишається в межах мережі Azure**, забезпечуючи більш безпечний і надійний шлях.
|
||||
Azure Service Endpoints розширюють приватний адресний простір вашої віртуальної мережі та ідентичність вашого VNet до Azure services через пряме з'єднання. Увімкнувши Service Endpoints, **ресурси у вашому VNet можуть безпечно підключатися до Azure services**, таких як Azure Storage і Azure SQL Database, через магістральну мережу Azure. Це особливо корисно в поєднанні з Network Security Groups (NSGs) для детального контролю трафіку.
|
||||
|
||||
**Приклад:**
|
||||
|
||||
Наприклад, обліковий запис **Azure Storage** за замовчуванням доступний через публічний інтернет. Увімкнувши **кінцеву точку сервісу для Azure Storage у вашому VNet**, ви можете забезпечити, щоб лише трафік з вашого VNet міг отримати доступ до облікового запису зберігання. Брандмауер облікового запису зберігання можна налаштувати так, щоб він приймав трафік лише з вашого VNet.
|
||||
- Якщо в VNET для **Storage** Account і Service Endpoint **увімкнено**, можна дозволити вхідний трафік **тільки з VNET у межах фаєрволу storage account**, забезпечуючи **безпечне з'єднання** без необхідності public IP-доступу до storage service.
|
||||
|
||||
### **Enumeration**
|
||||
Service Endpoints **не вимагають приватних IP-адрес** для сервісів і натомість покладаються на магістральну мережу Azure для безпечного з'єднання. Вони **легші в налаштуванні** порівняно з Private Links, але **не забезпечують такого ж рівня ізоляції та детальності управління** як Private Links.
|
||||
|
||||
### **Перерахування**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -223,7 +281,10 @@ Azure Service Endpoints розширюють приватний адресний
|
||||
az network vnet list --query "[].{name:name, location:location, serviceEndpoints:serviceEndpoints}" -o table
|
||||
|
||||
# List Subnets with Service Endpoints
|
||||
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, serviceEndpoints:serviceEndpoints}" -o table
|
||||
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, serviceEndpoints:serviceEndpoints}"
|
||||
|
||||
# List Service Endpoints for a Subnet
|
||||
az network vnet subnet show --resource-group <ResourceGroupName> --vnet-name <VNetName> --name <SubnetName> --query "serviceEndpoints"
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="PowerShell" }}
|
||||
@@ -239,56 +300,70 @@ Get-AzVirtualNetwork
|
||||
|
||||
### Відмінності між Service Endpoints та Private Links
|
||||
|
||||
Microsoft рекомендує використовувати Private Links у [**документації**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints):
|
||||
Microsoft рекомендує використовувати Private Links у [**docs**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints):
|
||||
|
||||
<figure><img src="../../../../images/image (25).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Service Endpoints:**
|
||||
|
||||
- Трафік з вашої VNet до Azure-сервісу проходить через мережу Microsoft Azure, обходячи публічний інтернет.
|
||||
- Endpoint є прямим з'єднанням з Azure-сервісом і не надає приватну IP-адресу для сервісу в межах VNet.
|
||||
- Сам сервіс все ще доступний через свій публічний endpoint ззовні вашої VNet, якщо ви не налаштуєте брандмауер сервісу для блокування такого трафіку.
|
||||
- Це відносини один до одного між підмережею та Azure-сервісом.
|
||||
- Менш витратні, ніж Private Links.
|
||||
- Трафік з вашого VNet до служби Azure проходить по магістральній мережі Microsoft Azure, оминаючи публічний інтернет.
|
||||
- Endpoint — це пряме з'єднання зі службою Azure і не надає приватної IP-адреси для служби всередині VNet.
|
||||
- Сама служба все ще доступна через свій публічний endpoint ззовні вашого VNet, якщо ви не налаштуєте брандмауер служби для блокування такого трафіку.
|
||||
- Відносини «один-до-одного» між підмережею та службою Azure.
|
||||
- Дешевше, ніж Private Links.
|
||||
|
||||
**Private Links:**
|
||||
|
||||
- Private Link відображає Azure-сервіси у вашій VNet через приватний endpoint, який є мережею з приватною IP-адресою в межах вашої VNet.
|
||||
- Azure-сервіс доступний за цією приватною IP-адресою, що робить його частиною вашої мережі.
|
||||
- Сервіси, підключені через Private Link, можуть бути доступні лише з вашої VNet або підключених мереж; доступу до сервісу з публічного інтернету немає.
|
||||
- Це забезпечує безпечне з'єднання з Azure-сервісами або вашими власними сервісами, розміщеними в Azure, а також з сервісами, якими діляться інші.
|
||||
- Це забезпечує більш детальний контроль доступу через приватний endpoint у вашій VNet, на відміну від більш широкого контролю доступу на рівні підмережі з service endpoints.
|
||||
- Private Link відображає служби Azure у вашому VNet через private endpoint, який є мережевим інтерфейсом з приватною IP-адресою всередині вашого VNet.
|
||||
- До служби Azure звертаються за цією приватною IP-адресою, що робить її подібною до частини вашої мережі.
|
||||
- Служби, підключені через Private Link, доступні лише з вашого VNet або підключених мереж; немає доступу через публічний інтернет.
|
||||
- Це дозволяє встановити безпечне з'єднання до служб Azure або до ваших власних служб, розміщених в Azure, а також до служб, якими діляться інші.
|
||||
- Надає більш детальний контроль доступу через private endpoint у вашому VNet, на відміну від ширшого контролю доступу на рівні підмережі з service endpoints.
|
||||
|
||||
У підсумку, хоча як Service Endpoints, так і Private Links забезпечують безпечне з'єднання з Azure-сервісами, **Private Links пропонують вищий рівень ізоляції та безпеки, забезпечуючи доступ до сервісів приватно без їх відкриття для публічного інтернету**. Service Endpoints, з іншого боку, легші у налаштуванні для загальних випадків, коли потрібен простий, безпечний доступ до Azure-сервісів без необхідності в приватній IP-адресі у VNet.
|
||||
Підсумовуючи, хоча і Service Endpoints, і Private Links забезпечують безпечне підключення до служб Azure, **Private Links забезпечують вищий рівень ізоляції та безпеки, гарантуючи приватний доступ до служб без їхнього виставлення в публічний інтернет**. Service Endpoints, з іншого боку, простіші у налаштуванні для загальних випадків, коли потрібен простий, безпечний доступ до служб Azure без необхідності приватної IP-адреси у VNet.
|
||||
|
||||
## Azure Front Door (AFD) & AFD WAF
|
||||
|
||||
**Azure Front Door** є масштабованою та безпечною точкою входу для **швидкої доставки** ваших глобальних веб-додатків. Він **поєднує** різні сервіси, такі як глобальне **балансування навантаження, прискорення сайтів, SSL offloading та можливості Web Application Firewall (WAF)** в один сервіс. Azure Front Door забезпечує інтелектуальну маршрутизацію на основі **найближчого краєвого розташування до користувача**, забезпечуючи оптимальну продуктивність та надійність. Крім того, він пропонує маршрутизацію на основі URL, хостинг кількох сайтів, афінність сесій та безпеку на рівні додатків.
|
||||
**Azure Front Door** — масштабований і безпечний вхідний пункт для **швидкої доставки** ваших глобальних веб-застосунків. Він **об'єднує** різні сервіси, такі як прискорення застосунків, SSL offloading та безпека на рівні додатку (через Web Application Firewall - WAF). Він побудований на концепції edge POP (Point of Presence) локацій по всьому світу, щоб наблизити ваші застосунки до користувачів.
|
||||
|
||||
**Azure Front Door WAF** призначений для **захисту веб-додатків від веб-атак** без модифікації коду на бекенді. Він включає в себе користувацькі правила та керовані набори правил для захисту від загроз, таких як SQL-ін'єкції, міжсайтове скриптування та інші поширені атаки.
|
||||
> Azure Front Door надає глобально розподілену мережу edge-локацій для **маршрутизації та прискорення** вхідного трафіку до ваших веб-застосунків (в Azure чи поза ним), покращує продуктивність та підвищує безпеку.
|
||||
|
||||
**Приклад:**
|
||||
|
||||
Уявіть, що у вас є глобально розподілений додаток з користувачами по всьому світу. Ви можете використовувати Azure Front Door для **маршрутизації запитів користувачів до найближчого регіонального дата-центру**, що хостить ваш додаток, тим самим зменшуючи затримки, покращуючи досвід користувачів та **захищаючи його від веб-атак за допомогою можливостей WAF**. Якщо в певному регіоні виникають проблеми, Azure Front Door може автоматично перенаправити трафік до наступного найкращого місця, забезпечуючи високу доступність.
|
||||
- Для глобальної e-commerce платформи з користувачами по всьому світу, **Azure Front Door може кешувати статичний контент на edge-локаціях** та пропонувати **SSL offloading**, зменшуючи затримки та забезпечуючи більш відзивчивий досвід користувача. Додатково він надає **WAF** для захисту ваших застосунків від поширених веб-уразливостей (наприклад SQL injection або XSS).
|
||||
|
||||
### Enumeration
|
||||
Azure Front Door також пропонує **інтелектуальне балансування навантаження**, маршрутизуючи трафік до найближчого доступного бекенду на основі перевірок стану (health probes) та затримок, забезпечуючи стабільну продуктивність і доступність. Інтеграція **WAF** допомагає захиститися від поширених веб-загроз.
|
||||
|
||||
### **Enumeration**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
```bash
|
||||
# List Azure Front Door Instances
|
||||
# List Azure Front Door profiles
|
||||
az afd profile list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table
|
||||
|
||||
# List AFD endpoints
|
||||
az afd endpoint list --profile-name <ProfileName> --resource-group <ResourceGroupName> --query "[].{name:name, hostName:hostName, state:resourceState}" -o table
|
||||
|
||||
# Classic Azure Front Door (v1) profiles
|
||||
az network front-door list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table
|
||||
|
||||
# List Front Door WAF Policies
|
||||
# Classic Azure Front Door WAF policies
|
||||
az network front-door waf-policy list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#tab name="PowerShell" }}
|
||||
```bash
|
||||
# List Azure Front Door Instances
|
||||
# List Azure Front Door profiles
|
||||
Get-AzFrontDoorCdnProfile | Select-Object Name, Location, ResourceGroupName
|
||||
|
||||
# List AFD endpoints
|
||||
Get-AzFrontDoorCdnEndpoint -ProfileName <ProfileName> -ResourceGroupName <ResourceGroupName> | Select-Object Name, HostName, ResourceState
|
||||
|
||||
# Classic Azure Front Door (v1) profiles
|
||||
Get-AzFrontDoor
|
||||
|
||||
# List Front Door WAF Policies
|
||||
# Classic Azure Front Door WAF policies
|
||||
Get-AzFrontDoorWafPolicy -Name <policyName> -ResourceGroupName <resourceGroupName>
|
||||
```
|
||||
{{#endtab }}
|
||||
@@ -296,14 +371,13 @@ Get-AzFrontDoorWafPolicy -Name <policyName> -ResourceGroupName <resourceGroupNam
|
||||
|
||||
## Azure Application Gateway та Azure Application Gateway WAF
|
||||
|
||||
Azure Application Gateway є **балансувальником навантаження веб-трафіку**, який дозволяє вам керувати трафіком до ваших **веб** додатків. Він пропонує **балансування навантаження на рівні 7, завершення SSL та можливості веб-додатка брандмауера (WAF)** в контролері доставки додатків (ADC) як послугу. Ключові функції включають маршрутизацію на основі URL, прив'язку сесій на основі cookie та зняття навантаження з безпечного сокета (SSL), що є критично важливими для додатків, які потребують складних можливостей балансування навантаження, таких як глобальна маршрутизація та маршрутизація на основі шляху.
|
||||
Azure Application Gateway — це **балансувальник навантаження веб‑трафіку**, який дає змогу керувати трафіком до ваших **веб**‑застосунків. Він пропонує **Layer 7 load balancing, SSL termination, та web application firewall (WAF)** в ролі сервісу Application Delivery Controller (ADC). Ключові можливості включають маршрутизацію на основі URL, прив'язку сесій на основі cookie та відвантаження secure sockets layer (SSL), що є критично важливим для застосунків, які потребують складних можливостей балансування навантаження, таких як глобальна маршрутизація та маршрутизація на основі шляхів.
|
||||
|
||||
**Приклад:**
|
||||
|
||||
Розгляньте сценарій, коли у вас є веб-сайт електронної комерції, який включає кілька піддоменів для різних функцій, таких як облікові записи користувачів та обробка платежів. Azure Application Gateway може **маршрутизувати трафік до відповідних веб-серверів на основі URL-адреси**. Наприклад, трафік до `example.com/accounts` може бути направлений до служби облікових записів користувачів, а трафік до `example.com/pay` може бути направлений до служби обробки платежів.\
|
||||
І **захистити ваш веб-сайт від атак, використовуючи можливості WAF.**
|
||||
Розгляньте сценарій, коли у вас є інтернет-магазин, який містить кілька піддоменів для різних функцій, наприклад облікових записів користувачів та обробки платежів. Azure Application Gateway може **маршрутизувати трафік до відповідних веб‑серверів на основі URL‑шляху**. Наприклад, трафік на `example.com/accounts` може бути спрямований до сервісу облікових записів користувачів, а трафік на `example.com/pay` — до сервісу обробки платежів.\ І **захищати ваш вебсайт від атак за допомогою можливостей WAF.**
|
||||
|
||||
### **Перерахування**
|
||||
### **Enumeration**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -320,20 +394,20 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Azure Hub, Spoke & VNet Peering
|
||||
## VNet Peering & HUB and Spoke топології
|
||||
|
||||
**VNet Peering** - це мережевий функціонал в Azure, який **дозволяє різним Віртуальним Мережам (VNets) підключатися безпосередньо та безперешкодно**. Завдяки VNet peering, ресурси в одній VNet можуть спілкуватися з ресурсами в іншій VNet, використовуючи приватні IP-адреси, **ніби вони були в одній мережі**.\
|
||||
**VNet Peering також може використовуватися з локальними мережами**, налаштувавши VPN з сайту на сайт або Azure ExpressRoute.
|
||||
### VNet Peering
|
||||
|
||||
**Azure Hub and Spoke** - це мережна топологія, що використовується в Azure для управління та організації мережевого трафіку. **"Хаб" є центральною точкою, яка контролює та маршрутизує трафік між різними "спицями"**. Хаб зазвичай містить спільні сервіси, такі як мережеві віртуальні пристрої (NVAs), Azure VPN Gateway, Azure Firewall або Azure Bastion. **"Спиці" - це VNets, які хостять навантаження та підключаються до хабу за допомогою VNet peering**, що дозволяє їм використовувати спільні сервіси в межах хабу. Ця модель сприяє чистій мережевій структурі, зменшуючи складність шляхом централізації загальних сервісів, які можуть використовувати кілька навантажень через різні VNets.
|
||||
**VNet Peering** — це функція в Azure, яка **дозволяє підключати різні Virtual Networks (VNets) безпосередньо та прозоро**. Через VNet peering ресурси в одному VNet можуть спілкуватися з ресурсами в іншому VNet, використовуючи приватні IP-адреси, **ніби вони знаходяться в одній мережі**.\
|
||||
**VNet Peering також можна використовувати з on-prem мережами** шляхом налаштування site-to-site VPN або Azure ExpressRoute.
|
||||
|
||||
> [!CAUTION] > **VNET pairing є нетранзитивним в Azure**, що означає, що якщо спиця 1 підключена до спиці 2, а спиця 2 підключена до спиці 3, то спиця 1 не може безпосередньо спілкуватися зі спицею 3.
|
||||
**Azure Hub and Spoke** — це мережева архітектура, яка використовує VNet peering для створення центрального **Hub VNet**, що підключається до кількох **Spoke VNets**. У хабі зазвичай розміщуються спільні сервіси (наприклад, фаєрволи, DNS або Active Directory), тоді як Spoke VNets хостять робочі навантаження додатків. Такий дизайн спрощує управління, підвищує безпеку завдяки централізованому контролю та зменшує дублювання.
|
||||
|
||||
**Приклад:**
|
||||
|
||||
Уявіть компанію з окремими відділами, такими як Продажі, HR та Розробка, **кожен з яких має свою власну VNet (спиці)**. Ці VNets **потребують доступу до спільних ресурсів**, таких як центральна база даних, брандмауер та шлюз до Інтернету, які всі розташовані в **іншій VNet (хаб)**. Використовуючи модель Hub and Spoke, кожен відділ може **надійно підключатися до спільних ресурсів через VNet хабу, не піддаючи ці ресурси публічному Інтернету** або створюючи складну мережеву структуру з численними з'єднаннями.
|
||||
Велика організація з кількома відділами (Finance, HR, IT) може створити **Hub VNet with shared services**, наприклад фаєрволи та DNS-сервери. Кожен відділ може мати власний Spoke VNet, який підключається до Hub через peering. Це дозволяє відділам безпечно взаємодіяти та використовувати спільні сервіси без експонування своїх ресурсів у публічному інтернеті.
|
||||
|
||||
### Enumeration
|
||||
### **Enumeration**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -341,8 +415,8 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
|
||||
# List all VNets in your subscription
|
||||
az network vnet list --query "[].{name:name, location:location, addressSpace:addressSpace}" -o table
|
||||
|
||||
# List VNet peering connections for a given VNet
|
||||
az network vnet peering list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, peeringState:peeringState, remoteVnetId:remoteVnetId}" -o table
|
||||
# List VNet Peerings
|
||||
az network vnet peering list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, remoteVnetId:remoteVirtualNetwork.id, allowForwardedTraffic:allowForwardedTraffic, allowGatewayTransit:allowGatewayTransit}"
|
||||
|
||||
# List Shared Resources (e.g., Azure Firewall) in the Hub
|
||||
az network firewall list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table
|
||||
@@ -353,8 +427,8 @@ az network firewall list --query "[].{name:name, location:location, resourceGrou
|
||||
# List all VNets in your subscription
|
||||
Get-AzVirtualNetwork
|
||||
|
||||
# List VNet peering connections for a given VNet
|
||||
(Get-AzVirtualNetwork -ResourceGroupName <ResourceGroupName> -Name <VNetName>).VirtualNetworkPeerings
|
||||
# List VNet Peerings
|
||||
Get-AzVirtualNetworkPeering -ResourceGroupName <ResourceGroupName> -VirtualNetworkName <VNetName>
|
||||
|
||||
# List Shared Resources (e.g., Azure Firewall) in the Hub
|
||||
Get-AzFirewall
|
||||
@@ -364,11 +438,11 @@ Get-AzFirewall
|
||||
|
||||
## Site-to-Site VPN
|
||||
|
||||
Site-to-Site VPN в Azure дозволяє вам **підключити вашу локальну мережу до вашої Azure Virtual Network (VNet)**, що дозволяє ресурсам, таким як ВМ в Azure, з'являтися так, ніби вони знаходяться у вашій локальній мережі. Це з'єднання встановлюється через **VPN-шлюз, який шифрує трафік** між двома мережами.
|
||||
**Site-to-Site VPN** в Azure встановлює захищене та **постійне з'єднання між вашою on-premises мережею та вашою Azure Virtual Network (VNet)**, що дозволяє ресурсам, таким як VMs в Azure, виглядати так, ніби вони перебувають у вашій локальній мережі. Це з'єднання створюється через **VPN gateway, який шифрує трафік** між двома мережами.
|
||||
|
||||
**Приклад:**
|
||||
|
||||
Компанія з головним офісом у Нью-Йорку має локальний дата-центр, який потрібно безпечно підключити до свого VNet в Azure, що хостить її віртуалізовані навантаження. Налаштувавши **Site-to-Site VPN, компанія може забезпечити зашифроване з'єднання між локальними серверами та Azure ВМ**, що дозволяє безпечно отримувати доступ до ресурсів у обох середовищах, ніби вони знаходяться в одній локальній мережі.
|
||||
Компанія з головним офісом у Нью-Йорку має on-premises дата-центр, який потрібно безпечно підключити до свого VNet в Azure, що розміщує її віртуалізовані робочі навантаження. Налаштувавши **Site-to-Site VPN**, компанія забезпечує шифроване з'єднання між on-premises серверами та Azure VMs, що дозволяє безпечно отримувати доступ до ресурсів у обох середовищах так, ніби вони знаходяться в одній локальній мережі.
|
||||
|
||||
### **Enumeration**
|
||||
|
||||
@@ -395,13 +469,13 @@ Get-AzVirtualNetworkGatewayConnection -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
## Azure ExpressRoute
|
||||
|
||||
Azure ExpressRoute - це сервіс, який забезпечує **приватне, виділене, високошвидкісне з'єднання між вашою локальною інфраструктурою та центрами обробки даних Azure**. Це з'єднання здійснюється через постачальника зв'язку, обходячи публічний інтернет і пропонуючи більшу надійність, швидші швидкості, нижчі затримки та вищу безпеку, ніж звичайні інтернет-з'єднання.
|
||||
Azure ExpressRoute — це сервіс, який забезпечує **приватне, виділене, високошвидкісне з’єднання між вашою локальною інфраструктурою та Azure дата-центрами**. Це з’єднання реалізується через провайдера підключення, минаючи публічний інтернет і пропонуючи більшу надійність, вищі швидкості, нижчу затримку та підвищену безпеку порівняно зі звичайними інтернет-з'єднаннями.
|
||||
|
||||
**Приклад:**
|
||||
|
||||
Багатонаціональна корпорація потребує **послідовного та надійного з'єднання з її сервісами Azure через великий обсяг даних** та необхідність високої пропускної здатності. Компанія обирає Azure ExpressRoute для безпосереднього з'єднання свого локального центру обробки даних з Azure, що полегшує великомасштабні передачі даних, такі як щоденні резервні копії та аналітика даних в реальному часі, з підвищеною конфіденційністю та швидкістю.
|
||||
Багатонаціональна корпорація потребує **стабільного та надійного з’єднання з своїми сервісами Azure через великий обсяг даних** та необхідність високої пропускної спроможності. Компанія обирає Azure ExpressRoute для прямого підключення свого локального дата-центру до Azure, що полегшує масштабні передачі даних, такі як щоденні резервні копії та аналітика в режимі реального часу, з підвищеною приватністю та швидкістю.
|
||||
|
||||
### **Enumeration**
|
||||
### **Перерахування**
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -418,4 +492,10 @@ Get-AzExpressRouteCircuit
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Посилання
|
||||
|
||||
- [DNS OverDoS: Чи занадто приватні Private Endpoints?](https://unit42.paloaltonetworks.com/dos-attacks-and-azure-private-endpoint/)
|
||||
- [Конфігурація Azure Private Endpoint DNS](https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-dns)
|
||||
- [Відкат Private DNS до інтернету](https://learn.microsoft.com/en-us/azure/dns/private-dns-fallback)
|
||||
|
||||
{{#include ../../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user