Az - Azure Network

Reading time: 20 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Informations de base

Azure fournit des réseaux virtuels (VNet) qui permettent aux utilisateurs de créer des réseaux isolés au sein du cloud Azure. Au sein de ces VNets, des ressources telles que des machines virtuelles, des applications, des bases de données... peuvent être hébergées et gérées en toute sécurité. Le réseau dans Azure prend en charge à la fois la communication au sein du cloud (entre les services Azure) et la connexion à des réseaux externes et à Internet.
De plus, il est possible de connecter des VNets avec d'autres VNets et avec des réseaux sur site.

Réseau virtuel (VNET) et sous-réseaux

Un réseau virtuel Azure (VNet) est une représentation de votre propre réseau dans le cloud, offrant une isolation logique au sein de l'environnement Azure dédié à votre abonnement. Les VNets vous permettent de provisionner et de gérer des réseaux privés virtuels (VPN) dans Azure, hébergeant des ressources comme des machines virtuelles (VM), des bases de données et des services d'application. Ils offrent un contrôle total sur les paramètres réseau, y compris les plages d'adresses IP, la création de sous-réseaux, les tables de routage et les passerelles réseau.

Les sous-réseaux sont des subdivisions au sein d'un VNet, définies par des plages d'adresses IP spécifiques. En segmentant un VNet en plusieurs sous-réseaux, vous pouvez organiser et sécuriser les ressources selon votre architecture réseau.
Par défaut, tous les sous-réseaux au sein du même réseau virtuel Azure (VNet) peuvent communiquer entre eux sans aucune restriction.

Exemple :

  • MyVNet avec une plage d'adresses IP de 10.0.0.0/16.
  • Sous-réseau-1 : 10.0.0.0/24 pour les serveurs web.
  • Sous-réseau-2 : 10.0.1.0/24 pour les serveurs de bases de données.

Énumération

Pour lister tous les VNets et sous-réseaux dans un compte Azure, vous pouvez utiliser l'interface de ligne de commande Azure (CLI). Voici les étapes :

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

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

Groupes de sécurité réseau (NSG)

Un Groupe de sécurité réseau (NSG) filtre le trafic réseau à la fois vers et depuis les ressources Azure au sein d'un Réseau Virtuel Azure (VNet). Il contient un ensemble de règles de sécurité qui peuvent indiquer quels ports ouvrir pour le trafic entrant et sortant par port source, IP source, destination de port et il est possible d'assigner une priorité (plus le numéro de priorité est bas, plus la priorité est élevée).

Les NSG peuvent être associés à des sous-réseaux et des NIC.

Exemple de règles :

  • Une règle entrante permettant le trafic HTTP (port 80) de n'importe quelle source vers vos serveurs web.
  • Une règle sortante permettant uniquement le trafic SQL (port 1433) vers une plage d'adresses IP de destination spécifique.

Énumération

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

# 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

# Get NICs and subnets using this NSG
az network nsg show --name MyLowCostVM-nsg --resource-group Resource_Group_1 --query "{subnets: subnets, networkInterfaces: networkInterfaces}"

Azure Firewall

Azure Firewall est un service de sécurité réseau géré dans Azure qui protège les ressources cloud en inspectant et en contrôlant le trafic. C'est un pare-feu stateful qui filtre le trafic en fonction de règles pour les Couches 3 à 7, prenant en charge la communication à la fois au sein d'Azure (trafic est-ouest) et vers/depuis des réseaux externes (trafic nord-sud). Déployé au niveau du réseau virtuel (VNet), il fournit une protection centralisée pour tous les sous-réseaux dans le VNet. Azure Firewall s'adapte automatiquement pour gérer les demandes de trafic et garantit une haute disponibilité sans nécessiter de configuration manuelle.

Il est disponible en trois SKUs—Basic, Standard et Premium, chacun adapté à des besoins spécifiques des clients :

Critères/FonctionnalitéOption 1Option 2Option 3
Cas d'utilisation recommandéPetites/Moyennes Entreprises (PME) avec des besoins limitésUtilisation générale en entreprise, filtrage Couches 3–7Environnements hautement sensibles (par exemple, traitement des paiements)
PerformanceJusqu'à 250 Mbps de débitJusqu'à 30 Gbps de débitJusqu'à 100 Gbps de débit
Renseignement sur les menacesAlertes uniquementAlertes et blocage (IP/domaines malveillants)Alertes et blocage (renseignement sur les menaces avancées)
Filtrage L3–L7Filtrage de baseFiltrage stateful à travers les protocolesFiltrage stateful avec inspection avancée
Protection avancée contre les menacesNon disponibleFiltrage basé sur le renseignement sur les menacesInclut un système de détection et de prévention des intrusions (IDPS)
Inspection TLSNon disponibleNon disponiblePrend en charge la terminaison TLS entrante/sortante
DisponibilitéBackend fixe (2 VMs)AutoscalingAutoscaling
Facilité de gestionContrôles de baseGéré via le Gestionnaire de pare-feuGéré via le Gestionnaire de pare-feu

Enumeration

bash
# 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

Tables de routage Azure

Les Tables de routage Azure sont utilisées pour contrôler le routage du trafic réseau au sein d'un sous-réseau. Elles définissent des règles qui spécifient comment les paquets doivent être transférés, soit vers des ressources Azure, soit vers Internet, soit vers un prochain saut spécifique comme un Appareil Virtuel ou un Pare-feu Azure. Vous pouvez associer une table de routage à un sous-réseau, et toutes les ressources au sein de ce sous-réseau suivront les routes dans la table.

Exemple : Si un sous-réseau héberge des ressources qui doivent acheminer le trafic sortant via un Appareil Virtuel Réseau (NVA) pour inspection, vous pouvez créer une route dans une table de routage pour rediriger tout le trafic (par exemple, 0.0.0.0/0) vers l'adresse IP privée du NVA comme prochain saut.

Énumération

bash
# 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

Azure Private Link est un service dans Azure qui permet un accès privé aux services Azure en garantissant que le trafic entre votre réseau virtuel Azure (VNet) et le service circule entièrement au sein du réseau backbone de Microsoft Azure. Il intègre efficacement le service dans votre VNet. Cette configuration améliore la sécurité en ne rendant pas les données accessibles sur Internet public.

Private Link peut être utilisé avec divers services Azure, comme Azure Storage, Azure SQL Database, et des services personnalisés partagés via Private Link. Il fournit un moyen sécurisé de consommer des services depuis votre propre VNet ou même depuis différentes souscriptions Azure.

caution

Les NSG ne s'appliquent pas aux points de terminaison privés, ce qui signifie clairement qu'associer un NSG à un sous-réseau contenant le Private Link n'aura aucun effet.

Exemple :

Considérez un scénario où vous avez une base de données Azure SQL que vous souhaitez accéder de manière sécurisée depuis votre VNet. Normalement, cela pourrait impliquer de traverser Internet public. Avec Private Link, vous pouvez créer un point de terminaison privé dans votre VNet qui se connecte directement au service Azure SQL Database. Ce point de terminaison fait apparaître la base de données comme si elle faisait partie de votre propre VNet, accessible via une adresse IP privée, garantissant ainsi un accès sécurisé et privé.

Enumeration

bash
# List Private Link Services
az 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

Points de terminaison de service Azure

Les points de terminaison de service Azure étendent l'espace d'adresses privées de votre réseau virtuel et l'identité de votre VNet aux services Azure via une connexion directe. En activant les points de terminaison de service, les ressources de votre VNet peuvent se connecter en toute sécurité aux services Azure, comme Azure Storage et Azure SQL Database, en utilisant le réseau backbone d'Azure. Cela garantit que le trafic du VNet vers le service Azure reste au sein du réseau Azure, offrant un chemin plus sécurisé et fiable.

Exemple :

Par exemple, un compte Azure Storage est par défaut accessible via Internet public. En activant un point de terminaison de service pour Azure Storage au sein de votre VNet, vous pouvez vous assurer que seul le trafic de votre VNet peut accéder au compte de stockage. Le pare-feu du compte de stockage peut alors être configuré pour accepter le trafic uniquement de votre VNet.

Énumération

bash
# 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

Différences entre les points de terminaison de service et les liens privés

Microsoft recommande d'utiliser les Liens Privés dans les docs:

Points de terminaison de service :

  • Le trafic de votre VNet vers le service Azure circule sur le réseau backbone de Microsoft Azure, contournant l'internet public.
  • Le point de terminaison est une connexion directe au service Azure et ne fournit pas d'IP privée pour le service au sein du VNet.
  • Le service lui-même est toujours accessible via son point de terminaison public depuis l'extérieur de votre VNet, sauf si vous configurez le pare-feu du service pour bloquer ce type de trafic.
  • C'est une relation un à un entre le sous-réseau et le service Azure.
  • Moins coûteux que les Liens Privés.

Liens Privés :

  • Le Lien Privé mappe les services Azure dans votre VNet via un point de terminaison privé, qui est une interface réseau avec une adresse IP privée au sein de votre VNet.
  • Le service Azure est accessible en utilisant cette adresse IP privée, donnant l'impression qu'il fait partie de votre réseau.
  • Les services connectés via le Lien Privé ne peuvent être accessibles que depuis votre VNet ou des réseaux connectés ; il n'y a pas d'accès à internet public au service.
  • Il permet une connexion sécurisée aux services Azure ou à vos propres services hébergés dans Azure, ainsi qu'une connexion aux services partagés par d'autres.
  • Il fournit un contrôle d'accès plus granulaire via un point de terminaison privé dans votre VNet, par opposition à un contrôle d'accès plus large au niveau du sous-réseau avec des points de terminaison de service.

En résumé, bien que les Points de Terminaison de Service et les Liens Privés offrent une connectivité sécurisée aux services Azure, les Liens Privés offrent un niveau d'isolation et de sécurité supérieur en garantissant que les services sont accessibles de manière privée sans les exposer à l'internet public. Les Points de Terminaison de Service, en revanche, sont plus faciles à configurer pour des cas généraux où un accès simple et sécurisé aux services Azure est requis sans avoir besoin d'une IP privée dans le VNet.

Azure Front Door (AFD) & AFD WAF

Azure Front Door est un point d'entrée évolutif et sécurisé pour une livraison rapide de vos applications web mondiales. Il combine divers services tels que l'équilibrage de charge mondial, l'accélération de site, le déchargement SSL et les capacités de pare-feu d'application web (WAF) en un seul service. Azure Front Door fournit un routage intelligent basé sur la localisation de bord la plus proche de l'utilisateur, garantissant des performances et une fiabilité optimales. De plus, il offre un routage basé sur l'URL, l'hébergement de plusieurs sites, l'affinité de session et la sécurité au niveau de l'application.

Azure Front Door WAF est conçu pour protéger les applications web contre les attaques basées sur le web sans modification du code de back-end. Il inclut des règles personnalisées et des ensembles de règles gérées pour se protéger contre des menaces telles que l'injection SQL, le cross-site scripting et d'autres attaques courantes.

Exemple :

Imaginez que vous avez une application distribuée mondialement avec des utilisateurs partout dans le monde. Vous pouvez utiliser Azure Front Door pour diriger les demandes des utilisateurs vers le centre de données régional le plus proche hébergeant votre application, réduisant ainsi la latence, améliorant l'expérience utilisateur et la protégeant contre les attaques web avec les capacités WAF. Si une région particulière subit une panne, Azure Front Door peut automatiquement rediriger le trafic vers le meilleur emplacement suivant, garantissant une haute disponibilité.

Énumération

bash
# 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 et Azure Application Gateway WAF

Azure Application Gateway est un équilibreur de charge de trafic web qui vous permet de gérer le trafic vers vos applications web. Il offre des capacités d'équilibrage de charge de couche 7, de terminaison SSL et de pare-feu d'application web (WAF) dans le contrôleur de livraison d'application (ADC) en tant que service. Les fonctionnalités clés incluent le routage basé sur l'URL, l'affinité de session basée sur les cookies et le déchargement de la couche de sockets sécurisés (SSL), qui sont cruciaux pour les applications nécessitant des capacités d'équilibrage de charge complexes telles que le routage global et le routage basé sur le chemin.

Exemple :

Considérez un scénario où vous avez un site web de commerce électronique qui comprend plusieurs sous-domaines pour différentes fonctions, telles que les comptes utilisateurs et le traitement des paiements. Azure Application Gateway peut router le trafic vers les serveurs web appropriés en fonction du chemin URL. Par exemple, le trafic vers example.com/accounts pourrait être dirigé vers le service des comptes utilisateurs, et le trafic vers example.com/pay pourrait être dirigé vers le service de traitement des paiements.
Et protégez votre site web contre les attaques en utilisant les capacités WAF.

Énumération

bash
# 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

Le Peering VNet est une fonctionnalité de mise en réseau dans Azure qui permet à différents Réseaux Virtuels (VNets) d'être connectés directement et sans couture. Grâce au peering VNet, les ressources dans un VNet peuvent communiquer avec des ressources dans un autre VNet en utilisant des adresses IP privées, comme si elles étaient dans le même réseau.
Le Peering VNet peut également être utilisé avec des réseaux sur site en configurant un VPN site à site ou Azure ExpressRoute.

Azure Hub et Spoke est une topologie réseau utilisée dans Azure pour gérer et organiser le trafic réseau. Le "hub" est un point central qui contrôle et dirige le trafic entre différents "spokes". Le hub contient généralement des services partagés tels que des appliances virtuelles réseau (NVA), Azure VPN Gateway, Azure Firewall ou Azure Bastion. Les "spokes" sont des VNets qui hébergent des charges de travail et se connectent au hub via le peering VNet, leur permettant de tirer parti des services partagés au sein du hub. Ce modèle favorise une disposition réseau claire, réduisant la complexité en centralisant les services communs que plusieurs charges de travail à travers différents VNets peuvent utiliser.

[!CAUTION] > Le peering VNET n'est pas transitif dans Azure, ce qui signifie que si le spoke 1 est connecté au spoke 2 et que le spoke 2 est connecté au spoke 3, alors le spoke 1 ne peut pas communiquer directement avec le spoke 3.

Exemple :

Imaginez une entreprise avec des départements séparés comme Ventes, RH et Développement, chacun avec son propre VNet (les spokes). Ces VNets ont besoin d'accéder à des ressources partagées comme une base de données centrale, un pare-feu et une passerelle Internet, qui se trouvent tous dans un autre VNet (le hub). En utilisant le modèle Hub et Spoke, chaque département peut se connecter en toute sécurité aux ressources partagées via le VNet hub sans exposer ces ressources à Internet public ou créer une structure réseau complexe avec de nombreuses connexions.

Énumération

bash
# 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

VPN Site-à-Site

Un VPN Site-à-Site dans Azure vous permet de connecter votre réseau local à votre réseau virtuel Azure (VNet), permettant aux ressources telles que les VM dans Azure d'apparaître comme si elles étaient sur votre réseau local. Cette connexion est établie via une passerelle VPN qui chiffre le trafic entre les deux réseaux.

Exemple :

Une entreprise dont le bureau principal est situé à New York dispose d'un centre de données sur site qui doit se connecter de manière sécurisée à son VNet dans Azure, qui héberge ses charges de travail virtualisées. En configurant un VPN Site-à-Site, l'entreprise peut garantir une connectivité chiffrée entre les serveurs sur site et les VM Azure, permettant un accès sécurisé aux ressources à travers les deux environnements comme si elles étaient sur le même réseau local.

Énumération

bash
# 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 est un service qui fournit une connexion privée, dédiée et à haute vitesse entre votre infrastructure sur site et les centres de données Azure. Cette connexion est établie par l'intermédiaire d'un fournisseur de connectivité, contournant l'internet public et offrant plus de fiabilité, des vitesses plus rapides, des latences plus faibles et une sécurité accrue par rapport aux connexions internet typiques.

Exemple :

Une multinationale nécessite une connexion cohérente et fiable à ses services Azure en raison du volume élevé de données et du besoin d'un débit élevé. L'entreprise opte pour Azure ExpressRoute afin de connecter directement son centre de données sur site à Azure, facilitant les transferts de données à grande échelle, tels que les sauvegardes quotidiennes et l'analyse de données en temps réel, avec une confidentialité et une vitesse améliorées.

Énumération

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

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks