Az - Azure Network

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Basic Information

Azure 内的网络作为其云计算平台的一个组成部分,能够实现各种 Azure 服务和资源之间的连接和通信。Azure 的网络架构设计为高度可扩展、安全且可定制。

Azure 提供的核心服务是虚拟网络 (VNet),允许用户在 Azure 云中创建隔离的网络。在这些 VNet 中,可以安全地托管和管理虚拟机、应用程序和数据库等资源。Azure 的网络支持云内通信(Azure 服务之间)以及与外部网络和互联网的连接。

安全性是 Azure 网络的一个关键方面,提供了各种工具和服务来保护数据、管理访问和确保合规性。这些安全措施包括防火墙网络安全组加密功能,允许对流量和访问进行高度控制。

总体而言,Azure 的网络功能旨在提供灵活性,允许用户创建适合其特定应用和工作负载需求的网络环境,同时保持对安全性和可靠性的高度重视。

Virtual Network (VNET) & Subnets

Azure 中的 VNet 本质上是您在云中的自有网络的表示。它是专用于您的订阅的 Azure 云的逻辑隔离。VNet 允许您在 Azure 中配置和管理虚拟专用网络 (VPN),并可用于托管和管理多种类型的 Azure 资源,如虚拟机 (VM)、数据库和应用服务。

VNet 为您提供完全控制网络设置的能力,包括IP 地址范围、子网创建、路由表和网络网关。

子网是 VNet 中的IP 地址范围。您可以将 VNet 划分为多个子网以便于组织和安全。VNet 中的每个子网可用于根据您的网络和应用架构隔离和分组资源。

此外,子网允许您将 VNet 分段为一个或多个子网络,提供资源可以使用的一系列 IP 地址。

Example

  • 假设您有一个名为 MyVNet 的 VNet,其 IP 地址范围为 10.0.0.0/16。您可以在此 VNet 中创建一个子网,例如 Subnet-1,其 IP 地址范围为 10.0.0.0/24,用于托管您的 Web 服务器。另一个子网 Subnet-2,范围为 10.0.1.0/24,可以用于您的数据库服务器。这种分段允许在网络内进行高效的管理和安全控制。

Enumeration

要列出 Azure 账户中的所有 VNet 和子网,可以使用 Azure 命令行界面 (CLI)。以下是步骤:

# List VNets
az network vnet list --query "[].{name:name, location:location, addressSpace:addressSpace}" -o table

# List subnets of a VNet
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, addressPrefix:addressPrefix}" -o table

Network Security Groups (NSG)

在 Azure 中,Network Security Group (NSG) 的主要功能是过滤 Azure Virtual Network (VNet) 内 Azure 资源的网络流量。它包含一组安全规则,详细规定了网络流量的流向。

NSG 的关键方面包括:

  • 流量控制:每个 NSG 包含的规则对于允许或阻止与各种 Azure 资源相关的入站和出站网络流量至关重要。

  • 规则组件:NSG 内的规则非常具体,基于源/目标 IP 地址、端口和协议等标准过滤流量。这种特异性允许对网络流量进行精细管理。

  • 安全增强:通过确保只有授权流量可以进入或离开您的 Azure 资源,NSG 在加强网络基础设施的安全态势方面起着至关重要的作用。

示例

  • 假设您有一个名为 MyNSG 的 NSG 应用于 VNet 内的子网或特定虚拟机。您可以创建如下规则:

  • 一个入站规则,允许来自任何源的 HTTP 流量(端口 80)到您的 Web 服务器。

  • 一个出站规则,仅允许 SQL 流量(端口 1433)到特定目标 IP 地址范围。

枚举

# List NSGs
az network nsg list --query "[].{name:name, location:location}" -o table

# Get NSG rules
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

Azure Firewall

Azure Firewall 是一种托管的基于云的网络安全服务,用于保护您的 Azure 虚拟网络资源。它是一种完全有状态的防火墙即服务,具有内置的高可用性和可扩展性功能。

Azure Firewall 提供比 NSGs 更高级的功能,包括应用级过滤、网络级过滤、基于威胁情报的过滤以及与 Azure Monitor 的日志记录和分析集成。 它可以过滤出站、入站、spoke-to-spoke、VPN 和 ExpressRoute 流量。防火墙规则可以基于 FQDN(完全限定域名)、IP 地址和端口创建

Azure Firewall 和 NSGs 之间的区别

  1. 范围:

  • NSG: 在子网或网络接口级别工作。旨在提供对网络接口(NIC)、虚拟机或子网的入站和出站流量的基本过滤。

  • Azure Firewall: 在 VNet 级别操作,提供更广泛的保护范围。旨在保护您的虚拟网络资源并管理流入和流出 VNet 的流量。

  1. 功能:

  • NSG: 提供基于 IP 地址、端口和协议的基本过滤功能。不支持应用级检查或威胁情报等高级功能。

  • Azure Firewall: 提供高级功能,如应用级(第 7 层)流量过滤、基于威胁情报的过滤、网络流量过滤等。还支持多个公共 IP 地址。

  1. 使用场景:

  • NSG: 适用于基本的网络级流量过滤。

  • Azure Firewall: 适用于需要应用级控制、日志记录和威胁情报的更复杂的过滤场景。

  1. 管理和监控:

  • NSG: 提供基本的日志记录和与 Azure Monitor 的集成。

  • Azure Firewall: 通过 Azure Monitor 提供高级日志记录和分析功能,这对于了解流量的性质和模式至关重要。

枚举

# List Azure Firewalls
az network firewall list --query "[].{name:name, location:location, subnet:subnet, publicIp:publicIp}" -o table

# Get network rules of a firewall
az network firewall network-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table

# Get application rules of a firewall
az network firewall application-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table

# Get nat rules of a firewall
az network firewall nat-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table

Network Virtual Appliance (NVA)

Azure 中的 Network Virtual Appliance (NVA) 是一种在虚拟网络中执行网络功能的虚拟设备。NVAs 通常用于 Azure 中本地不可用的网络功能或需要更多自定义时。它们本质上是运行网络应用程序或服务的虚拟机,例如防火墙、WAN 优化器或负载均衡器。

NVAs 用于复杂的路由、安全网络流量管理任务。它们可以从 Azure Marketplace 部署,许多第三方供应商在此提供其设备,准备集成到 Azure 环境中。

示例

  • 一个组织可以在 Azure 中部署一个 NVA 来创建一个自定义防火墙解决方案。这个 NVA 可以运行第三方防火墙软件,提供高级功能,如入侵检测、数据包检查或 VPN 连接。NVA 可以配置为检查和过滤通过它的流量,确保根据组织的政策实施增强的安全措施。

枚举

# Usually NVAs are named or tagged in a way to distinguish them from other VMs
az vm list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

# For a specific VM identified as an NVA, list its network interfaces
az vm nic list --vm-name <VMName> --resource-group <ResourceGroupName> --query "[].{id:id}" -o table

Azure Route Tables & User Defined Routes (UDR)

Azure Route Tables 是 Microsoft Azure 中的一项功能,允许在 Azure Virtual Networks (VNets) 内控制网络流量路由。本质上,它们定义了 数据包 在 VNets 内的子网之间、VNets 之间或到外部网络之间的 转发 方式。每个路由表包含一组规则,称为路由,这些规则指定了数据包应如何根据其目标 IP 地址进行路由。

User Defined Routes (UDR) 是 Azure 中的 自定义路由,您可以在 Azure Route Tables 中创建这些路由,以控制 网络流量的流动,无论是在 Azure Virtual Networks (VNets) 内部、VNets 之间,还是到外部连接。UDR 使您能够根据特定需求灵活地引导网络流量,覆盖 Azure 的默认路由决策。

这些路由在需要 通过虚拟设备路由流量、为安全或政策合规性强制特定路径或与本地网络集成的场景中特别有用。

示例

  • 假设您部署了一个 Network Virtual Appliance (NVA) 来检查 VNet 内子网之间的流量。您可以创建一个 UDR,将一个子网到另一个子网的所有流量引导通过 NVA。这个 UDR 确保 NVA 在流量到达目的地之前对其进行安全检查。

枚举

# List Route Tables
az network route-table list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

# List UDRs 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

Azure Private Link 是 Azure 中的一项服务,通过确保 Azure 虚拟网络 (VNet) 和服务之间的流量完全在 Microsoft 的 Azure 主干网络内传输,从而 实现对 Azure 服务的私有访问。它有效地将服务引入您的 VNet。这种设置通过不将数据暴露在公共互联网中来增强安全性。

Private Link 可以与各种 Azure 服务一起使用,如 Azure Storage、Azure SQL Database 和通过 Private Link 共享的自定义服务。它提供了一种从您自己的 VNet 甚至不同的 Azure 订阅中安全使用服务的方法。

NSG 不适用于私有端点,这显然意味着将 NSG 与包含 Private Link 的子网关联将没有效果。

示例

  • 考虑一个场景,您有一个 Azure SQL Database,您希望从您的 VNet 安全访问。通常,这可能涉及通过公共互联网。使用 Private Link,您可以在您的 VNet 中创建一个 直接连接到 Azure SQL Database 服务的私有端点。此端点使数据库看起来像是您自己 VNet 的一部分,通过私有 IP 地址访问,从而确保安全和私有访问。

枚举

# List Private Link Services
z network private-link-service list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

# List Private Endpoints
az network private-endpoint list --query "[].{name:name, location:location, resourceGroup:resourceGroup, privateLinkServiceConnections:privateLinkServiceConnections}" -o table

Azure Service Endpoints

Azure Service Endpoints 扩展了您的虚拟网络私有地址空间和 VNet 的身份,通过直接连接到 Azure 服务。通过启用服务端点,VNet 中的资源可以安全地连接到 Azure 服务,如 Azure Storage 和 Azure SQL Database,使用 Azure 的骨干网络。这确保了从 VNet 到 Azure 服务的流量保持在 Azure 网络内,提供了更安全和可靠的路径。

Example

  • 例如,一个Azure Storage 账户默认情况下可以通过公共互联网访问。通过在 VNet 中启用Azure Storage 的服务端点,您可以确保只有来自 VNet 的流量可以访问存储账户。然后可以配置存储账户防火墙,仅接受来自 VNet 的流量。

Enumeration

# List Virtual Networks with 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

Microsoft 在 docs 中推荐使用 Private Links:\

Service Endpoints:

  • 从你的 VNet 到 Azure 服务的流量通过 Microsoft Azure 主干网络传输,绕过公共互联网。

  • 端点是到 Azure 服务的直接连接,并不在 VNet 内为服务提供私有 IP。

  • 除非你配置服务防火墙以阻止此类流量,否则服务本身仍可通过其公共端点从你的 VNet 外部访问。

  • 子网和 Azure 服务之间是一对一的关系。

  • 比 Private Links 便宜。

Private Links:

  • Private Link 通过私有端点将 Azure 服务映射到你的 VNet,私有端点是 VNet 内具有私有 IP 地址的网络接口。

  • 使用此私有 IP 地址访问 Azure 服务,使其看起来像是你网络的一部分。

  • 通过 Private Link 连接的服务只能从你的 VNet 或连接的网络访问;服务没有公共互联网访问。

  • 它使得与 Azure 服务或你在 Azure 中托管的服务的安全连接成为可能,以及与他人共享的服务的连接。

  • 它通过 VNet 中的私有端点提供更细粒度的访问控制,而不是通过服务端点在子网级别提供更广泛的访问控制。

总之,虽然 Service Endpoints 和 Private Links 都提供了对 Azure 服务的安全连接,但 Private Links 通过确保服务私密访问而不暴露于公共互联网,提供了更高水平的隔离和安全性。另一方面,Service Endpoints 更容易设置,适用于不需要在 VNet 中使用私有 IP 的一般情况下的简单、安全的 Azure 服务访问。

Azure Front Door (AFD) 和 AFD WAF

Azure Front Door 是一个可扩展且安全的入口点,用于快速交付你的全球 Web 应用程序。它结合了各种服务,如全球负载均衡、站点加速、SSL 卸载和 Web 应用防火墙 (WAF) 功能于一体。Azure Front Door 提供基于用户最近的边缘位置的智能路由,确保最佳性能和可靠性。此外,它还提供基于 URL 的路由、多站点托管、会话亲和性和应用层安全性。

Azure Front Door WAF 旨在保护 Web 应用程序免受基于 Web 的攻击,无需修改后端代码。它包括自定义规则和托管规则集,以防止 SQL 注入、跨站脚本和其他常见攻击。

示例

  • 假设你有一个全球分布的应用程序,用户遍布世界各地。你可以使用 Azure Front Door 将用户请求路由到最近的区域数据中心托管你的应用程序,从而减少延迟,改善用户体验,并通过 WAF 功能保护其免受 Web 攻击。如果某个区域发生停机,Azure Front Door 可以自动将流量重新路由到下一个最佳位置,确保高可用性。

枚举

# List Azure Front Door Instances
az network front-door list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

# List Front Door WAF Policies
az network front-door waf-policy list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

Azure Application Gateway 和 Azure Application Gateway WAF

Azure Application Gateway 是一个网络流量负载均衡器,使您能够管理到网络应用程序的流量。它在应用交付控制器(ADC)中提供第7层负载均衡、SSL终止和网络应用防火墙(WAF)功能。主要功能包括基于URL的路由、基于cookie的会话亲和性和安全套接字层(SSL)卸载,这对于需要复杂负载均衡功能(如全局路由和基于路径的路由)的应用程序至关重要。

示例

  • 考虑一个场景,您有一个包含多个子域的电子商务网站,用于不同的功能,如用户账户和支付处理。Azure Application Gateway 可以根据URL路径将流量路由到适当的网络服务器。例如,example.com/accounts 的流量可以被定向到用户账户服务,而 example.com/pay 的流量可以被定向到支付处理服务。 并且使用WAF功能保护您的网站免受攻击。

枚举

# List the Web Application Firewall configurations for your Application Gateways
az network application-gateway waf-config list --gateway-name <AppGatewayName> --resource-group <ResourceGroupName> --query "[].{name:name, firewallMode:firewallMode, ruleSetType:ruleSetType, ruleSetVersion:ruleSetVersion}" -o table

Azure Hub, Spoke & VNet Peering

VNet Peering 是 Azure 中的一项网络功能,允许不同的虚拟网络(VNet)直接无缝连接。通过 VNet Peering,一个 VNet 中的资源可以使用私有 IP 地址与另一个 VNet 中的资源通信,就像它们在同一个网络中一样VNet Peering 也可以通过设置站点到站点 VPN 或 Azure ExpressRoute 与本地网络一起使用

Azure Hub and Spoke 是 Azure 中用于管理和组织网络流量的网络拓扑。“Hub”是控制和路由不同“Spoke”之间流量的中心点。Hub 通常包含共享服务,如网络虚拟设备(NVA)、Azure VPN Gateway、Azure Firewall 或 Azure Bastion。“Spoke”是托管工作负载并使用 VNet Peering 连接到 Hub 的 VNet,允许它们利用 Hub 内的共享服务。此模型促进了清晰的网络布局,通过集中多个 VNet 中的常见服务来减少复杂性。

VNET Peering 在 Azure 中是非传递性的,这意味着如果 Spoke 1 连接到 Spoke 2,Spoke 2 连接到 Spoke 3,那么 Spoke 1 不能直接与 Spoke 3 通信。

Examples

  • 想象一个公司有不同的部门,如销售、人力资源和开发,每个部门都有自己的 VNet(Spoke)。这些 VNet 需要访问共享资源,如中央数据库、防火墙和互联网网关,这些资源都位于另一个 VNet(Hub)中。通过使用 Hub and Spoke 模型,每个部门可以通过 Hub VNet 安全地连接到共享资源,而无需将这些资源暴露在公共互联网或创建具有众多连接的复杂网络结构中

Enumeration

# 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 Shared Resources (e.g., Azure Firewall) in the Hub
az network firewall list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

Site-to-Site VPN

在 Azure 中,站点到站点 VPN 允许您将本地网络连接到 Azure 虚拟网络 (VNet),使得 Azure 中的资源(如 VMs)看起来像是在本地网络中。此连接通过加密两者之间流量的 VPN 网关建立。

示例

  • 一家总部位于纽约的公司有一个本地数据中心,需要安全地连接到其在 Azure 中的 VNet,该 VNet 托管其虚拟化工作负载。通过设置站点到站点 VPN,公司可以确保本地服务器与 Azure VMs 之间的加密连接,使得资源可以在两个环境中安全访问,就像它们在同一个本地网络中一样。

枚举

# List VPN Gateways
az network vnet-gateway list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

# List VPN Connections
az network vpn-connection list --gateway-name <VpnGatewayName> --resource-group <ResourceGroupName> --query "[].{name:name, connectionType:connectionType, connectionStatus:connectionStatus}" -o table

Azure ExpressRoute

Azure ExpressRoute 是一项服务,提供本地基础设施与 Azure 数据中心之间的私有、专用、高速连接。这种连接通过连接提供商实现,绕过公共互联网,提供比典型互联网连接更高的可靠性、更快的速度、更低的延迟和更高的安全性。

示例

  • 一家跨国公司由于数据量大且需要高吞吐量,要求与其 Azure 服务之间有一致且可靠的连接。该公司选择 Azure ExpressRoute 直接将其本地数据中心连接到 Azure,以增强隐私和速度,促进大规模数据传输,如每日备份和实时数据分析。

枚举

# List ExpressRoute Circuits
az network express-route list --query "[].{name:name, location:location, resourceGroup:resourceGroup, serviceProviderName:serviceProviderName, peeringLocation:peeringLocation}" -o table

学习和练习 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) 学习和练习 GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)

支持 HackTricks

Last updated