Translated ['', 'src/pentesting-cloud/azure-security/az-services/vms/az-

This commit is contained in:
Translator
2026-01-21 21:42:00 +00:00
parent 4507c0a8b6
commit b61b858ed6

View File

@@ -1,28 +1,28 @@
# Az - Azure Network
# Az - Azure 网络
{{#include ../../../../banners/hacktricks-training.md}}
## 基本信息
Azure 提供 **虚拟网络 (VNet)**,允许用户在 Azure 云中创建 **隔离的** **网络**。在这些 VNet 中,可以安全地托管和管理虚拟机、应用程序、数据库等资源。Azure 的网络支持云内通信(在 Azure 服务之间)以及与外部网络和互联网的连接。\
此外,可以 **连接** VNet 与其他 VNet 以及本地网络
Azure 提供 **虚拟网络 (VNet)**,允许用户在 Azure 云中创建 **隔离的** **网络**。在这些 VNet 中,虚拟机、应用程序、数据库等资源可以被安全地托管和管理。Azure 的网络支持云内Azure 服务之间)的通信,也支持与外部网络和互联网的连接。\
此外,可以 VNets 与其他 VNets 以及本地 (on-premise) 网络互联
## 虚拟网络 (VNET) 子网
## 虚拟网络 (VNET) 子网
Azure 虚拟网络 (VNet) 是在云中自己网络的表示,提供对您订阅的 Azure 环境 **逻辑隔离**。VNet 允许在 Azure 中配置和管理虚拟专用网络 (VPN)托管虚拟机 (VM)、数据库和应用服务等资源。它们提供 **对网络设置的完全控制**,包括 IP 地址范围、子网创建、路由表和网络网关。
Azure 虚拟网络 (VNet) 是在云网络的表示形式,为你的订阅专属的 Azure 环境提供 **逻辑隔离**。VNet 允许在 Azure 中配置和管理虚拟私有网络 (VPN)承载诸如 虚拟机 (VMs)、数据库和应用服务 等资源。它们提供对网络设置的 **完全控制**,包括 IP 地址范围、子网创建、路由表和网络网关。
**子网** 是 VNet 内的细分,由特定的 **IP 地址范围** 定义。通过将 VNet 划分为多个子网,可以根据网络架构组织和保护资源。\
**子网** 是 VNet 内的划分单元,由特定的 **IP 地址范围** 定义。通过将 VNet 划分为多个子网,可以根据你的网络架构组织和保护资源。\
默认情况下,同一 Azure 虚拟网络 (VNet) 内的所有子网 **可以相互通信**,没有任何限制。
**示例:**
**Example:**
- `MyVNet` 的 IP 地址范围为 10.0.0.0/16。
- **子网-1** 10.0.0.0/24 用于 Web 服务器。
- **子网-2** 10.0.1.0/24 用于数据库服务器。
- **Subnet-1:** 10.0.0.0/24 用于 web 服务器。
- **Subnet-2:** 10.0.1.0/24 用于 数据库 服务器。
### 枚举
要列出 Azure 户中的所有 VNet 和子网,可以使用 Azure 命令行界面 (CLI)。以下是步骤:
要列出 Azure 户中的所有 VNet 和子网,可以使用 Azure Command-Line Interface (CLI)。以下是步骤:
{{#tabs }}
{{#tab name="az cli" }}
@@ -49,14 +49,14 @@ Select-Object Name, AddressPrefix
## 网络安全组 (NSG)
一个 **网络安全组 (NSG)** 过滤 Azure 虚拟网络 (VNet) 内 Azure 资源的网络流量。它包含一组 **安全规则**,可以指示 **哪些端口可以用于入站和出站流量**,通过源端口、源 IP、目标端口,并且可以分配优先级(优先级数字越,优先级越高)。
一个 **网络安全组 (NSG)** 用于过滤位于 Azure Virtual Network (VNet) 内 Azure 资源的进出网络流量。它包含一组 **安全规则**,可以基于源端口、源 IP、目标端口 指定 **应为入站和出站流量打开哪些端口**,并且可以为规则分配优先级(优先级数字越,优先级越高)。
NSG 可以 **子网和 NIC 关联**
NSGs 可以关联到 **子网和 NICs**
**规则示例:**
-允许来自任源的 HTTP 流量(端口 80的 Web 服务器的入站规则
-个仅允许 SQL 流量(端口 1433到特定目标 IP 地址范围的出站规则
-条入站规则,允许来自任意来源的 HTTP 流量(端口 80的 Web 服务器。
-条出站规则,仅允许到特定目标 IP 地址范围的 SQL 流量(端口 1433
### 枚举
@@ -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 是一个 **托管的、有状态的 firewall**,用于过滤流量 (L3L7) 的 east-west 和 north-south 流向。部署在 **VNet level**,它集中对所有子网进行检查并 auto-scales 以提高可用性
它提供三种 SKU——**基本版**、**标准版**和 **高级版**,每种版本都针对特定客户需求进行了定制:
Available SKUs: **Basic**, **Standard**, and **Premium**:
| Criteria/Feature | Option 1 | Option 2 | Option 3 |
| 指标/功能 | 选项 1 | 选项 2 | 选项 3 |
| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
| **推荐使用案例** | 需求有限的小/中型企业 (SMBs) | 一般企业使用,第 3 层到第 7 过滤 | 高度敏感环境(例如支付处理) |
| **性能** | 高达 250 Mbps 吞吐量 | 高 30 Gbps 吞吐量 | 高达 100 Gbps 吞吐量 |
| **威胁情报** | 仅警报 | 警报和阻止(恶意 IP/域名) | 警报和阻止(高级威胁情报) |
| **L3L7 过滤** | 基本过滤 | 跨协议的有状态过滤 | 具高级检的有状态过滤 |
| **高级威胁** | 不可用 | 基于威胁情报的过滤 | 包括入侵检测和防御系统 (IDPS) |
| **TLS 检查** | 不可用 | 不可用 | 支持入站/出站 TLS 终止 |
| **可用性** | 固定后端 (2 个虚拟机) | 自动扩展 | 自动扩展 |
| **管理简易** | 基控制 | 通过防火墙管理器进行管理 | 通过防火墙管理器进行管理 |
| **推荐使用场景** | 需求有限的小/中型企业 (SMBs) | 通用企业使用Layer 37 过滤 | 高度敏感环境(例如支付处理) |
| **性能** | 最高 250 Mbps 吞吐量 | 高 30 Gbps 吞吐量 | 最高 100 Gbps 吞吐量 |
| **威胁情报** | 仅告警 | 告警并阻断(恶意 IP/域名) | 告警并阻断(高级威胁情报) |
| **L3L7 过滤** | 基本过滤 | 跨协议的有状态过滤 | 具高级检的有状态过滤 |
| **高级威胁** | 不可用 | 基于威胁情报的过滤 | 包括 Intrusion Detection and Prevention System (IDPS) |
| **TLS 检查** | 不可用 | 不可用 | 支持入站/出站 TLS 终止 |
| **可用性** | 固定后端2 VMs | 自动扩展 | 自动扩展 |
| **管理性** | 基控制 | 通过 Firewall Manager 管理 | 通过 Firewall Manager 管理 |
### Enumeration
### 枚举
{{#tabs }}
{{#tab name="az cli" }}
@@ -143,9 +146,14 @@ Get-AzFirewall
## Azure 路由表
Azure **路由表** 用于控制子网内网络流量的路由。它们定义了规则,指定数据包应如何转发,转发目标可以是 Azure 资源、互联网或特定的下一跳,如虚拟设备或 Azure 防火墙。您可以将路由表与 **子网** 关联,所有在该子网内的资源将遵循表中的路由。
Azure **Route Tables (UDR)** 允许通过定义目标前缀(例如 `10.0.0.0/16``0.0.0.0/0`和下一跳Virtual Network, Internet, Virtual Network Gateway, or Virtual Appliance来覆盖默认路由。
**示例:** 如果一个子网托管需要通过网络虚拟设备 (NVA) 进行检查的出站流量的资源,您可以在路由表中创建一个 **路由**,将所有流量(例如,`0.0.0.0/0`)重定向到 NVA 的私有 IP 地址作为下一跳
> 路由在子网级别应用;该子网中的所有 VMs 都遵循该表
**示例:**
- 对于面向互联网的流量,使用默认 `0.0.0.0/0` 并将下一跳设置为 **Internet**
- 要检查出站流量,可将 `0.0.0.0/0` 路由到 Network Virtual Appliance (NVA) 的 IP。
### **枚举**
@@ -155,8 +163,11 @@ Azure **路由表** 用于控制子网内网络流量的路由。它们定义了
# 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,18 +183,18 @@ Get-AzRouteTable
## Azure Private Link
Azure Private Link 是 Azure 的一项服务,**通过确保的 Azure 虚拟网络 (VNet) 与服务之间的流量完全在 Microsoft Azure 主干网络内传输,从而实现对 Azure 服务的私有访问**。它有效地将服务引入的 VNet。此设置通过不将数据暴露公共互联网来增强安全性。
Azure Private Link 是 Azure 的一项服务,**为 Azure 服务启用私有访问**通过确保**你的 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 服务配合使用,如 Azure Storage、Azure SQL Database,以及通过 Private Link 共享的自定义服务。它为在你自己的 VNet 或甚至来自不同 Azure 订阅中使用这些服务提供了一种安全的方式
> [!CAUTION]
> NSG 不适用于私有端点,这清楚地意味着将 NSG 包含 Private Link 的子网关联将没有效果。
> NSGs 不适用于 private endpoints意味着将 NSG 关联到包含 Private Link 的子网不会产生任何效果。
**示例:**
考虑一个场景,您有一个 **希望从您的 VNet 安全访问的 Azure SQL Database**。通常这可能涉及穿越公共互联网。使用 Private Link可以在的 VNet 中创建一个 **私有端点**,直接连接到 Azure SQL Database 服务。此端点使数据库看起来像是自己 VNet 的一部分,可通过私有 IP 地址访问,从而确保安全和私密的访问。
设想一种场景:你有一个 **Azure SQL Database,想从你的 VNet 安全访问**。通常这可能需要经过公共互联网。使用 Private Link可以在的 VNet 中创建一个 **private endpoint**,直接连接到 Azure SQL Database 服务。该 endpoint 会使数据库看起来像是自己 VNet 的一部分,可通过 private IP address 访问,从而确保安全和私密的访问。
### **Enumeration**
### **枚举**
{{#tabs }}
{{#tab name="az cli" }}
@@ -206,15 +217,62 @@ Get-AzPrivateEndpoint | Select-Object Name, Location, ResourceGroupName, Private
{{#endtab }}
{{#endtabs }}
## Azure 服务端点
### DNS OverDoS via service Private DNS zone links
Azure 服务端点扩展了您的虚拟网络私有地址空间和 VNet 的身份,通过直接连接到 Azure 服务。通过启用服务端点,**您 VNet 中的资源可以安全地连接到 Azure 服务**,如 Azure Storage 和 Azure SQL Database使用 Azure 的骨干网络。这确保了**从 VNet 到 Azure 服务的流量保持在 Azure 网络内**,提供了更安全和可靠的路径
当一个 VNet 对某个 **service Private DNS zone**(例如 `privatelink.blob.core.windows.net`)有 **Virtual Network Link**Azure **forces hostname resolution** 将该服务类型的 Private Link 注册资源的主机名解析通过该 zone。如果该 zone 对于仍然通过其公共端点访问的资源**缺少必要的 `A` record**DNS 解析会返回 **NXDOMAIN**,客户端永远到达不到公共 IP从而在不接触资源本身的情况下造成**availability DoS**
**Abuse flow (control-plane DoS):**
1. 获得允许创建 **Private Endpoints** 或修改 **Private DNS zone links** 的 RBAC 权限。
2. 在另一个 VNet 中为相同服务类型创建一个 Private EndpointAzure 会自动创建该 service Private DNS zone 并将其链接到该 VNet
3. 将该 **service Private DNS zone** 链接到受害者 VNet。
4. 因为受害者 VNet 现在**被强制通过 Private DNS zone 解析**,而该 zone 中对目标资源不存在 `A` record名称解析失败工作负载无法到达仍为公共的端点。该情况适用于任何支持 Private Link 的服务storage, Key Vault, ACR, Cosmos DB, Function Apps, OpenAI 等)。
**Discovery at scale (Azure Resource Graph):**
- VNETs linked to the blob Private DNS zone (forced resolution for 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 服务。通过启用 service endpoints**你 VNet 中的资源可以安全地连接到 Azure services**,比如 Azure Storage 和 Azure SQL Database通过 Azure 骨干网络。当与 Network Security Groups (NSGs) 结合以进行细粒度流量控制时,这一点尤其有用。
**示例:**
例如,**Azure Storage** 账户默认可以通过公共互联网访问。通过在您的 VNet 中启用 **Azure Storage 的服务端点**,您可以确保只有来自 VNet 的流量可以访问存储账户。然后可以配置存储账户防火墙,仅接受来自您 VNet 的流量
- 如果在 VNET 中为 **Storage** Account 和 Service Endpoint **启用**,就可以在 storage account firewall 中**仅允许来自 VNET 的入站流量**,从而强制通过 **安全连接**,而无需为 storage service 开放公共 IP
### **枚举**
Service Endpoints **不需要私有 IP 地址**来为服务提供连接,而是依赖 Azure 骨干实现安全连通性。与 Private Links 相比,它们**更易于配置**,但**无法提供与 Private Links 相同级别的隔离和细粒度控制**。
### **Enumeration**
{{#tabs }}
{{#tab name="az cli" }}
@@ -223,7 +281,10 @@ Azure 服务端点扩展了您的虚拟网络私有地址空间和 VNet 的身
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" }}
@@ -237,71 +298,85 @@ Get-AzVirtualNetwork
{{#endtab }}
{{#endtabs }}
### 服务端点与私有链接之间的区别
### Differences Between Service Endpoints and Private Links
Microsoft 推荐在 [**docs**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints) 中使用私有链接:
Microsoft recommends using Private Links in the [**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 骨干网络传输,绕过公共互联网。
- 端点是与 Azure 服务的直接连接,并未为 VNet 内的服务提供私有 IP。
- 除非配置服务防火墙阻止此类流量,否则服务本身仍可通过其公共端点从 VNet 外部访问。
-的 VNet 到 Azure 服务的流量通过 Microsoft Azure 骨干网络传输,绕过公共互联网。
- 该 endpoint 是与 Azure 服务的直接连接,但不会为服务在 VNet 内提供私有 IP。
- 除非配置服务防火墙阻止此类流量,否则服务仍可通过其公共端点从 VNet 外部访问。
- 子网与 Azure 服务之间是一对一的关系。
- 比私有链接便宜
- 成本低于 Private Links
**私有链接:**
**Private Links:**
- 私有链接通过私有端点将 Azure 服务映射到的 VNet该私有端点是 VNet 内具有私有 IP 地址的网络接口。
- 使用此私有 IP 地址访问 Azure 服务,使其看起来像是网络的一部分。
- 通过私有链接连接的服务只能从的 VNet 或连接的网络访问;没有公共互联网访问服务
- Azure 服务或在 Azure 托管的自有服务提供安全连接,以及与他人共享的服务的连接。
- 它通过 VNet 中的私有端点提供更细粒度的访问控制,而不是通过服务端点在子网级别提供更广泛的访问控制。
- Private Link 通过 private endpoint 将 Azure 服务映射到的 VNetprivate endpoint 是在 VNet 内具有私有 IP 地址的网络接口。
- 通过该私有 IP 访问 Azure 服务,使其看起来像是网络的一部分。
- 通过 Private Link 连接的服务只能从的 VNet 或连接的网络访问;该服务无法通过公共互联网访问。
-实现了与 Azure 服务或在 Azure 托管的自有服务安全连接,以及与他人共享的服务的连接。
- 它通过 VNet 中的 private endpoint 提供更细粒度的访问控制,而不是像 Service Endpoints 那样在子网级别提供更泛的访问控制。
总之,虽然服务端点和私有链接都提供安全的 Azure 服务连接,**私有链接通过确保服务私密访问而不暴露于公共互联网,提供更高水平的隔离和安全性**。另一方面,服务端点在一般情况下更易于设置,适用于需要简单、安全访问 Azure 服务而不需要 VNet 中私有 IP 的情况。
In summary, while both Service Endpoints and Private Links provide secure connectivity to Azure services, **Private Links offer a higher level of isolation and security by ensuring that services are accessed privately without exposing them to the public internet**. Service Endpoints, on the other hand, are easier to set up for general cases where simple, secure access to Azure services is required without the need for a private IP in the VNet.
## Azure Front Door (AFD) AFD WAF
## Azure Front Door (AFD) & AFD WAF
**Azure Front Door** 是一个可扩展且安全的入口,用于 **快速交付** 您的全球 web 应用程序。它 **结合** 了全球 **负载均衡、站点加速、SSL 卸载和 Web 应用防火墙 (WAF)** 功能于一体。Azure Front Door 提供基于 **离用户最近的边缘位置** 的智能路由,确保最佳性能和可靠性。此外,它还提供基于 URL 的路由、多站点托管、会话亲和性和应用层安全性
**Azure Front Door** 是一个可扩展且安全的入口,用于全局 web 应用的快速交付。它**结合**了诸如 **application acceleration、SSL offloading、和 application layer security通过 Web Application Firewall - WAF** 等多种服务。它基于全球的 edge POP (Point of Presence) 节点,将你的应用更接近用户
**Azure Front Door WAF** 旨在 **保护 web 应用程序免受基于 web 的攻击**,而无需修改后端代码。它包括自定义规则和管理规则集,以防范 SQL 注入、跨站脚本和其他常见攻击等威胁。
> Azure Front Door provides a globally distributed network of edge locations to **route and accelerate** incoming traffic to your web applications (in Azure or elsewhere), improve performance, and enhance security.
**示例:**
**Example:**
想象一下,您有一个全球分布的应用程序,用户遍布世界各地。您可以使用 Azure Front Door **将用户请求路由到最近的区域数据中心** 托管您的应用程序,从而减少延迟,改善用户体验,并 **利用 WAF 功能保护其免受 web 攻击**。如果某个特定区域发生停机Azure Front Door 可以自动将流量重新路由到下一个最佳位置,确保高可用性
- 对于面向全球用户的电商平台,**Azure Front Door 可以在边缘节点缓存静态内容** 并提供 **SSL offloading**,从而减少延迟并提升响应速度。此外,它提供 **WAF** 来保护你的应用免受常见的网页漏洞(如 SQL injection 或 XSS的攻击
### 枚举
Azure Front Door 还通过基于健康探测和延迟将流量路由到最近的可用后端来提供 **smart load balancing**,以确保一致的性能和可用性。通过集成 **WAF**,它有助于防护常见的 web 威胁。
### **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 }}
{{#endtabs }}
## Azure Application Gateway Azure Application Gateway WAF
## Azure Application Gateway and Azure Application Gateway WAF
Azure Application Gateway 是一 **网络流量负载均衡器**,使能够管理 **网络** 应用程序的流量。它在应用交付控制器 (ADC) 中提供 ** 7 负载均衡、SSL 终止和网络应用防火墙 (WAF) 功能**。主要功能包括基于 URL 的路由、基于 cookie 的会话亲和性和安全套接字层 (SSL) 卸载,这些对于需要复杂负载均衡能力的应用程序至关重要,例如全路由和基于路径的路由。
Azure Application Gateway 是一 **Web 流量负载均衡器**,使能够管理流向你的 **Web** 应用程序的流量。它在 Application Delivery Controller (ADC) 作为服务中提供 **Layer 7 负载均衡、SSL 终止和 Web 应用防火墙 (WAF) 功能**。主要功能包括基于 URL 的路由、基于 cookie 的会话亲和性,以及 secure sockets layer (SSL) 卸载,这些对于需要复杂负载均衡能力例如全路由和基于路径的路由)的应用非常关键
**示例:**
考虑一个场景,您有一个电子商务网站,其中包含多个子域以支持不同功能例如用户账户和支付处理。Azure Application Gateway 可以 **根据 URL 路径路由流量到适当的网络服务器**。例如,流量到 `example.com/accounts` 可以被定向到用户账户服务,而流量到 `example.com/pay` 可以被定向到支付处理服务。\
**使用 WAF 功能保护的网站免受攻击。**
设想一个场景:你有一个电子商务网站,包含多个子域以承担不同功能例如用户账户和支付处理。Azure Application Gateway 可以 **根据 URL 路径将流量路由到相应的 Web 服务器**。例如,指向 `example.com/accounts` 的流量可以被导向用户账户服务,而指向 `example.com/pay` 的流量可以被导向支付处理服务。\
并**用 WAF 功能保护的网站免受攻击。**
### **枚举**
@@ -320,20 +395,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 对等连接,一个 VNet 中的资源可以使用私有 IP 地址与另一个 VNet 中的资源进行通信,**就像它们在同一网络中一样**。\
**VNet 对等连接还可以与本地网络一起使用**,通过设置站点到站点的 VPN 或 Azure ExpressRoute。
### VNet Peering
**Azure Hub 和 Spoke** Azure 中用于管理和组织网络流量的网络拓扑。**“中心”是一个控制和路由不同“辐射”的流量的中心点**。中心通常包含共享服务,如网络虚拟设备 (NVA)、Azure VPN 网关、Azure 防火墙或 Azure Bastion。**“辐射”是承载工作负载并通过 VNet 对等连接到中心的 VNets**,使它们能够利用中心内的共享服务。该模型促进了清晰的网络布局,通过集中多个 VNet 中的公共服务来减少复杂性。
**VNet Peering** 是 Azure 的一项功能,允许不同的 Virtual Networks (VNets) 直接且无缝地相互连接。通过 VNet peering某个 VNet 中的资源可以使用私有 IP 地址与另一个 VNet 中的资源通信,仿佛它们处于同一网络。\
**VNet Peering** 也可以与本地网络配合使用,通过建立 site-to-site VPN 或 Azure ExpressRoute。
> [!CAUTION] > **在 Azure 中VNET 对等连接是非传递的**,这意味着如果辐射 1 连接到辐射 2辐射 2 连接到辐射 3则辐射 1 不能直接与辐射 3 通信
**Azure Hub and Spoke** 是一种网络架构,利用 VNet peering 创建一个中心的 **Hub VNet**,并连接到多个 **Spoke VNets**。Hub 通常包含共享服务(例如 防火墙、DNS 或 Active Directory而 Spoke 承载应用工作负载。该设计简化了管理,通过集中控制增强安全性,并减少冗余
**示例:**
想象一个公司有独立的部门如销售、HR 和开发,**每个部门都有自己的 VNet辐射**。这些 VNets **需要访问共享资源**,如中央数据库、防火墙和互联网网关,这些资源都位于**另一个 VNet中心**中。通过使用 Hub 和 Spoke 模型,每个部门可以**通过中心 VNet 安全地连接到共享资源,而不将这些资源暴露公共互联网**或创建具有众多连接的复杂网络结构
一个拥有多个部门Finance、HR、IT的大型企业可以创建一个带有共享服务如防火墙和 DNS 服务器)的 **Hub VNet**。每个部门可以拥有自己的 **Spoke VNet**,并通过 peering 连接到 Hub。这样各部门可以安全地通信并使用共享服务,而无需将其资源暴露公共互联网。
### Enumeration
### **Enumeration**
{{#tabs }}
{{#tab name="az cli" }}
@@ -341,8 +416,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 +428,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
@@ -362,15 +437,15 @@ Get-AzFirewall
{{#endtab }}
{{#endtabs }}
## Site-to-Site VPN
## 站点到站点 VPN
在 Azure 中,Site-to-Site VPN 允许您 **将本地网络连接到 Azure 虚拟网络 (VNet)**,使 Azure 的资源(如虚拟机)看起来就像在您的本地网络上。连接通过 **VPN 网关加密两个网络之间的流量** 来建立。
在 Azure 中,**站点到站点 VPN** 建立了一条安全且**持久的连接,从你的本地网络到你的 Azure Virtual Network (VNet)**,使 Azure 的资源(例如 VMs看起来仿佛在你的本地网络上。连接通过一个**对两网络间流量进行加密的 VPN gateway**来建立。
**示例:**
一家总部位于纽约的企业拥有一个本地数据中心需要安全地连接到其在 Azure 中托管虚拟化工作负载的 VNet。通过设置 **Site-to-Site VPN公司可以确保本地服务器与 Azure 虚拟机之间的加密连接**,使得资源可以在两个环境中安全访问,就像它们在同一本地网络中一样
一家总部位于纽约的企业,其本地数据中心需要与托管虚拟化工作负载的 Azure VNet 建立安全连接。通过设置一个 **站点到站点 VPN公司可以确保本地服务器与 Azure VMs 之间的连接被加密**,从而让两端的资源像在同一局域网内一样被安全访问
### **Enumeration**
### **枚举**
{{#tabs }}
{{#tab name="az cli" }}
@@ -395,13 +470,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 +493,10 @@ Get-AzExpressRouteCircuit
{{#endtab }}
{{#endtabs }}
## 参考资料
- [DNS OverDoS: Are Private Endpoints Too Private?](https://unit42.paloaltonetworks.com/dos-attacks-and-azure-private-endpoint/)
- [Azure Private Endpoint DNS configuration](https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-dns)
- [Private DNS fallback to internet](https://learn.microsoft.com/en-us/azure/dns/private-dns-fallback)
{{#include ../../../../banners/hacktricks-training.md}}