Az - Azure Network

支持 HackTricks

基本信息

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

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

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

总体而言,Azure 的网络能力旨在提供灵活性,使用户能够创建适合其特定应用和工作负载需求的网络环境,同时保持对安全性和可靠性的强烈关注。

虚拟网络 (VNET) 和子网

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

VNets 使您对网络设置拥有 完全控制权,包括 IP 地址 范围、子网创建、路由表和网络网关。

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

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

示例

  • 假设您有一个名为 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,可以用于您的数据库服务器。这种分段允许在网络内进行高效的管理和安全控制。

枚举

要列出 Azure 账户中的所有 VNets 和子网,您可以使用 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

网络安全组 (NSG)

在 Azure 中,网络安全组 (NSG) 的主要功能是过滤 Azure 虚拟网络 (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 提供 比 NSG 更高级 的功能,包括 应用级过滤、网络级过滤、基于威胁情报的过滤,以及与 Azure Monitor 的集成,用于日志记录和分析。 它可以过滤出站、入站、点对点、VPN 和 ExpressRoute 流量。防火墙规则可以基于 FQDN(完全合格域名)、IP 地址和端口创建

Azure Firewall 和 NSG 之间的区别

  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 提供高级日志记录和分析能力,这对于理解流量的性质和模式至关重要。

Enumeration

# 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

网络虚拟设备 (NVA)

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

NVA 用于复杂的路由、安全网络流量管理 任务。它们可以从 Azure 市场 部署,许多第三方供应商提供其设备,准备好集成到 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 路由表和用户定义路由 (UDR)

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

用户定义路由 (UDR) 是 Azure 中 您在 Azure 路由表内创建的自定义路由,用于控制 网络流量的流动,在 Azure 虚拟网络 (VNets) 之间以及与外部连接之间。UDR 使您能够根据特定需求灵活地引导网络流量,覆盖 Azure 的默认路由决策。

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

示例

  • 假设您已部署了一个网络虚拟设备 (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 的子网关联将没有效果。

示例

  • 考虑一个场景,您有一个 希望从您的 VNet 安全访问的 Azure SQL Database。通常,这可能涉及穿越公共互联网。通过 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 服务端点

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

示例

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

枚举

# 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 中建议使用私有链接:\

服务端点:

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

  • 该端点是与 Azure 服务的直接连接,并未为 VNet 内的服务提供私有 IP。

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

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

  • 比私有链接便宜。

私有链接:

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

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

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

  • 它为 Azure 服务或您在 Azure 中托管的自有服务提供安全连接,以及与他人共享的服务的连接。

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

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

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 应用程序网关和 Azure 应用程序网关 WAF

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

示例

  • 考虑一个场景,您有一个电子商务网站,其中包含多个子域以实现不同功能,例如用户帐户和支付处理。Azure 应用程序网关可以 根据 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 中的一项网络功能,允许不同的虚拟网络(VNets)直接无缝连接。通过 VNet 对等连接,一个 VNet 中的资源可以使用私有 IP 地址与另一个 VNet 中的资源进行通信,就像它们在同一网络中一样VNet 对等连接还可以与本地网络一起使用,通过设置站点到站点的 VPN 或 Azure ExpressRoute。

Azure Hub 和 Spoke 是在 Azure 中用于管理和组织网络流量的网络拓扑。“中心”是一个控制和路由不同“辐射”之间流量的中心点。中心通常包含共享服务,如网络虚拟设备(NVA)、Azure VPN 网关、Azure 防火墙或 Azure Bastion。“辐射”是承载工作负载并通过 VNet 对等连接到中心的 VNets,使它们能够利用中心内的共享服务。该模型促进了清晰的网络布局,通过集中多个 VNet 可以使用的公共服务来减少复杂性。

在 Azure 中,VNET 对等连接是非传递的,这意味着如果辐射 1 连接到辐射 2,辐射 2 连接到辐射 3,则辐射 1 不能直接与辐射 3 通信。

示例

  • 想象一个公司有独立的部门,如销售、HR 和开发,每个部门都有自己的 VNet(辐射)。这些 VNets 需要访问共享资源,如中央数据库、防火墙和互联网网关,这些资源都位于另一个 VNet(中心)中。通过使用 Hub 和 Spoke 模型,每个部门可以通过中心 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 中,Site-to-Site VPN 允许您 将本地网络连接到 Azure 虚拟网络 (VNet),使 Azure 中的资源(如虚拟机)看起来就像在您的本地网络上。此连接是通过 VPN 网关加密两个网络之间的流量 来建立的。

示例

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

枚举

# 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
支持 HackTricks

Last updated