Az - Azure Network

Reading time: 19 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Informazioni di Base

Azure fornisce reti virtuali (VNet) che consentono agli utenti di creare reti isolate all'interno del cloud Azure. All'interno di queste VNet, risorse come macchine virtuali, applicazioni, database... possono essere ospitate e gestite in modo sicuro. Il networking in Azure supporta sia la comunicazione all'interno del cloud (tra i servizi Azure) sia la connessione a reti esterne e a Internet.
Inoltre, è possibile collegare le VNet con altre VNet e con reti on-premise.

Rete Virtuale (VNET) e Sottoreti

Una Rete Virtuale di Azure (VNet) è una rappresentazione della tua rete nel cloud, che fornisce isolamento logico all'interno dell'ambiente Azure dedicato alla tua sottoscrizione. Le VNet ti consentono di fornire e gestire reti private virtuali (VPN) in Azure, ospitando risorse come Macchine Virtuali (VM), database e servizi applicativi. Offrono pieno controllo sulle impostazioni di rete, inclusi intervalli di indirizzi IP, creazione di sottoreti, tabelle di routing e gateway di rete.

Le sottoreti sono suddivisioni all'interno di una VNet, definite da specifici intervalli di indirizzi IP. Segmentando una VNet in più sottoreti, puoi organizzare e proteggere le risorse in base alla tua architettura di rete.
Per impostazione predefinita, tutte le sottoreti all'interno della stessa Rete Virtuale di Azure (VNet) possono comunicare tra loro senza alcuna restrizione.

Esempio:

  • MyVNet con un intervallo di indirizzi IP di 10.0.0.0/16.
  • Sottorete-1: 10.0.0.0/24 per server web.
  • Sottorete-2: 10.0.1.0/24 per server di database.

Enumerazione

Per elencare tutte le VNet e le sottoreti in un account Azure, puoi utilizzare l'Interfaccia della Riga di Comando di Azure (CLI). Ecco i passaggi:

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

Gruppi di Sicurezza di Rete (NSG)

Un Gruppo di Sicurezza di Rete (NSG) filtra il traffico di rete sia verso che da risorse Azure all'interno di una Rete Virtuale Azure (VNet). Contiene un insieme di regole di sicurezza che possono indicare quali porte aprire per il traffico in entrata e in uscita in base alla porta sorgente, all'IP sorgente, alla porta di destinazione ed è possibile assegnare una priorità (più basso è il numero di priorità, maggiore è la priorità).

Gli NSG possono essere associati a sottoreti e NIC.

Esempio di regole:

  • Una regola in entrata che consente il traffico HTTP (porta 80) da qualsiasi sorgente ai tuoi server web.
  • Una regola in uscita che consente solo il traffico SQL (porta 1433) a un intervallo di indirizzi IP di destinazione specifico.

Enumerazione

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 è un servizio di sicurezza di rete gestito in Azure che protegge le risorse cloud ispezionando e controllando il traffico. È un firewall stateful che filtra il traffico in base a regole per i Livelli 3-7, supportando la comunicazione sia all'interno di Azure (traffico est-ovest) che verso/da reti esterne (traffico nord-sud). Distribuito a livello di Virtual Network (VNet), fornisce protezione centralizzata per tutte le subnet nella VNet. Azure Firewall si scala automaticamente per gestire le richieste di traffico e garantisce alta disponibilità senza richiedere configurazioni manuali.

È disponibile in tre SKU—Basic, Standard e Premium, ciascuno adattato a specifiche esigenze dei clienti:

Criteri/CaratteristicheOpzione 1Opzione 2Opzione 3
Caso d'uso raccomandatoPiccole/Medie Imprese (PMI) con esigenze limitateUso aziendale generale, filtraggio Livello 3–7Ambienti altamente sensibili (es. elaborazione pagamenti)
PrestazioniFino a 250 Mbps di throughputFino a 30 Gbps di throughputFino a 100 Gbps di throughput
Intelligence sulle minacceSolo avvisiAvvisi e blocco (IP/domini malevoli)Avvisi e blocco (intelligence sulle minacce avanzate)
Filtraggio L3–L7Filtraggio di baseFiltraggio stateful tra protocolliFiltraggio stateful con ispezione avanzata
Protezione avanzata dalle minacceNon disponibileFiltraggio basato su intelligence delle minacceInclude il Sistema di Rilevamento e Prevenzione delle Intrusioni (IDPS)
Ispezione TLSNon disponibileNon disponibileSupporta la terminazione TLS in entrata/uscita
DisponibilitàBackend fisso (2 VM)AutoscalingAutoscaling
Facilità di gestioneControlli di baseGestito tramite Firewall ManagerGestito tramite Firewall Manager

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

Tabelle di Routing di Azure

Le Tabelle di Routing di Azure vengono utilizzate per controllare il routing del traffico di rete all'interno di una subnet. Definiscono regole che specificano come i pacchetti devono essere inoltrati, sia verso le risorse di Azure, verso Internet, o a un prossimo salto specifico come un Virtual Appliance o Azure Firewall. Puoi associare una tabella di routing a una subnet, e tutte le risorse all'interno di quella subnet seguiranno i percorsi nella tabella.

Esempio: Se una subnet ospita risorse che devono instradare il traffico in uscita attraverso un Network Virtual Appliance (NVA) per l'ispezione, puoi creare un percorso in una tabella di routing per reindirizzare tutto il traffico (ad es., 0.0.0.0/0) all'indirizzo IP privato dell'NVA come prossimo salto.

Enumerazione

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 è un servizio in Azure che abilita l'accesso privato ai servizi Azure garantendo che il traffico tra la tua rete virtuale Azure (VNet) e il servizio viaggi interamente all'interno della rete backbone di Microsoft Azure. Porta effettivamente il servizio nella tua VNet. Questa configurazione migliora la sicurezza non esponendo i dati a Internet pubblico.

Private Link può essere utilizzato con vari servizi Azure, come Azure Storage, Azure SQL Database e servizi personalizzati condivisi tramite Private Link. Fornisce un modo sicuro per consumare servizi all'interno della propria VNet o anche da diverse sottoscrizioni Azure.

caution

Gli NSG non si applicano agli endpoint privati, il che significa chiaramente che associare un NSG a una subnet che contiene il Private Link non avrà alcun effetto.

Esempio:

Considera uno scenario in cui hai un Azure SQL Database che desideri accedere in modo sicuro dalla tua VNet. Normalmente, questo potrebbe comportare il passaggio attraverso Internet pubblico. Con Private Link, puoi creare un endpoint privato nella tua VNet che si collega direttamente al servizio Azure SQL Database. Questo endpoint fa apparire il database come se fosse parte della tua VNet, accessibile tramite un indirizzo IP privato, garantendo così un accesso sicuro e privato.

Enumerazione

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

Endpoint dei Servizi Azure

Gli Endpoint dei Servizi Azure estendono lo spazio degli indirizzi privati della tua rete virtuale e l'identità della tua VNet ai servizi Azure tramite una connessione diretta. Abilitando gli endpoint dei servizi, le risorse nella tua VNet possono connettersi in modo sicuro ai servizi Azure, come Azure Storage e Azure SQL Database, utilizzando la rete backbone di Azure. Questo garantisce che il traffico dalla VNet al servizio Azure rimanga all'interno della rete Azure, fornendo un percorso più sicuro e affidabile.

Esempio:

Ad esempio, un account Azure Storage è accessibile per impostazione predefinita tramite internet pubblico. Abilitando un endpoint di servizio per Azure Storage all'interno della tua VNet, puoi garantire che solo il traffico dalla tua VNet possa accedere all'account di archiviazione. Il firewall dell'account di archiviazione può quindi essere configurato per accettare traffico solo dalla tua VNet.

Enumerazione

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

Microsoft raccomanda di utilizzare i Private Links nella docs:

Service Endpoints:

  • Il traffico dalla tua VNet al servizio Azure viaggia attraverso la rete backbone di Microsoft Azure, bypassando Internet pubblico.
  • L'endpoint è una connessione diretta al servizio Azure e non fornisce un IP privato per il servizio all'interno della VNet.
  • Il servizio stesso è ancora accessibile tramite il suo endpoint pubblico dall'esterno della tua VNet, a meno che tu non configuri il firewall del servizio per bloccare tale traffico.
  • È una relazione uno a uno tra la subnet e il servizio Azure.
  • Meno costoso dei Private Links.

Private Links:

  • Il Private Link mappa i servizi Azure nella tua VNet tramite un endpoint privato, che è un'interfaccia di rete con un indirizzo IP privato all'interno della tua VNet.
  • Il servizio Azure è accessibile utilizzando questo indirizzo IP privato, facendolo apparire come se fosse parte della tua rete.
  • I servizi connessi tramite Private Link possono essere accessibili solo dalla tua VNet o dalle reti connesse; non c'è accesso a Internet pubblico al servizio.
  • Consente una connessione sicura ai servizi Azure o ai tuoi servizi ospitati in Azure, così come una connessione a servizi condivisi da altri.
  • Fornisce un controllo degli accessi più granulare tramite un endpoint privato nella tua VNet, rispetto a un controllo degli accessi più ampio a livello di subnet con gli service endpoints.

In sintesi, mentre sia i Service Endpoints che i Private Links forniscono connettività sicura ai servizi Azure, i Private Links offrono un livello superiore di isolamento e sicurezza garantendo che i servizi siano accessibili privatamente senza esporli a Internet pubblico. Gli Service Endpoints, d'altra parte, sono più facili da configurare per casi generali in cui è richiesto un accesso semplice e sicuro ai servizi Azure senza la necessità di un IP privato nella VNet.

Azure Front Door (AFD) & AFD WAF

Azure Front Door è un punto di accesso scalabile e sicuro per la veloce consegna delle tue applicazioni web globali. Combina vari servizi come bilanciamento del carico globale, accelerazione del sito, offloading SSL e capacità di Web Application Firewall (WAF) in un unico servizio. Azure Front Door fornisce instradamento intelligente basato sulla posizione edge più vicina all'utente, garantendo prestazioni e affidabilità ottimali. Inoltre, offre instradamento basato su URL, hosting di più siti, affinità di sessione e sicurezza a livello di applicazione.

Azure Front Door WAF è progettato per proteggere le applicazioni web dagli attacchi basati sul web senza modifiche al codice di backend. Include regole personalizzate e set di regole gestite per proteggere contro minacce come SQL injection, cross-site scripting e altri attacchi comuni.

Esempio:

Immagina di avere un'applicazione distribuita a livello globale con utenti in tutto il mondo. Puoi utilizzare Azure Front Door per instradare le richieste degli utenti al centro dati regionale più vicino che ospita la tua applicazione, riducendo così la latenza, migliorando l'esperienza dell'utente e difendendola dagli attacchi web con le capacità WAF. Se una particolare regione subisce un'interruzione, Azure Front Door può automaticamente reindirizzare il traffico alla posizione successiva migliore, garantendo alta disponibilità.

Enumerazione

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 e Azure Application Gateway WAF

Azure Application Gateway è un bilanciatore di carico per il traffico web che ti consente di gestire il traffico verso le tue applicazioni web. Offre bilanciamento del carico a livello 7, terminazione SSL e capacità di firewall per applicazioni web (WAF) nel Controller di Distribuzione delle Applicazioni (ADC) come servizio. Le caratteristiche principali includono il routing basato su URL, l'affinità delle sessioni basata su cookie e il caricamento del layer di socket sicuri (SSL), che sono cruciali per le applicazioni che richiedono capacità di bilanciamento del carico complesse come il routing globale e il routing basato su percorso.

Esempio:

Considera uno scenario in cui hai un sito web di e-commerce che include più sottodomini per diverse funzioni, come account utente e elaborazione dei pagamenti. Azure Application Gateway può instradare il traffico ai server web appropriati in base al percorso URL. Ad esempio, il traffico verso example.com/accounts potrebbe essere diretto al servizio account utente, e il traffico verso example.com/pay potrebbe essere diretto al servizio di elaborazione dei pagamenti.
E proteggi il tuo sito web dagli attacchi utilizzando le capacità WAF.

Enumerazione

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 e VNet Peering

VNet Peering è una funzionalità di rete in Azure che consente a diverse Reti Virtuali (VNets) di essere collegate direttamente e senza soluzione di continuità. Attraverso il VNet peering, le risorse in una VNet possono comunicare con le risorse in un'altra VNet utilizzando indirizzi IP privati, come se fossero nella stessa rete.
Il VNet Peering può essere utilizzato anche con reti on-prem configurando una VPN site-to-site o Azure ExpressRoute.

Azure Hub e Spoke è una topologia di rete utilizzata in Azure per gestire e organizzare il traffico di rete. L'"hub" è un punto centrale che controlla e instrada il traffico tra i diversi "spoke". L'hub contiene tipicamente servizi condivisi come appliance virtuali di rete (NVA), Azure VPN Gateway, Azure Firewall o Azure Bastion. Gli "spoke" sono VNets che ospitano carichi di lavoro e si connettono all'hub utilizzando il VNet peering, consentendo loro di sfruttare i servizi condivisi all'interno dell'hub. Questo modello promuove un layout di rete pulito, riducendo la complessità centralizzando i servizi comuni che più carichi di lavoro su diverse VNets possono utilizzare.

[!CAUTION] > Il VNET peering non è transitivo in Azure, il che significa che se lo spoke 1 è connesso allo spoke 2 e lo spoke 2 è connesso allo spoke 3, allora lo spoke 1 non può comunicare direttamente con lo spoke 3.

Esempio:

Immagina un'azienda con dipartimenti separati come Vendite, Risorse Umane e Sviluppo, ognuno con la propria VNet (gli spoke). Queste VNet richiedono accesso a risorse condivise come un database centrale, un firewall e un gateway internet, che si trovano tutti in un'altra VNet (l'hub). Utilizzando il modello Hub e Spoke, ogni dipartimento può connettersi in modo sicuro alle risorse condivise attraverso l'hub VNet senza esporre quelle risorse a Internet pubblico o creare una struttura di rete complessa con numerose connessioni.

Enumerazione

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-to-Site

Una VPN Site-to-Site in Azure consente di collegare la tua rete locale alla tua Rete Virtuale (VNet) di Azure, facendo apparire risorse come le VM all'interno di Azure come se fossero sulla tua rete locale. Questa connessione viene stabilita tramite un gateway VPN che cripta il traffico tra le due reti.

Esempio:

Un'azienda con la sua sede principale a New York ha un data center on-premises che deve connettersi in modo sicuro alla sua VNet in Azure, che ospita i suoi carichi di lavoro virtualizzati. Configurando una VPN Site-to-Site, l'azienda può garantire una connettività criptata tra i server on-premises e le VM di Azure, consentendo l'accesso sicuro alle risorse in entrambi gli ambienti come se fossero nella stessa rete locale.

Enumerazione

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 è un servizio che fornisce una connessione privata, dedicata e ad alta velocità tra la tua infrastruttura on-premises e i data center di Azure. Questa connessione avviene tramite un fornitore di connettività, bypassando Internet pubblico e offrendo maggiore affidabilità, velocità più elevate, latenze inferiori e maggiore sicurezza rispetto alle connessioni Internet tipiche.

Esempio:

Una multinazionale richiede una connessione coerente e affidabile ai suoi servizi Azure a causa dell'alto volume di dati e della necessità di un elevato throughput. L'azienda sceglie Azure ExpressRoute per collegare direttamente il proprio data center on-premises ad Azure, facilitando trasferimenti di dati su larga scala, come backup giornalieri e analisi dei dati in tempo reale, con maggiore privacy e velocità.

Enumerazione

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

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks