Esempio 3: Creare una rete perimetrale per proteggere le reti con un firewall, routing definito dall'utente e un gruppo di sicurezza di reteExample 3 – Build a DMZ to Protect Networks with a Firewall, UDR, and NSG

Tornare alla pagina relativa alle procedure consigliate sui limiti di sicurezzaReturn to the Security Boundary Best Practices Page

Questo esempio illustra come creare una rete perimetrale con un firewall, quattro server Windows, routing definito dall'utente, inoltro IP e gruppi di sicurezza di rete.This example will create a DMZ with a firewall, four windows servers, User Defined Routing, IP Forwarding, and Network Security Groups. Illustra in dettaglio anche ogni comando rilevante per favorire una comprensione più approfondita di ogni passaggio.It will also walk through each of the relevant commands to provide a deeper understanding of each step. È disponibile anche una sezione sugli scenari di traffico con istruzioni dettagliate sul percorso seguito dal traffico attraverso i livelli di difesa della rete perimetrale.There is also a Traffic Scenario section to provide an in-depth step-by-step how traffic proceeds through the layers of defense in the DMZ. La sezione Riferimenti, infine, include tutto il codice e istruzioni complete per creare l'ambiente per testare e sperimentare vari scenari.Finally, in the references section is the complete code and instruction to build this environment to test and experiment with various scenarios.

Rete perimetrale bidirezionale con appliance virtuale di rete, gruppo di sicurezza di rete e routing definito dall'utenteBi-directional DMZ with NVA, NSG, and UDR

Configurazione dell'ambienteEnvironment Setup

In questo esempio è presente una sottoscrizione che include gli elementi seguenti:In this example there is a subscription that contains the following:

  • Tre servizi cloud, "SecSvc001", "FrontEnd001" e "BackEnd001".Three cloud services: “SecSvc001”, “FrontEnd001”, and “BackEnd001”
  • Una rete virtuale, "CorpNetwork", con tre subnet: "SecNet", "FrontEnd" e "BackEnd"A Virtual Network “CorpNetwork”, with three subnets: “SecNet”, “FrontEnd”, and “BackEnd”
  • Un dispositivo virtuale di rete, in questo esempio un firewall, connesso alla subnet SecNet.A network virtual appliance, in this example a firewall, connected to the SecNet subnet
  • Un server Windows che rappresenta un server Web applicazioni ("IIS01").A Windows Server that represents an application web server (“IIS01”)
  • Due server Windows che rappresentano server back-end applicazioni ("AppVM01", "AppVM02")Two windows servers that represent application back end servers (“AppVM01”, “AppVM02”)
  • Un server Windows che rappresenta un server DNS ("DNS01")A Windows server that represents a DNS server (“DNS01”)

Nella sezione Riferimenti alla fine dell'articolo è disponibile uno script di PowerShell per creare la maggior parte dell'ambiente descritto sopra.In the references section below there is a PowerShell script that will build most of the environment described above. La creazione di macchine virtuali e reti virtuali, anche se eseguita dallo script di esempio, non è descritta in dettaglio in questo documento.Building the VMs and Virtual Networks, although are done by the example script, are not described in detail in this document.

Per creare l'ambiente, eseguire queste operazioni:To build the environment:

  1. Salvare il file XML di configurazione di rete incluso nella sezione Riferimenti, aggiornandolo con i nomi, il percorso e gli indirizzi IP corrispondenti allo scenario specifico.Save the network config xml file included in the references section (updated with names, location, and IP addresses to match the given scenario)
  2. Aggiornare le variabili utente incluse nello script in modo che corrispondano all'ambiente in cui lo script verrà eseguito, ad esempio sottoscrizioni, nomi dei servizi e così via.Update the user variables in the script to match the environment the script is to be run against (subscriptions, service names, etc)
  3. Eseguire lo script in PowerShell.Execute the script in PowerShell

Nota: l'area indicata nello script di PowerShell deve corrispondere all'area indicata nel file XML di configurazione di rete.Note: The region signified in the PowerShell script must match the region signified in the network configuration xml file.

Dopo l'esecuzione corretta dello script, si potranno eseguire i passaggi successivi allo script seguenti:Once the script runs successfully the following post-script steps may be taken:

  1. Configurare le regole del firewall illustrate nella sezione seguente intitolata Descrizione delle regole del firewall.Set up the firewall rules, this is covered in the section below titled: Firewall Rule Description.
  2. Facoltativamente, nella sezione Riferimenti sono disponibili due script per configurare il server Web e il server applicazioni per consentire l'esecuzione dei test con questa configurazione della rete perimetrale.Optionally in the references section are two scripts to set up the web server and app server with a simple web application to allow testing with this DMZ configuration.

Dopo l'esecuzione corretta dello script, sarà necessario completare le regole del firewall come descritto nella sezione intitolata Regole del firewall.Once the script runs successfully the firewall rules will need to be completed, this is covered in the section titled: Firewall Rules.

Routing definito dall'utenteUser Defined Routing (UDR)

Per impostazione predefinita, le route di sistema seguenti sono definite in questo modo:By default, the following system routes are defined as:

    Effective routes : 
     Address Prefix    Next hop type    Next hop IP address Status   Source     
     --------------    -------------    ------------------- ------   ------     
     {10.0.0.0/16}     VNETLocal                            Active   Default    
     {0.0.0.0/0}       Internet                             Active   Default    
     {10.0.0.0/8}      Null                                 Active   Default    
     {100.64.0.0/10}   Null                                 Active   Default    
     {172.16.0.0/12}   Null                                 Active   Default    
     {192.168.0.0/16}  Null                                 Active   Default

VNETLocal corrisponde sempre al prefisso o ai prefissi dell'indirizzo definito della rete virtuale per la rete specifica, ovvero cambierà da rete virtuale a rete virtuale in base alla modalità di definizione di ogni rete virtuale specifica.The VNETLocal is always the defined address prefix(es) of the VNet for that specific network (ie it will change from VNet to VNet depending on how each specific VNet is defined). Le route di sistema rimanenti sono statiche e usano i valori predefiniti illustrati in precedenza.The remaining system routes are static and default as above.

Per quanto riguarda la priorità, le route vengono elaborate tramite il metodo Longest Prefix Match (LPM), secondo il quale la route più specifica inclusa nella tabella viene applicata a un determinato indirizzo di destinazione.As for priority, routes are processed via the Longest Prefix Match (LPM) method, thus the most specific route in the table would apply to a given destination address.

Di conseguenza, il traffico, ad esempio verso il server DNS01, 10.0.2.4, destinato alla rete locale (10.0.0.0/16) verrà instradato tramite la rete virtuale alla relativa destinazione, cioè la route 10.0.0.0/16.Therefore, traffic (for example to the DNS01 server, 10.0.2.4) intended for the local network (10.0.0.0/16) would be routed across the VNet to its destination due to the 10.0.0.0/16 route. In altre parole, per 10.0.2.4 la route 10.0.0.0/16 è quella più specifica, anche se sarebbero applicabili sia la 10.0.0.0/8 che la 0.0.0.0/0, ma essendo meno specifiche non interessano questo traffico.In other words, for 10.0.2.4, the 10.0.0.0/16 route is the most specific route, even though the 10.0.0.0/8 and 0.0.0.0/0 also could apply, but since they are less specific they don’t affect this traffic. In questo modo, il traffico per 10.0.2.4 avrà un hop successivo verso al rete virtuale locale e sarà semplicemente inoltrato alla destinazione.Thus the traffic to 10.0.2.4 would have a next hop of the local VNet and simply route to the destination.

Se il traffico fosse ad esempio destinato a 10.1.1.1, la route 10.0.0.0/16 non sarebbe applicabile, mentre la 10.0.0.0/8 sarebbe la più specifica e in questo caso il traffico verrebbe eliminato, una condizione cosiddetta "black hole", perché l'hop successivo è Null.If traffic was intended for 10.1.1.1 for example, the 10.0.0.0/16 route wouldn’t apply, but the 10.0.0.0/8 would be the most specific, and this the traffic would be dropped (“black holed”) since the next hop is Null.

Se la destinazione non fosse applicabile ad alcun prefisso Null o ai prefissi VNETLocal, il traffico seguirebbe la route meno specifica, 0.0.0.0/0, e verrebbe instradato su Internet come hop successivo, quindi al di fuori del perimetro Internet di Azure.If the destination didn’t apply to any of the Null prefixes or the VNETLocal prefixes, then it would follow the least specific route, 0.0.0.0/0 and be routed out to the Internet as the next hop and thus out Azure’s internet edge.

Se nella tabella di route sono presenti due prefissi identici, di seguito è riportato l'ordine di precedenza basato sull'attributo "source" delle route:If there are two identical prefixes in the route table, the following is the order of preference based on the routes “source” attribute:

  1. "VirtualAppliance" = route definita dall'utente aggiunta manualmente alla tabella"VirtualAppliance" = A User Defined Route manually added to the table
  2. "VPNGateway" = route dinamica, o BGP quando viene usata con reti ibride, aggiunta da un protocollo di rete dinamico. Queste route possono cambiare con il tempo, perché il protocollo dinamico riflette automaticamente le modifiche nella rete con peering.“VPNGateway” = A Dynamic Route (BGP when used with hybrid networks), added by a dynamic network protocol, these routes may change over time as the dynamic protocol automatically reflects changes in peered network
  3. "Default" = route di sistema. La rete virtuale locale e le voci statiche sono quelle visualizzate nella tabella di route precedente.“Default” = The System Routes, the local VNet and the static entries as shown in the route table above.

Nota

È ora possibile usare il routing definito dall'utente con ExpressRoute e i gateway VPN per forzare l'instradamento del traffico tra sedi in entrata e in uscita a un'appliance virtuale di rete (NVA).You can now use User Defined Routing (UDR) with ExpressRoute and VPN Gateways to force outbound and inbound cross-premises traffic to be routed to a network virtual appliance (NVA).

Creazione di route localiCreating the local routes

In questo esempio sono necessarie due tabelle di routing, una per la subnet front-end e una per la subnet back-end.In this example, two routing tables are needed, one each for the Frontend and Backend subnets. In ogni tabella vengono caricate le route statiche appropriate per la subnet specifica.Each table is loaded with static routes appropriate for the given subnet. Ai fini di questo esempio, ogni tabella include tre route:For the purpose of this example, each table has three routes:

  1. Traffico della subnet locale senza la definizione di un hop successivo per consentire al traffico della subnet locale di ignorare il firewall.Local subnet traffic with no Next Hop defined to allow local subnet traffic to bypass the firewall
  2. Traffico della rete virtuale con la definizione di un hop successivo come firewall, in modo da eseguire l'override della regola predefinita che consente l'indirizzamento diretto del traffico della rete virtuale locale.Virtual Network traffic with a Next Hop defined as firewall, this overrides the default rule that allows local VNet traffic to route directly
  3. Tutto il traffico rimanente (0/0) con un hop successivo definito come firewall.All remaining traffic (0/0) with a Next Hop defined as the firewall

Dopo la creazione, le tabelle di routing vengono associate alle rispettive subnet.Once the routing tables are created they are bound to their subnets. Dopo la creazione e l'associazione alla subnet, la tabella di routing della subnet front-end avrà un aspetto analogo al seguente:For the Frontend subnet routing table, once created and bound to the subnet should look like this:

    Effective routes : 
     Address Prefix    Next hop type    Next hop IP address Status   Source     
     --------------    -------------    ------------------- ------   ------     
     {10.0.1.0/24}     VNETLocal                            Active 
     {10.0.0.0/16}     VirtualAppliance 10.0.0.4            Active    
     {0.0.0.0/0}       VirtualAppliance 10.0.0.4            Active

Per questo esempio si usano i comandi seguenti per compilare la tabella di route, aggiungere una route definita dall'utente e quindi associare la tabella di route a una subnet. Si noti che tutte le voci seguenti che iniziano con un segno di dollaro, ad esempio $BESubnet, sono variabili definite dall'utente dallo script disponibile nella sezione Riferimenti di questo documento:For this example, the following commands are used to build the route table, add a user defined route, and then bind the route table to a subnet (Note; any items below beginning with a dollar sign (e.g.: $BESubnet) are user defined variables from the script in the reference section of this document):

  1. Prima di tutto è necessario creare la tabella di routing di base.First the base routing table must be created. Questo frammento di codice mostra la creazione della tabella per la subnet back-end.This snippet shows the creation of the table for the Backend subnet. Nello script viene creata anche una tabella corrispondente per la subnet front-end.In the script, a corresponding table is also created for the Frontend subnet.

    New-AzureRouteTable -Name $BERouteTableName `New-AzureRouteTable -Name $BERouteTableName `

      -Location $DeploymentLocation `
      -Label "Route table for $BESubnet subnet"
    
  2. Una volta creata la tabella di route, si possono aggiungere route definite dall'utente specifiche.Once the route table is created, specific user defined routes can be added. In questo frammento di codice, tutto il traffico (0.0.0.0/0) verrà instradato tramite il dispositivo virtuale. Per passare l'indirizzo IP assegnato quando è stato creato il dispositivo virtuale nella parte precedente dello script, viene usata una variabile, $VMIP[0].In this snipped, all traffic (0.0.0.0/0) will be routed through the virtual appliance (a variable, $VMIP[0], is used to pass in the IP address assigned when the virtual appliance was created earlier in the script). Nello script viene anche creata una regola corrispondente nella tabella front-end.In the script, a corresponding rule is also created in the Frontend table.

    Get-AzureRouteTable $BERouteTableName | `Get-AzureRouteTable $BERouteTableName | `

      Set-AzureRoute -RouteName "All traffic to FW" -AddressPrefix 0.0.0.0/0 `
      -NextHopType VirtualAppliance `
      -NextHopIpAddress $VMIP[0]
    
  3. La voce della route precedente sovrascrive la route predefinita "0.0.0.0/0", ma esiste ancora la regola predefinita per 10.0.0.0/16 che consente il routing del traffico della rete virtuale direttamente alla destinazione e non al dispositivo virtuale di rete.The above route entry will override the default "0.0.0.0/0" route, but the default 10.0.0.0/16 rule still existing which would allow traffic within the VNet to route directly to the destination and not to the Network Virtual Appliance. Per correggere questo comportamento, è necessario aggiungere la regola seguente.To correct this behavior the follow rule must be added.

     Get-AzureRouteTable $BERouteTableName | `
         Set-AzureRoute -RouteName "Internal traffic to FW" -AddressPrefix $VNetPrefix `
         -NextHopType VirtualAppliance `
         -NextHopIpAddress $VMIP[0]
    
  4. A questo punto occorre fare una scelta.At this point there is a choice to be made. Con le due route precedenti tutto il traffico viene instradato al firewall per la valutazione, anche quello all'interno di una singola subnet.With the above two routes all traffic will route to the firewall for assessment, even traffic within a single subnet. Questo comportamento potrebbe risultare utile, tuttavia per consentire il routing locale del traffico all'interno di una subnet senza coinvolgere il firewall, è possibile aggiungere una terza regola molto specifica.This may be desired, however to allow traffic within a subnet to route locally without involvement from the firewall a third, very specific rule can be added. Questa route stabilisce che qualsiasi indirizzo destinato alla subnet locale può essere instradato direttamente alla subnet (NextHopType = VNETLocal).This route states that any address destine for the local subnet can just route there directly (NextHopType = VNETLocal).

     Get-AzureRouteTable $BERouteTableName | `
         Set-AzureRoute -RouteName "Allow Intra-Subnet Traffic" -AddressPrefix $BEPrefix `
         -NextHopType VNETLocal
    
  5. Infine, dopo aver creato la tabella di routing e averla popolata con le route definite dall'utente, è necessario associarla a una subnet.Finally, with the routing table created and populated with a user defined routes, the table must now be bound to a subnet. Nello script la tabella di route front-end è associata anche alla subnet front-end.In the script, the front end route table is also bound to the Frontend subnet. Ecco lo script di associazione per la subnet back-end.Here is the binding script for the back end subnet.

    Set-AzureSubnetRouteTable -VirtualNetworkName $VNetName `Set-AzureSubnetRouteTable -VirtualNetworkName $VNetName `

     -SubnetName $BESubnet `
     -RouteTableName $BERouteTableName
    

Inoltro IPIP Forwarding

L'inoltro IP è una funzionalità complementare del routing definito dall'utente.A companion feature to UDR, is IP Forwarding. Si tratta di un'impostazione in un dispositivo virtuale che consente al dispositivo di ricevere traffico non indirizzato in modo specifico ad esso e quindi di inoltrare il traffico alla destinazione finale.This is a setting on a Virtual Appliance that allows it to receive traffic not specifically addressed to the appliance and then forward that traffic to its ultimate destination.

Ad esempio, se il traffico da AppVM01 effettua una richiesta al server DNS01, il routing definito dall'utente indirizzerà tale richiesta al firewall.As an example, if traffic from AppVM01 makes a request to the DNS01 server, UDR would route this to the firewall. Se l'inoltro IP è abilitato, il traffico per la destinazione DNS01 (10.0.2.4) verrà accettato dal dispositivo (10.0.0.4) e quindi inoltrato alla destinazione finale (10.0.2.4).With IP Forwarding enabled, the traffic for the DNS01 destination (10.0.2.4) will be accepted by the appliance (10.0.0.4) and then forwarded to its ultimate destination (10.0.2.4). Se l'inoltro IP non è abilitato sul firewall, il traffico non verrà accettato dal dispositivo, anche se la tabella di route specifica il firewall come hop successivo.Without IP Forwarding enabled on the Firewall, traffic would not be accepted by the appliance even though the route table has the firewall as the next hop.

Importante

È essenziale ricordare di abilitare l'inoltro IP insieme al routing definito dall'utente.It’s critical to remember to enable IP Forwarding in conjunction with User Defined Routing.

La configurazione dell'inoltro IP è costituita da un singolo comando e può essere eseguita al momento della creazione della macchina virtuale.Setting up IP Forwarding is a single command and can be done at VM creation time. Per il flusso di questo esempio, il frammento di codice si trova verso la fine dello script ed è raggruppato con i comandi relativi al routing definito dall'utente:For the flow of this example the code snippet is towards the end of the script and grouped with the UDR commands:

  1. Chiamare l'istanza della macchina virtuale corrispondente al dispositivo virtuale, in questo caso il firewall, e abilitare l'inoltro IP. Notare che qualsiasi elemento formattato in rosso che inizia con un segno di dollaro, ad esempio $VMName[0], è una variabile definita dall'utente contenuta nello script disponibile nella sezione Riferimenti di questo documento.Call the VM instance that is your virtual appliance, the firewall in this case, and enable IP Forwarding (Note; any item in red beginning with a dollar sign (e.g.: $VMName[0]) is a user defined variable from the script in the reference section of this document. Lo zero tra parentesi quadre, [0], rappresenta la prima macchina virtuale dell'array di VM. Per il funzionamento dello script di esempio senza modifiche, la prima macchina virtuale (VM 0) deve essere il firewall:The zero in brackets, [0], represents the first VM in the array of VMs, for the example script to work without modification, the first VM (VM 0) must be the firewall):

    Get-AzureVM -Name $VMName[0] -ServiceName $ServiceName[0] | `Get-AzureVM -Name $VMName[0] -ServiceName $ServiceName[0] | `

     Set-AzureIPForwarding -Enable
    

Gruppi di sicurezza di rete (NGS)Network Security Groups (NSG)

In questo esempio viene creato un gruppo di sicurezza di rete, in cui viene poi caricata una singola regola.In this example, a NSG group is built and then loaded with a single rule. Questo gruppo viene quindi associato solo alle subnet front-end e back-end, non a SecNet.This group is then bound only to the Frontend and Backend subnets (not the SecNet). La regola seguente viene creata in modo dichiarativo:Declaratively the following rule is being built:

  1. Tutto il traffico (tutte le porte) da Internet all'intera rete virtuale (tutte le subnet) viene negato.Any traffic (all ports) from the Internet to the entire VNet (all subnets) is Denied

Anche se in questo esempio vengono usati i gruppi di sicurezza di rete, lo scopo principale consiste nel creare un secondo livello di difesa contro errori di configurazione manuale.Although NSGs are used in this example, it’s main purpose is as a secondary layer of defense against manual misconfiguration. Si vuole bloccare tutto il traffico in ingresso da Internet verso le subnet front-end o back-end. Il traffico deve solo attraversare la subnet SecNet verso il firewall e quindi, se appropriato, deve raggiungere le subnet front-end o back-end.We want to block all inbound traffic from the internet to either the Frontend or Backend subnets, traffic should only flow through the SecNet subnet to the firewall (and then if appropriate on to the Frontend or Backend subnets). Con l'abilitazione delle regole del routing definito dall'utente, inoltre, tutto il traffico che raggiunge le subnet front-end o back-end verrà indirizzato verso il firewall, grazie al routing definito dall'utente.Plus, with the UDR rules in place, any traffic that did make it into the Frontend or Backend subnets would be directed out to the firewall (thanks to UDR). Il firewall considera questo traffico come un flusso asimmetrico e rimuove il traffico in uscita.The firewall would see this as an asymmetric flow and would drop the outbound traffic. Sono quindi disponibili tre livelli di sicurezza per la protezione delle subnet front-end e back-end: 1) nessun endpoint aperto nei servizi cloud FrontEnd001 e BackEnd001, 2) gruppi di sicurezza di rete che non consentono il traffico da Internet, 3) il firewall che rimuove il traffico asimmetrico.Thus there are three layers of security protecting the Frontend and Backend subnets; 1) no open endpoints on the FrontEnd001 and BackEnd001 cloud services, 2) NSGs denying traffic from the Internet, 3) the firewall dropping asymmetric traffic.

Un aspetto interessante del gruppo di sicurezza di rete di questo esempio consiste nel fatto che include solo una regola, illustrata di seguito, ovvero non consentire il traffico Internet nell'intera rete virtuale, inclusa la subnet di sicurezza.One interesting point regarding the Network Security Group in this example is that it contains only one rule, shown below, which is to deny internet traffic to the entire virtual network which would include the Security subnet.

Get-AzureNetworkSecurityGroup -Name $NSGName | `
    Set-AzureNetworkSecurityRule -Name "Isolate the $VNetName VNet `
    from the Internet" `
    -Type Inbound -Priority 100 -Action Deny `
    -SourceAddressPrefix INTERNET -SourcePortRange '*' `
    -DestinationAddressPrefix VIRTUAL_NETWORK `
    -DestinationPortRange '*' `
    -Protocol *

Poiché, tuttavia, il gruppo di sicurezza di rete è associato solo alle subnet front-end e back-end, la regola non viene elaborata sul traffico in ingresso verso la subnet di sicurezza.However, since the NSG is only bound to the Frontend and Backend subnets, the rule isn’t processed on traffic inbound to the Security subnet. Anche se la regola del gruppo di sicurezza di rete non consente il traffico Internet verso qualsiasi indirizzo sulla rete virtuale, perché il gruppo di sicurezza di rete non è mai stato associato alla subnet di sicurezza, il traffico raggiungerà quindi la subnet di sicurezza.As a result, even though the NSG rule says no Internet traffic to any address on the VNet, because the NSG was never bound to the Security subnet, traffic will flow to the Security subnet.

Set-AzureNetworkSecurityGroupToSubnet -Name $NSGName `
    -SubnetName $FESubnet -VirtualNetworkName $VNetName

Set-AzureNetworkSecurityGroupToSubnet -Name $NSGName `
    -SubnetName $BESubnet -VirtualNetworkName $VNetName

Regole del firewallFirewall Rules

Sul firewall sarà necessario creare regole di inoltro.On the firewall, forwarding rules will need to be created. Poiché il firewall blocca o inoltra tutto il traffico in ingresso, in uscita e tra le reti virtuali, sono necessarie molte regole del firewall.Since the firewall is blocking or forwarding all inbound, outbound, and intra-VNet traffic many firewall rules are needed. Tutto il traffico in ingresso, inoltre, raggiungerà l'indirizzo IP pubblico del servizio di sicurezza su porte diverse, per l'elaborazione da parte del firewall.Also, all inbound traffic will hit the Security Service public IP address (on different ports), to be processed by the firewall. Una procedura consigliata consiste nel creare un diagramma dei flussi logici prima di configurare le regole delle subnet e del firewall, per evitare modifiche successive.A best practice is to diagram the logical flows before setting up the subnets and firewall rules to avoid rework later. La figura seguente è una visualizzazione logica delle regole del firewall per questo esempio:The following figure is a logical view of the firewall rules for this example:

Visualizzazione logica delle regole del firewallLogical View of the Firewall Rules

Nota

Le porte di gestione dipendono dal dispositivo virtuale di rete usato.Based on the Network Virtual Appliance used, the management ports will vary. In questo esempio si fa riferimento a Barracuda NextGen Firewall, che usa le porte 22, 801 e 807.In this example a Barracuda NextGen Firewall is referenced which uses ports 22, 801, and 807. Per informazioni precise sulle porte usate per la gestione del dispositivo in uso, vedere la documentazione del fornitore del dispositivo.Please consult the appliance vendor documentation to find the exact ports used for management of the device being used.

Descrizione della regola logicaLogical Rule Description

Nel diagramma logico precedente la subnet di sicurezza non viene mostrata, perché il firewall è l'unica risorsa su tale subnet e questo diagramma illustra le regole del firewall e il modo in cui le regole consentono o negano logicamente i flussi di traffico, non il percorso indirizzato effettivo.In the logical diagram above, the security subnet is not shown since the firewall is the only resource on that subnet, and this diagram is showing the firewall rules and how they logically allow or deny traffic flows and not the actual routed path. Le porte esterne selezionate per il traffico RDP, inoltre, sono le porte incluse negli intervalli più elevati (8014 - 8026) e sono state selezionate per allinearsi almeno in parte con gli ultimi due ottetti dell'indirizzo IP locale per facilitarne la lettura. Ad esempio, l'indirizzo del server locale 10.0.1.4 è associato alla porta esterna 8014. È tuttavia possibile usare qualsiasi porta superiore non in conflitto.Also, the external ports selected for the RDP traffic are higher ranged ports (8014 – 8026) and were selected to somewhat align with the last two octets of the local IP address for easier readability (e.g. local server address 10.0.1.4 is associated with external port 8014), however any higher non-conflicting ports could be used.

Per questo esempio sono necessari 7 tipi di regole, ovvero:For this example, we need 7 types of rules, these rule types are described as follows:

  • Regole esterne (per il traffico in ingresso):External Rules (for inbound traffic):
    1. Regola di gestione del firewall: questa regola di reindirizzamento dell'app consente al traffico di raggiungere le porte di gestione del dispositivo virtuale di rete.Firewall Management Rule: This App Redirect rule allows traffic to pass to the management ports of the network virtual appliance.
    2. Regole RDP (per ogni server Windows): queste quattro regole, una per ogni server, consentiranno la gestione dei singoli server tramite RDP.RDP Rules (for each windows server): These four rules (one for each server) will allow management of the individual servers via RDP. È anche possibile raggruppare queste regole in una sola regola, in base alle capacità del dispositivo di rete virtuale usato.This could also be bundled into one rule depending on the capabilities of the Network Virtual Appliance being used.
    3. Regole del traffico dell'applicazione: sono disponibili due regole del traffico dell'applicazione, la prima per il traffico Web front-end e la seconda per il traffico back-end, ad esempio dal server Web al livello dati.Application Traffic Rules: There are two Application Traffic Rules, the first for the front end web traffic, and the second for the back end traffic (eg web server to data tier). La configurazione di queste regole dipenderà dall'architettura di rete, ovvero dove sono posizionati i server, e dai flussi di traffico, ovvero la direzione dei flussi di traffico e le porte usate.The configuration of these rules will depend on the network architecture (where your servers are placed) and traffic flows (which direction the traffic flows, and which ports are used).
      • La prima regola consentirà al traffico effettivo dell'applicazione di raggiungere il server applicazioni.The first rule will allow the actual application traffic to reach the application server. Anche se altre regole consentono la sicurezza, la gestione e così via, le regole delle applicazioni consentono a utenti o servizi esterni di accedere alle applicazioni.While the other rules allow for security, management, etc., Application Rules are what allow external users or services to access the application(s). Per questo esempio è presente un singolo server Web sulla porta 80, quindi una singola regola delle applicazioni per il firewall reindirizzerà il traffico in ingresso all'indirizzo IP esterno, verso l'indirizzo IP interno dei server Web.For this example, there is a single web server on port 80, thus a single firewall application rule will redirect inbound traffic to the external IP, to the web servers internal IP address. La sessione di traffico reindirizzato sarà sottoposta al processo NAT verso il server interno.The redirected traffic session would be NAT’d to the internal server.
      • La seconda regola del traffico delle applicazioni è la regola back-end per consentire al server Web di comunicare con il server AppVM01, ma non con AppVM02, tramite qualsiasi porta.The second Application Traffic Rule is the back end rule to allow the Web Server to talk to the AppVM01 server (but not AppVM02) via any port.
  • Regole interne (per il traffico tra reti virtuali)Internal Rules (for intra-VNet traffic)
    1. Regola in uscita verso Internet: questa regola consentirà al traffico proveniente da qualsiasi rete di passare alle reti selezionate.Outbound to Internet Rule: This rule will allow traffic from any network to pass to the selected networks. Questa regola è in genere una regola predefinita già disponibile sul firewall, ma con stato disabilitato.This rule is usually a default rule already on the firewall, but in a disabled state. È consigliabile abilitarla per questo esempio.This rule should be enabled for this example.
    2. Regola DNS: questa regola consente solo al traffico DNS (porta 53) di passare al server DNS.DNS Rule: This rule allows only DNS (port 53) traffic to pass to the DNS server. Per questo ambiente la maggior parte del traffico dal front-end e dal back-end è bloccato. Questa regola consente in modo specifico il traffico DNS da qualsiasi subnet locale.For this environment most traffic from the Frontend to the Backend is blocked, this rule specifically allows DNS from any local subnet.
    3. Regola da subnet a subnet: questa regola consente a qualsiasi server sulla subnet back-end di connettersi a qualsiasi server sulla subnet front-end, ma non viceversa.Subnet to Subnet Rule: This rule is to allow any server on the back end subnet to connect to any server on the front end subnet (but not the reverse).
  • Regola alternativa (per il traffico che non soddisfa alcuna condizione precedente):Fail-safe Rule (for traffic that doesn’t meet any of the above):
    1. Regola per negare tutto il traffico: deve essere sempre la regola finale, a livello di priorità. Se i flussi di traffico non corrispondono ad alcuna regola precedente, verranno eliminati da questa regola.Deny All Traffic Rule: This should always be the final rule (in terms of priority), and as such if a traffic flows fails to match any of the preceding rules it will be dropped by this rule. Questa è una regola predefinita ed è solitamente attivata, quindi non sono in genere necessarie modifiche.This is a default rule and usually activated, no modifications are generally needed.

Suggerimento

Nella seconda regola per il traffico delle applicazioni tutte le porte sono autorizzate per semplificare l'esempio. In uno scenario reale è consigliabile usare la porta e gli intervalli di indirizzi più specifici per ridurre la superficie di attacco di questa regola.On the second application traffic rule, any port is allowed for easy of this example, in a real scenario the most specific port and address ranges should be used to reduce the attack surface of this rule.


Importante

Dopo la creazione di tutte le regole indicate, è importante esaminare la priorità di ogni regola, per assicurare che il traffico venga consentito o negato in base a quanto previsto.Once all of the above rules are created, it’s important to review the priority of each rule to ensure traffic will be allowed or denied as desired. Per questo esempio le regole sono elencate in ordine di priorità.For this example, the rules are in priority order. È facile essere bloccati all'esterno del firewall a causa di regole non ordinate correttamente.It's easy to be locked out of the firewall due to mis-ordered rules. Assicurarsi come minimo che la gestione del firewall stesso sia sempre la regola con la massima priorità.At a minimum, ensure the management for the firewall itself is always the absolute highest priority rule.

Prerequisiti delle regoleRule Prerequisites

Un prerequisito per la macchina virtuale che esegue il firewall è costituito dagli endpoint pubblici.One prerequisite for the Virtual Machine running the firewall are public endpoints. Perché il firewall possa elaborare il traffico, è necessario che gli endpoint pubblici siano aperti.For the firewall to process traffic the appropriate public endpoints must be open. Ci sono tre tipi di traffico in questo esempio, ovvero 1) traffico di gestione per controllare il firewall e le regole del firewall, 2) traffico RDP per controllare i server Windows e 3) traffico delle applicazioni.There are three types of traffic in this example; 1) Management traffic to control the firewall and firewall rules, 2) RDP traffic to control the windows servers, and 3) Application Traffic. Queste sono le tre colonne dei tipi di traffico nella metà superiore della visualizzazione logica delle regole del firewall precedente.These are the three columns of traffic types in the upper half of logical view of the firewall rules above.

Importante

Un concetto importante da ricordare in questo caso è che tutto il traffico in ingresso passerà attraverso il firewall.A key takeway here is to remember that all traffic will come through the firewall. Quindi, perché il desktop remoto possa accedere al server IIS01, anche se si trova nel servizio cloud front-end e nella subnet front-end, sarà necessario attivare il protocollo RDP sulla porta 8014 del firewall e quindi consentire al firewall di instradare la richiesta RDP internamente alla porta RDP del server IIS01.So to remote desktop to the IIS01 server, even though it's in the Front End Cloud Service and on the Front End subnet, to access this server we will need to RDP to the firewall on port 8014, and then allow the firewall to route the RDP request internally to the IIS01 RDP Port. Il pulsante "Connetti" del portale di Azure non funzionerà, perché non esiste un percorso RDP diretto a IIS01 visibile per il portale.The Azure portal's "Connect" button won't work because there is no direct RDP path to IIS01 (as far as the portal can see). Ciò significa che tutte le connessioni da Internet saranno indirizzate alla porta e al servizio di sicurezza, ad esempio secscv001.cloudapp.net:xxxx. Vedere il diagramma precedente per il mapping della porta esterna all'indirizzo IP e alla porta interni.This means all connections from the internet will be to the Security Service and a Port, e.g. secscv001.cloudapp.net:xxxx (reference the above diagram for the mapping of External Port and Internal IP and Port).

Un endpoint può essere aperto sia al momento della creazione della VM sia dopo la compilazione, come nello script di esempio e come è illustrato nel frammento di codice seguente. Notare che qualsiasi elemento che inizia con un segno di dollaro, ad esempio $VMName[$i], è una variabile definita dall'utente contenuta nello script disponibile nella sezione Riferimenti di questo documento.An endpoint can be opened either at the time of VM creation or post build as is done in the example script and shown below in this code snippet (Note; any item beginning with a dollar sign (e.g.: $VMName[$i]) is a user defined variable from the script in the reference section of this document. L'elemento"$i" tra parentesi graffe, [$i], rappresenta il numero di array di una VM specifica in un array di VM:The “$i” in brackets, [$i], represents the array number of a specific VM in an array of VMs):

Add-AzureEndpoint -Name "HTTP" -Protocol tcp -PublicPort 80 -LocalPort 80 `
    -VM (Get-AzureVM -ServiceName $ServiceName[$i] -Name $VMName[$i]) | `
    Update-AzureVM

Anche se qui non è chiaramente illustrato a causa dell'uso delle variabili, gli endpoint vengono aperti solo nel servizio cloud di sicurezza,Although not clearly shown here due to the use of variables, but endpoints are only opened on the Security Cloud Service. in modo da assicurare che tutto il traffico in ingresso, sia instradato, tramite NAT o eliminato, venga gestito dal firewall.This is to ensure that all inbound traffic is handled (routed, NAT'd, dropped) by the firewall.

È necessario installare un client di gestione in un PC per controllare il firewall e creare le configurazioni necessarie.A management client will need to be installed on a PC to manage the firewall and create the configurations needed. Per informazioni sulla gestione del dispositivo, vedere la documentazione del fornitore del firewall o di un altro dispositivo virtuale di rete.See the documentation from your firewall (or other NVA) vendor on how to manage the device. Il resto di questa sezione e la sezione successiva, Creazione di regole del firewall, descriveranno la configurazione del firewall stesso tramite il client di gestione dei fornitori, non del portale di Azure o di PowerShell.The remainder of this section and the next section, Firewall Rules Creation, will describe the configuration of the firewall itself, through the vendors management client (i.e. not the Azure portal or PowerShell).

Le istruzioni per scaricare il client e connettersi all'applicazione Barracuda usata in questo esempio sono disponibili qui: Barracuda NG AdminInstructions for client download and connecting to the Barracuda used in this example can be found here: Barracuda NG Admin

Una volta eseguito l'accesso al firewall, ma prima di creare le relative regole, sono disponibili due classi di oggetti, Network e Service, che costituiscono un prerequisito e che possono facilitare la creazione delle regole.Once logged onto the firewall but before creating firewall rules, there are two prerequisite object classes that can make creating the rules easier; Network & Service objects.

Per questo esempio devono essere definiti tre oggetti di rete denominati, uno per la subnet back-end e uno per la subnet front-end, oltre a un oggetto di rete per l'indirizzo IP del server DNS.For this example, three named network objects should be defined (one for the Frontend subnet and the Backend subnet, also a network object for the IP address of the DNS server). Per creare una rete denominata, dal dashboard del client Barracuda NG Admin passare alla scheda di configurazione, nella sezione Operational Configuration fare clic su Ruleset, quindi su "Networks" nel menu Firewall Objects e fare clic su New nel menu Edit Networks.To create a named network; starting from the Barracuda NG Admin client dashboard, navigate to the configuration tab, in the Operational Configuration section click Ruleset, then click “Networks” under the Firewall Objects menu, then click New in the Edit Networks menu. Ora è possibile creare l'oggetto di rete aggiungendo il nome e il prefisso:The network object can now be created, by adding the name and the prefix:

Creare un oggetto di rete di front-endCreate a FrontEnd Network Object

Verrà creata una rete denominata per la subnet front-end e sarà necessario creare un oggetto simile anche per la subnet back-end.This will create a named network for the FrontEnd subnet, a similar object should be created for the BackEnd subnet as well. Ora è possibile fare riferimento più facilmente alle subnet in base al relativo nome nelle regole del firewall.Now the subnets can be more easily referenced by name in the firewall rules.

Per l'oggetto server DNS:For the DNS Server Object:

Creare un oggetto server DNSCreate a DNS Server Object

Questo singolo riferimento all'indirizzo IP sarà usato in una regola DNS più avanti in questo documento.This single IP address reference will be utilized in a DNS rule later in the document.

Il secondo oggetto prerequisito è costituito da oggetti servizio, che rappresenteranno le porte di connessione RDP per ogni server.The second prerequisite objects are Services objects. Poiché l'oggetto servizio RDP è associato alla porta RDP predefinita, 3389, si possono creare nuovi servizi per consentire il traffico in ingresso dalle porte esterne (8014-8026).These will represent the RDP connection ports for each server. Le nuove porte possono anche essere aggiunte al servizio RDP esistente, ma ai fini di una semplice dimostrazione, si può creare una singola regola per ogni server.Since the existing RDP service object is bound to the default RDP port, 3389, new Services can be created to allow traffic from the external ports (8014-8026). Per creare un nuova regola RDP per un server, dal dashboard del client Barracuda NG Admin passare alla scheda di configurazione, nella sezione Operational Configuration fare clic su Ruleset, quindi su "Services" nel menu Firewall Objects, scorrere l'elenco dei servizi e selezionare il servizio "RDP".The new ports could also be added to the existing RDP service, but for ease of demonstration, an individual rule for each server can be created. Fare clic con il pulsante destro del mouse e scegliere Copy, quindi fare clic con il pulsante destro del mouse e scegliere Paste.To create a new RDP rule for a server; starting from the Barracuda NG Admin client dashboard, navigate to the configuration tab, in the Operational Configuration section click Ruleset, then click “Services” under the Firewall Objects menu, scroll down the list of services and select the “RDP” service. Ora è disponibile un oggetto servizio RDP-Copy1 che può essere modificato.Right-click and select copy, then right-click and select Paste. Fare clic con il pulsante destro del mouse su RDP-Copy1 e scegliere Edit.There is now a RDP-Copy1 Service Object that can be edited. Verrà visualizzata la finestra Edit Service Object illustrata di seguito:Right-click RDP-Copy1 and select Edit, the Edit Service Object window will pop up as shown here:

Copiare la regola RDP predefinitaCopy of Default RDP Rule

I valori possono essere modificati per rappresentare il servizio RDP per un server specifico.The values can then be edited to represent the RDP service for a specific server. Per AppVM01 la regola RDP predefinita precedente dovrà essere modificata per riflettere i nuovi valori per il nome del servizio, la descrizione e la porta RDP esterna usati nel diagramma della figura 8. Si noti che le porte vengono modificate, dalla porta RDP 3389 predefinita alla porta esterna usata per questo server specifico, nel caso di AppVM01 la porta esterna 8025. Il servizio modificato è illustrato di seguito:For AppVM01 the above default RDP rule should be modified to reflect a new Service Name, Description, and external RDP Port used in the Figure 8 diagram (Note: the ports are changed from the RDP default of 3389 to the external port being used for this specific server, in the case of AppVM01 the external Port is 8025) the modified service is shown below:

Regola AppVM01AppVM01 Rule

Questo processo deve essere ripetuto per creare i servizi RDP per i server rimanenti, AppVM02, DNS01 e IIS01.This process must be repeated to create RDP Services for the remaining servers; AppVM02, DNS01, and IIS01. La creazione di questi servizi renderà più semplice e intuitiva la creazione delle regole illustrata nella sezione successiva.The creation of these Services will make the Rule creation simpler and more obvious in the next section.

Nota

Un servizio RDP per il firewall non è necessario per due motivi, 1) prima di tutto la macchina virtuale del firewall è un'immagine basata su Linux, quindi per la gestione della VM verrà usato SSH sulla porta 22 invece di RDP e 2) nella prima regola di gestione descritta di seguito la porta 22 e altre due porte di gestione sono consentite ai fini della connettività di gestione.An RDP service for the Firewall is not needed for two reasons; 1) first the firewall VM is a Linux based image so SSH would be used on port 22 for VM management instead of RDP, and 2) port 22, and two other management ports are allowed in the first management rule described below to allow for management connectivity.

Creazione di regole del firewallFirewall Rules Creation

In questo esempio si usano tre tipi di regole del firewall ognuna con icone distinte:There are three types of firewall rules used in this example, they all have distinct icons:

La regola di reindirizzamento dell'applicazione: Icona di reindirizzamento dell'applicazioneThe Application Redirect rule: Application Redirect Icon

Regola Destination NAT: Icona di Destination NATThe Destination NAT rule: Destination NAT Icon

Regola Pass: Icona di PassThe Pass rule: Pass Icon

Altre informazioni su queste regole sono disponibili sul sito Web Barracuda.More information on these rules can be found at the Barracuda web site.

Per creare le regole seguenti, o verificare le regole predefinite esistenti, dal dashboard del client Barracuda NG Admin passare alla scheda di configurazione, quindi nella sezione Operational Configuration fare clic su Ruleset.To create the following rules (or verify existing default rules), starting from the Barracuda NG Admin client dashboard, navigate to the configuration tab, in the Operational Configuration section click Ruleset. Una griglia denominata "Main Rules" mostrerà le regole esistenti attive e disattivate in questo firewall.A grid called, “Main Rules” will show the existing active and deactivated rules on this firewall. Nell'angolo in alto a destra della griglia è presente un piccolo pulsante verde "+" sul quale occorre fare clic per creare una nuova regola. Si noti che il firewall potrebbe essere "bloccato" per modifiche. Se è visualizzato un pulsante contrassegnato con "Lock" e non si riesce a creare o modificare regole, fare clic sul pulsante per "sbloccare" il set di regole e consentire la modifica.In the upper right corner of this grid is a small, green “+” button, click this to create a new rule (Note: your firewall may be “locked” for changes, if you see a button marked “Lock” and you are unable to create or edit rules, click this button to “unlock” the rule set and allow editing). Se si vuole modificare una regola esistente, selezionarla, fare clic con il pulsante destro del mouse e scegliere Edit Rule.If you wish to edit an existing rule, select that rule, right-click and select Edit Rule.

Una volta che le regole sono state create e/o modificate, è necessario effettuarne il push al firewall e quindi attivarle. In caso contrario, le modifiche alle regole non saranno applicate.Once your rules are created and/or modified, they must be pushed to the firewall and then activated, if this is not done the rule changes will not take effect. Il processo di push e attivazione è illustrato dopo le descrizioni delle regole dettagliate.The push and activation process is described below the details rule descriptions.

Le specifiche di ogni regola necessaria per completare questo esempio sono descritte come segue:The specifics of each rule required to complete this example are described as follows:

  • Regola di gestione del firewall: questa regola di reindirizzamento dell'app consente al traffico di raggiungere le porte di gestione del dispositivo virtuale di rete, in questo esempio Barracuda NextGen Firewall.Firewall Management Rule: This App Redirect rule allows traffic to pass to the management ports of the network virtual appliance, in this example a Barracuda NextGen Firewall. Le porte di gestione sono 801, 807 e facoltativamente 22.The management ports are 801, 807 and optionally 22. Le porte esterne e interne sono le stesse, ovvero nessuna conversione di porta.The external and internal ports are the same (i.e. no port translation). Questa regola, SETUP-MGMT-ACCESS, è una regola predefinita e abilitata per impostazione predefinita in Barracuda NextGen Firewall versione 6.1.This rule, SETUP-MGMT-ACCESS, is a default rule and enabled by default (in Barracuda NextGen Firewall version 6.1).

    Regola di gestione del firewallFirewall Management Rule

Suggerimento

Lo spazio degli indirizzi di origine in questa regola è Any. Se gli intervalli di indirizzi IP di gestione sono noti, riducendo l'ambito si ridurrà anche la superficie di attacco alle porte di gestione.The source address space in this rule is Any, if the management IP address ranges are known, reducing this scope would also reduce the attack surface to the management ports.

  • Regole RDP: queste regole Destination NAT consentiranno la gestione di singoli server tramite RDP.RDP Rules: These Destination NAT rules will allow management of the individual servers via RDP. Per creare questa regola sono necessari quattro campi critici:There are four critical fields needed to create this rule:

    1. Source: per consentire il traffico RDP da qualsiasi origine, nel campo Source viene usato il riferimento "Any".Source – to allow RDP from anywhere, the reference “Any” is used in the Source field.
    2. Service: usare l'oggetto servizio appropriato creato in precedenza, in questo caso "AppVM01 RDP". Le porte esterne reindirizzano il traffico agli indirizzi IP locali dei server e alla porta 3386, ovvero la porta RDP predefinita.Service – use the appropriate Service Object created earlier, in this case “AppVM01 RDP”, the external ports redirect to the servers local IP address and to port 3386 (the default RDP port). Questa regola specifica riguarda l'accesso RDP ad AppVM01.This specific rule is for RDP access to AppVM01.
    3. Destination: deve essere la porta locale sul firewall, "DCHP 1 Local IP" o eth0 se si usano indirizzi IP statici.Destination – should be the local port on the firewall, “DCHP 1 Local IP” or eth0 if using static IPs. Il numero ordinale, eth0, eth1 e così via, può essere diverso se il dispositivo di rete ha più interfacce locali.The ordinal number (eth0, eth1, etc) may be different if your network appliance has multiple local interfaces. Questa è la porta di invio del firewall, può essere la stessa porta di ricezione. La destinazione di routing effettiva è indicata nel campo Target List.This is the port the firewall is sending out from (may be the same as the receiving port), the actual routed destination is in the Target List field.
    4. Redirection: questa sezione indica il dispositivo virtuale al quale verrà infine indirizzato il traffico.Redirection – this section tells the virtual appliance where to ultimately redirect this traffic. Il reindirizzamento più semplice consiste nell'inserire l'indirizzo IP e la porta, facoltativa, nel campo Target List.The simplest redirection is to place the IP and Port (optional) in the Target List field. Se non si specifica una porta, verrà usata la porta di destinazione nella richiesta in ingresso, ovvero nessuna conversione. Se si designa una porta, questa verrà anche sottoposta al processo NAT insieme all'indirizzo IP.If no port is used the destination port on the inbound request will be used (ie no translation), if a port is designated the port will also be NAT’d along with the IP address.

      Regola firewall RDPFirewall RDP Rule

      Sarà necessario creare un totale di quattro regole RDP:A total of four RDP rules will need to be created:

      Nome regolaRule Name ServerServer ServiceService Target ListTarget List
      RDP-to-IIS01RDP-to-IIS01 IIS01IIS01 IIS01 RDPIIS01 RDP 10.0.1.4:338910.0.1.4:3389
      RDP-to-DNS01RDP-to-DNS01 DNS01DNS01 DNS01 RDPDNS01 RDP 10.0.2.4:338910.0.2.4:3389
      RDP-to-AppVM01RDP-to-AppVM01 AppVM01AppVM01 AppVM01 RDPAppVM01 RDP 10.0.2.5:338910.0.2.5:3389
      RDP-to-AppVM02RDP-to-AppVM02 AppVM02AppVM02 AppVm02 RDPAppVm02 RDP 10.0.2.6:338910.0.2.6:3389

Suggerimento

Limitando l'ambito dei campi Source e Service, si riduce la superficie di attacco.Narrowing down the scope of the Source and Service fields will reduce the attack surface. Sarà necessario usare l'ambito più limitato che consenta la funzionalità.The most limited scope that will allow functionality should be used.

  • Regole del traffico dell'applicazione: sono disponibili due regole del traffico dell'applicazione, la prima per il traffico Web front-end e la seconda per il traffico back-end, ad esempio dal server Web al livello dati.Application Traffic Rules: There are two Application Traffic Rules, the first for the front end web traffic, and the second for the back end traffic (eg web server to data tier). Queste regole dipenderanno dall'architettura di rete, ovvero dove sono posizionati i server, e dai flussi di traffico, ovvero la direzione dei flussi di traffico e le porte usate.These rules will depend on the network architecture (where your servers are placed) and traffic flows (which direction the traffic flows, and which ports are used).

    Viene illustrata per prima la regola front-end per il traffico Web:First discussed is the front end rule for web traffic:

    Regola firewall WebFirewall Web Rule

    La regola Destination NAT consente al traffico effettivo dell'applicazione di raggiungere il server applicazioni.This Destination NAT rule allows the actual application traffic to reach the application server. Anche se altre regole consentono la sicurezza, la gestione e così via, le regole delle applicazioni consentono a utenti o servizi esterni di accedere alle applicazioni.While the other rules allow for security, management, etc., Application Rules are what allow external users or services to access the application(s). Per questo esempio è presente un singolo server Web sulla porta 80, quindi la singola regola delle applicazioni per il firewall reindirizzerà il traffico in ingresso all'indirizzo IP esterno, verso l'indirizzo IP interno dei server Web.For this example, there is a single web server on port 80, thus the single firewall application rule will redirect inbound traffic to the external IP, to the web servers internal IP address.

    Nota: nel campo Target List non è assegnata alcuna porta, quindi verrà usata la porta in ingresso 80, o 443 per il servizio selezionato, nel reindirizzamento del server Web.Note: that there is no port assigned in the Target List field, thus the inbound port 80 (or 443 for the Service selected) will be used in the redirection of the web server. Se il server Web è in ascolto su una porta diversa, ad esempio la porta 8080, il campo Target List potrebbe essere aggiornato in 10.0.1.4:8080 per consentire anche il reindirizzamento della porta.If the web server is listening on a different port, for example port 8080, the Target List field could be updated to 10.0.1.4:8080 to allow for the Port redirection as well.

    La regola del traffico delle applicazioni successiva è la regola back-end per consentire al server Web di comunicare con il server AppVM01, ma non AppVM02, tramite qualsiasi servizio.The next Application Traffic Rule is the back end rule to allow the Web Server to talk to the AppVM01 server (but not AppVM02) via Any service:

    Regola firewall AppVM01Firewall AppVM01 Rule

    La regola Pass consente a qualsiasi server IIS sulla subnet front-end di raggiungere il server AppVM01, con l'indirizzo IP 10.0.2.5, su qualsiasi porta, usando qualsiasi protocollo per accedere ai dati richiesti dall'applicazione Web.This Pass rule allows any IIS server on the Frontend subnet to reach the AppVM01 (IP Address 10.0.2.5) on Any port, using any Protocol to access data needed by the web application.

    In questa schermata viene usato "<explicit-dest>" nel campo Destination per indicare 10.0.2.5 come destinazione.In this screen shot an "<explicit-dest>" is used in the Destination field to signify 10.0.2.5 as the destination. Può essere una destinazione esplicita, come illustrato, o un oggetto di rete denominato, come è stato fatto nei prerequisiti del server DNS.This could be either explicit as shown or a named Network Object (as was done in the prerequisites for the DNS server). La scelta del metodo da usare spetta all'amministratore del firewall.This is up to the administrator of the firewall as to which method will be used. Per aggiungere 10.0.2.5 come destinazione esplicita, fare doppio clic sulla prima riga vuota sotto <explicit-dest> e immettere l'indirizzo nella finestra visualizzata.To add 10.0.2.5 as an Explict Desitnation, double-click on the first blank row under <explicit-dest> and enter the address in the window that pops up.

    Con questa regola Pass non è necessario usare NAT, perché si tratta di traffico interno, quindi si può impostare Connection Method su "No SNAT".With this Pass Rule, no NAT is needed since this is internal traffic, so the Connection Method can be set to "No SNAT".

    Nota: la rete di origine in questa regola è qualsiasi risorsa nella subnet front-end. Se ce ne sarà una sola o se sarà disponibile un numero specifico noto di server Web, si potrà creare una risorsa oggetto di rete per indicare in modo più preciso gli indirizzi IP esatti, invece dell'intera subnet front-end.Note: The Source network in this rule is any resource on the FrontEnd subnet, if there will only be one, or a known specific number of web servers, a Network Object resource could be created to be more specific to those exact IP addresses instead of the entire Frontend subnet.

Suggerimento

Questa regola usa il servizio "Any" per facilitare la configurazione e l'uso dell'applicazione di esempio, consentendo anche di usare ICMPv4 (ping) in una singola regola.This rule uses the service “Any” to make the sample application easier to setup and use, this will also allow ICMPv4 (ping) in a single rule. Questa non è comunque una procedura consigliata.However, this is not a recommended practice. Le porte e i protocolli, ovvero "Services", dovranno essere limitati al minimo possibile che consenta all'attività dall'applicazione di ridurre la superficie di attacco su questo limite.The ports and protocols (“Services”) should be narrowed to the minimum possible that allows application operation to reduce the attack surface across this boundary.


Suggerimento

Anche se questa regola illustra l'uso di un riferimento explicit-dest, è opportuno usare un approccio coerente in tutta la configurazione del firewall.Although this rule shows an explicit-dest reference being used, a consistent approach should be used throughout the firewall configuration. È consigliabile usare sempre l'oggetto rete denominato per facilitare la leggibilità e il supporto.It is recommended that the named Network Object be used throughout for easier readability and supportability. Il riferimento explicit-dest viene usato qui solo per illustrare un metodo di riferimento alternativo e non è generalmente consigliabile, specialmente per le configurazioni complesse.The explicit-dest is used here only to show an alternative reference method and is not generally recommended (especially for complex configurations).

  • Regola in uscita verso Internet: questa regola Pass consentirà al traffico proveniente da qualsiasi rete di origine di passare alle reti di destinazione selezionate.Outbound to Internet Rule: This Pass rule will allow traffic from any Source network to pass to the selected Destination networks. Questa regola è in genere una regola predefinita già disponibile in Barracuda NextGen Firewall, ma con stato disabilitato.This rule is a default rule usually already on the Barracuda NextGen firewall, but is in a disabled state. Facendo clic su questa regola, è possibile accedere al comando Activate Rule.Right-clicking on this rule can access the Activate Rule command. La regola illustrata di seguito è stata modificata per aggiungere le due subnet locali create come riferimenti nella sezione dei prerequisiti di questo documento per l'attributo Source di questa regola.The rule shown here has been modified to add the two local subnets that were created as references in the prerequisite section of this document to the Source attribute of this rule.

    Regola firewall in uscitaFirewall Outbound Rule

  • Regola DNS: questa regola Pass consente solo al traffico DNS (porta 53) di passare al server DNS.DNS Rule: This Pass rule allows only DNS (port 53) traffic to pass to the DNS server. Per questo ambiente la maggior parte del traffico dal front-end e dal back-end è bloccato. Questa regola consente in modo specifico il traffico DNS.For this environment most traffic from the FrontEnd to the BackEnd is blocked, this rule specifically allows DNS.

    Regola firewall DNSFirewall DNS Rule

    Nota: in questa schermata è inclusa l'impostazione Connection Method.Note: In this screen shot the Connection Method is included. Poiché questa regola riguarda il traffico da indirizzo IP interno a indirizzo IP interno, non è richiesto alcun processo NAT e per questa regola Pass l'opzione Connection Method è impostata su "No SNAT".Because this rule is for internal IP to internal IP address traffic, no NATing is required, this the Connection Method is set to “No SNAT” for this Pass rule.

  • Regola da subnet a subnet: questa regola Pass è una regola predefinita attivata e modificata per consentire a qualsiasi server sulla subnet back-end di connettersi a qualsiasi server sulla subnet front-end.Subnet to Subnet Rule: This Pass rule is a default rule that has been activated and modified to allow any server on the back end subnet to connect to any server on the front end subnet. Questa regola riguarda tutto il traffico interno, quindi è possibile impostare Connection Method su No SNAT.This rule is all internal traffic so the Connection Method can be set to No SNAT.

    Regola firewall Intra-VNetFirewall Intra-VNet Rule

    Nota: la casella di controllo Bi-Directional non è selezionata, né lo è per la maggior parte delle regole. Questa impostazione è significativa per questa regola, perché la rende unidirezionale. È possibile avviare una connessione dalla subnet back-end alla rete front-end, ma non il contrario.Note: The Bi-directional checkbox is not checked (nor is it checked in most rules), this is significant for this rule in that it makes this rule “one directional”, a connection can be initiated from the back end subnet to the front end network, but not the reverse. Se la casella di controllo viene selezionata, la regola consente il traffico bidirezionale, che in base al diagramma logico in questo articolo non è auspicabile.If that checkbox was checked, this rule would enable bi-directional traffic, which from our logical diagram is not desired.

  • Regola per negare tutto il traffico: deve essere sempre la regola finale, a livello di priorità. Se i flussi di traffico non corrispondono ad alcuna regola precedente, verranno eliminati da questa regola.Deny All Traffic Rule: This should always be the final rule (in terms of priority), and as such if a traffic flows fails to match any of the preceding rules it will be dropped by this rule. Questa è una regola predefinita ed è solitamente attivata, quindi non sono in genere necessarie modifiche.This is a default rule and usually activated, no modifications are generally needed.

    Regola firewall DenyFirewall Deny Rule

Importante

Dopo la creazione di tutte le regole indicate, è importante esaminare la priorità di ogni regola, per assicurare che il traffico venga consentito o negato in base a quanto previsto.Once all of the above rules are created, it’s important to review the priority of each rule to ensure traffic will be allowed or denied as desired. Per questo esempio, le regole sono nell'ordine in cui dovrebbero apparire nella griglia principale delle regole di inoltro del client di gestione Barracuda.For this example, the rules are in the order they should appear in the Main Grid of forwarding rules in the Barracuda Management Client.

Attivazione delle regoleRule Activation

Dopo aver modificato il set di regole in base alla specifica del diagramma logico, è necessario caricarlo nel firewall e quindi attivarlo.With the ruleset modified to the specification of the logic diagram, the ruleset must be uploaded to the firewall and then activated.

Attivazione delle regole firewallFirewall Rule Activation

Nell'angolo in alto a destra del client di gestione è disponibile un gruppo di pulsanti.In the upper right hand corner of the management client are a cluster of buttons. Fare clic sul pulsante "Send Changes" per inviare le regole modificate al firewall, quindi fare clic sul pulsante "Activate".Click the “Send Changes” button to send the modified rules to the firewall, then click the “Activate” button.

Con l'attivazione del set di regole del firewall, la compilazione dell'ambiente di esempio è completata.With the activation of the firewall ruleset this example environment build is complete.

Scenari di trafficoTraffic Scenarios

Importante

Un concetto importante da ricordare è che tutto il traffico in ingresso passerà attraverso il firewall.A key takeway is to remember that all traffic will come through the firewall. Quindi, perché il desktop remoto possa accedere al server IIS01, anche se si trova nel servizio cloud front-end e nella subnet front-end, sarà necessario attivare il protocollo RDP sulla porta 8014 del firewall e quindi consentire al firewall di instradare la richiesta RDP internamente alla porta RDP del server IIS01.So to remote desktop to the IIS01 server, even though it's in the Front End Cloud Service and on the Front End subnet, to access this server we will need to RDP to the firewall on port 8014, and then allow the firewall to route the RDP request internally to the IIS01 RDP Port. Il pulsante "Connetti" del portale di Azure non funzionerà, perché non esiste un percorso RDP diretto a IIS01 visibile per il portale.The Azure portal's "Connect" button won't work because there is no direct RDP path to IIS01 (as far as the portal can see). Ciò significa che tutte le connessioni da Internet saranno inoltrate alla porta e al servizio di sicurezza, ad esempio secscv001.cloudapp.net:xxxx.This means all connections from the internet will be to the Security Service and a Port, e.g. secscv001.cloudapp.net:xxxx.

Per questi scenari devono essere attive le regole del firewall seguenti:For these scenarios, the following firewall rules should be in place:

  1. Firewall ManagementFirewall Management
  2. RDP to IIS01RDP to IIS01
  3. RDP to DNS01RDP to DNS01
  4. RDP to AppVM01RDP to AppVM01
  5. RDP to AppVM02RDP to AppVM02
  6. App Traffic to the WebApp Traffic to the Web
  7. App Traffic to AppVM01App Traffic to AppVM01
  8. Outbound to the InternetOutbound to the Internet
  9. Frontend to DNS01Frontend to DNS01
  10. Intra-Subnet Traffic (solo da back-end a front-end)Intra-Subnet Traffic (back end to front end only)
  11. Deny AllDeny All

Il set di regole del firewall effettive avrà probabilmente molte altre regole oltre a queste. Le regole di qualsiasi firewall specifico avranno anche diversi numeri di priorità rispetto a quelli elencati di seguito.The actual firewall ruleset will most likely have many other rules in addition to these, the rules on any given firewall will also have different priority numbers than the ones listed here. Questo elenco e i numeri associati vengono usati per fornire la rilevanza solo tra queste undici regole e le relative priorità tra di esse.This list and associated numbers are to provide relevance between just these eleven rules and the relative priority amongst them. In altre parole, nel firewall effettivo "RDP to IIS01" potrebbe essere la regola numero 5, ma finché si trova dopo la regola "Firewall Management" e prima della regola "RDP to DNS01", sarà allineata con lo scopo di questo elenco.In other words; on the actual firewall, the “RDP to IIS01” may be rule number 5, but as long as it’s below the “Firewall Management” rule and above the “RDP to DNS01” rule it would align with the intention of this list. L'elenco sarà utile anche negli scenari seguenti ai fini della brevità, ad esempio "Regole firewall 9 (DNS)".The list will also aid in the below scenarios allowing brevity; e.g. “FW Rule 9 (DNS)”. Sempre per brevità, le quattro regole RDP saranno chiamate collettivamente "regole RDP" quando lo scenario di traffico non è correlato a RDP.Also for brevity, the four RDP rules will be collectively called, “the RDP rules” when the traffic scenario is unrelated to RDP.

Tenere anche presente che per il traffico Internet in ingresso sulle subnet front-end e back-end sono configurati gruppi di sicurezza di rete.Also recall that Network Security Groups are in-place for inbound internet traffic on the Frontend and Backend subnets.

(Consentito) Da Internet a server Web(Allowed) Internet to Web Server

  1. L'utente Internet richiede una pagina HTTP a SecSvc001.CloudApp.Net (servizio cloud per Internet).Internet user requests HTTP page from SecSvc001.CloudApp.Net (Internet Facing Cloud Service)
  2. Il servizio cloud passa il traffico attraverso l'endpoint aperto sulla porta 80 all'interfaccia del firewall su 10.0.0.4:80.Cloud service passes traffic through open endpoint on port 80 to firewall interface on 10.0.0.4:80
  3. Nessun gruppo di sicurezza di rete è assegnato alla subnet di sicurezza, quindi le regole del gruppo di sicurezza di sistema consentono l'inoltro del traffico al firewall.No NSG assigned to Security subnet, so system NSG rules allow traffic to firewall
  4. Il traffico raggiunge l'indirizzo IP interno del firewall (10.0.1.4).Traffic hits internal IP address of the firewall (10.0.1.4)
  5. Il firewall inizia l'elaborazione delle regole:Firewall begins rule processing:
    1. Regola firewall 1 (FW Mgmt) non applicabile, passa alla regola successiva.FW Rule 1 (FW Mgmt) doesn’t apply, move to next rule
    2. Regole firewall da 2 a 5 (regole RDP) non applicabili, passa alla regola successiva.FW Rules 2 - 5 (RDP Rules) don’t apply, move to next rule
    3. Regola firewall 6 (App: Web) applicabile, il traffico è consentito, il firewall lo inoltra tramite NAT a 10.0.1.4 (IIS01).FW Rule 6 (App: Web) does apply, traffic is allowed, firewall NATs it to 10.0.1.4 (IIS01)
  6. La subnet front-end inizia l'elaborazione delle regole in ingresso:The Frontend subnet begins inbound rule processing:
    1. Regola gruppo di sicurezza di rete 1 (blocco Internet) non applicabile, il traffico è stato inoltrato tramite NAT dal firewall, quindi l'indirizzo di origine ora è il firewall che si trova sulla subnet front-end e considerato dal gruppo di sicurezza di rete come traffico "locale" e quindi consentito; passa alla regola successiva.NSG Rule 1 (Block Internet) doesn’t apply (this traffic was NAT’d by the firewall, thus the source address is now the firewall which is on the Security subnet and seen by the Frontend subnet NSG to be “local” traffic and is thus allowed), move to next rule
    2. Regole gruppo di sicurezza di rete predefinite, consentono il traffico da subnet a subnet, il traffico è consentito, l'elaborazione della regola del gruppo di sicurezza di rete viene arrestata.Default NSG Rules allow subnet to subnet traffic, traffic is allowed, stop NSG rule processing
  7. IIS01 è in ascolto del traffico Web, riceve la richiesta e ne avvia l'elaborazione.IIS01 is listening for web traffic, receives this request and starts processing the request
  8. IIS01 prova ad avviare una sessione FTP per AppVM01 sulla subnet back-end.IIS01 attempts to initiates an FTP session to AppVM01 on Backend subnet
  9. Il routing definito dall'utente nella subnet front-end usa il firewall per l'hop successivo.The UDR route on Frontend subnet makes the firewall the next hop
  10. Non sono impostate regole in uscita sulla subnet front-end, il traffico è consentito.No outbound rules on Frontend subnet, traffic is allowed
  11. Il firewall inizia l'elaborazione delle regole:Firewall begins rule processing:
    1. Regola firewall 1 (FW Mgmt) non applicabile, passa alla regola successiva.FW Rule 1 (FW Mgmt) doesn’t apply, move to next rule
    2. Regole firewall da 2 a 5 (regole RDP) non applicabili, passa alla regola successiva.FW Rule 2 - 5 (RDP Rules) don’t apply, move to next rule
    3. Regola firewall 6 (App: Web) non applicabile, passa alla regola successiva.FW Rule 6 (App: Web) doesn’t apply, move to next rule
    4. Regola firewall 7 (App: back-end) non applicabile, il traffico è consentito, il firewall inoltra il traffico a 10.0.2.5 (AppVM01).FW Rule 7 (App: Backend) does apply, traffic is allowed, firewall forwards traffic to 10.0.2.5 (AppVM01)
  12. La subnet back-end inizia l'elaborazione delle regole in ingresso:The Backend subnet begins inbound rule processing:
    1. Regola gruppo di sicurezza di rete 1 (blocco Internet), non applicabile, passa alla regola successiva.NSG Rule 1 (Block Internet) doesn’t apply, move to next rule
    2. Regole gruppo di sicurezza di rete predefinite, consentono il traffico da subnet a subnet, il traffico è consentito, l'elaborazione della regola del gruppo di sicurezza di rete viene arrestata.Default NSG Rules allow subnet to subnet traffic, traffic is allowed, stop NSG rule processing
  13. AppVM01 riceve la richiesta, avvia la sessione e risponde.AppVM01 receives the request and initiates the session and responds
  14. Il routing definito dall'utente nella subnet back-end usa il firewall per l'hop successivo.The UDR route on Backend subnet makes the firewall the next hop
  15. Non essendoci regole del gruppo di sicurezza di rete in uscita sulla subnet back-end, la risposta è consentita.Since there are no outbound NSG rules on the Backend subnet the response is allowed
  16. Essendo traffico restituito su una sessione stabilita, il firewall restituisce la risposta al server Web (IIS01).Because this is returning traffic on an established session the firewall passes the response back to the web server (IIS01)
  17. La subnet front-end inizia l'elaborazione delle regole in ingresso:Frontend subnet begins inbound rule processing:
    1. Regola gruppo di sicurezza di rete 1 (blocco Internet), non applicabile, passa alla regola successiva.NSG Rule 1 (Block Internet) doesn’t apply, move to next rule
    2. Regole gruppo di sicurezza di rete predefinite, consentono il traffico da subnet a subnet, il traffico è consentito, l'elaborazione della regola del gruppo di sicurezza di rete viene arrestata.Default NSG Rules allow subnet to subnet traffic, traffic is allowed, stop NSG rule processing
  18. Il server IIS riceve la risposta, completa la transazione con AppVM01 e quindi completa la compilazione della risposta HTTP che viene inviata al richiedente.The IIS server receives the response, completes the transaction with AppVM01, and then completes building the HTTP response, this HTTP response is sent to the requestor
  19. Non essendoci regole del gruppo di sicurezza di rete in uscita sulla subnet front-end, la risposta è consentita.Since there are no outbound NSG rules on the Frontend subnet the response is allowed
  20. La risposta HTTP raggiunge il firewall ed essendo la risposta a una sessione NAT stabilita, viene accettata dal firewall.The HTTP response hits the firewall, and because this is the response to an established NAT session is accepted by the firewall
  21. Il firewall reindirizza quindi la risposta all'utente Internet.The firewall then redirects the response back to the Internet User
  22. Non essendoci regole del gruppo di sicurezza di rete in uscita o hop di routing definito dall'utente sulla subnet front-end, la risposta è consentita e l'utente Internet riceve la pagina Web richiesta.Since there are no outbound NSG rules or UDR hops on the Frontend subnet the response is allowed, and the Internet User receives the web page requested.

(Consentito) Da RDP Internet a back-end(Allowed) Internet RDP to Backend

  1. L'amministratore del server su Internet richiede una sessione RDP per AppVM01 tramite SecSvc001.CloudApp.Net:8025, dove 8025 è il numero di porta assegnato dall'utente per la regola del firewall "RDP to AppVM01".Server Admin on internet requests RDP session to AppVM01 via SecSvc001.CloudApp.Net:8025, where 8025 is the user assigned port number for the “RDP to AppVM01” firewall rule
  2. Il servizio cloud passa il traffico attraverso l'endpoint aperto sulla porta 8025 all'interfaccia del firewall su 10.0.0.4:8025.The cloud service passes traffic through the open endpoint on port 8025 to firewall interface on 10.0.0.4:8025
  3. Nessun gruppo di sicurezza di rete è assegnato alla subnet di sicurezza, quindi le regole del gruppo di sicurezza di sistema consentono l'inoltro del traffico al firewall.No NSG assigned to Security subnet, so system NSG rules allow traffic to firewall
  4. Il firewall inizia l'elaborazione delle regole:Firewall begins rule processing:
    1. Regola firewall 1 (FW Mgmt) non applicabile, passa alla regola successiva.FW Rule 1 (FW Mgmt) doesn’t apply, move to next rule
    2. Regola firewall 2 (IIS RDP) non applicabile, passa alla regola successiva.FW Rule 2 (RDP IIS) doesn’t apply, move to next rule
    3. Regola firewall 3 (DNS01 RDP) non applicabile, passa alla regola successiva.FW Rule 3 (RDP DNS01) doesn’t apply, move to next rule
    4. Regola firewall 4 (AppVM01 RDP) applicabile, il traffico è consentito, il firewall lo inoltra tramite NAT a 10.0.2.5:3386 (porta RDP su AppVM01).FW Rule 4 (RDP AppVM01) does apply, traffic is allowed, firewall NATs it to 10.0.2.5:3386 (RDP port on AppVM01)
  5. La subnet back-end inizia l'elaborazione delle regole in ingresso:The Backend subnet begins inbound rule processing:
    1. Regola gruppo di sicurezza di rete 1 (blocco Internet) non applicabile, il traffico è stato inoltrato tramite NAT dal firewall, quindi l'indirizzo di origine ora è il firewall che si trova sulle subnet back-end e considerato dal gruppo di sicurezza di rete come traffico "locale" e quindi consentito; passa alla regola successiva.NSG Rule 1 (Block Internet) doesn’t apply (this traffic was NAT’d by the firewall, thus the source address is now the firewall which is on the Security subnet and seen by the Backend subnet NSG to be “local” traffic and is thus allowed), move to next rule
    2. Regole gruppo di sicurezza di rete predefinite, consentono il traffico da subnet a subnet, il traffico è consentito, l'elaborazione della regola del gruppo di sicurezza di rete viene arrestata.Default NSG Rules allow subnet to subnet traffic, traffic is allowed, stop NSG rule processing
  6. AppVM01 è in ascolto del traffico RDP e risponde.AppVM01 is listening for RDP traffic and responds
  7. Senza regole del gruppo di sicurezza di rete in uscita sono applicabili le regole predefinite e il traffico restituito è consentito.With no outbound NSG rules, default rules apply and return traffic is allowed
  8. Il routing definito dall'utente instrada il traffico in uscita al firewall come hop successivo.UDR routes outbound traffic to the firewall as the next hop
  9. Essendo traffico restituito su una sessione stabilita, il firewall restituisce la risposta all'utente Internet.Because this is returning traffic on an established session the firewall passes the response back to the internet user
  10. La sessione RDP è abilitata.RDP session is enabled
  11. AppVM01 richiede il nome utente e la password.AppVM01 prompts for user name password

(Consentito) Ricerca DNS del server Web sul server DNS(Allowed) Web Server DNS lookup on DNS server

  1. Il server Web, IIS01, richiede un feed di dati all'indirizzo www.data.gov, ma deve risolvere l'indirizzo.Web Server, IIS01, needs a data feed at www.data.gov, but needs to resolve the address.
  2. La configurazione di rete per la rete virtuale elenca DNS01 (10.0.2.4 sulla subnet back-end) come server DNS primario, IIS01 invia la richiesta DNS a DNS01.The network configuration for the VNet lists DNS01 (10.0.2.4 on the Backend subnet) as the primary DNS server, IIS01 sends the DNS request to DNS01
  3. Il routing definito dall'utente instrada il traffico in uscita al firewall come hop successivo.UDR routes outbound traffic to the firewall as the next hop
  4. Non sono presenti regole del gruppo di sicurezza di rete associate alla subnet front-end, il traffico è consentito.No outbound NSG rules are bound to the Frontend subnet, traffic is allowed
  5. Il firewall inizia l'elaborazione delle regole:Firewall begins rule processing:
    1. Regola firewall 1 (FW Mgmt) non applicabile, passa alla regola successiva.FW Rule 1 (FW Mgmt) doesn’t apply, move to next rule
    2. Regole firewall da 2 a 5 (regole RDP) non applicabili, passa alla regola successiva.FW Rule 2 - 5 (RDP Rules) don’t apply, move to next rule
    3. Regole firewall 6 e 7 (regole app) non applicabili, passa alla regola successiva.FW Rules 6 & 7 (App Rules) don’t apply, move to next rule
    4. Regole firewall 8 (a Internet) non applicabili, passa alla regola successiva.FW Rule 8 (To Internet) doesn’t apply, move to next rule
    5. Regola firewall 9 (DNS) applicabile, il traffico è consentito, il firewall inoltra il traffico a 10.0.2.4 (DNS01).FW Rule 9 (DNS) does apply, traffic is allowed, firewall forwards traffic to 10.0.2.4 (DNS01)
  6. La subnet back-end inizia l'elaborazione delle regole in ingresso:The Backend subnet begins inbound rule processing:
    1. Regola gruppo di sicurezza di rete 1 (blocco Internet), non applicabile, passa alla regola successiva.NSG Rule 1 (Block Internet) doesn’t apply, move to next rule
    2. Regole gruppo di sicurezza di rete predefinite, consentono il traffico da subnet a subnet, il traffico è consentito, l'elaborazione della regola del gruppo di sicurezza di rete viene arrestata.Default NSG Rules allow subnet to subnet traffic, traffic is allowed, stop NSG rule processing
  7. Il server DNS riceve la richiesta.DNS server receives the request
  8. Il server DNS non ha l'indirizzo memorizzato nella cache e invia la richiesta a un server DNS radice su Internet.DNS server doesn’t have the address cached and asks a root DNS server on the internet
  9. Il routing definito dall'utente instrada il traffico in uscita al firewall come hop successivo.UDR routes outbound traffic to the firewall as the next hop
  10. Non sono impostate regole del gruppo di sicurezza di rete in uscita sulla subnet back-end, il traffico è consentito.No outbound NSG rules on Backend subnet, traffic is allowed
  11. Il firewall inizia l'elaborazione delle regole:Firewall begins rule processing:
    1. Regola firewall 1 (FW Mgmt) non applicabile, passa alla regola successiva.FW Rule 1 (FW Mgmt) doesn’t apply, move to next rule
    2. Regole firewall da 2 a 5 (regole RDP) non applicabili, passa alla regola successiva.FW Rule 2 - 5 (RDP Rules) don’t apply, move to next rule
    3. Regole firewall 6 e 7 (regole app) non applicabili, passa alla regola successiva.FW Rules 6 & 7 (App Rules) don’t apply, move to next rule
    4. Regola firewall 8 (a Internet) applicabile, il traffico è consentito, la sessione viene inoltrata tramite SNAT al server DNS radice su Internet.FW Rule 8 (To Internet) does apply, traffic is allowed, session is SNAT out to root DNS server on the Internet
  12. Il server DNS Internet risponde perché la sessione è stata avviata dal firewall; la risposta viene accettata dal firewall.Internet DNS server responds, since this session was initiated from the firewall, the response is accepted by the firewall
  13. Essendo una sessione stabilita, il firewall inoltra la risposta al server che l'ha avviata, DNS01.As this is an established session, the firewall forwards the response to the initiating server, DNS01
  14. La subnet back-end inizia l'elaborazione delle regole in ingresso:The Backend subnet begins inbound rule processing:
    1. Regola gruppo di sicurezza di rete 1 (blocco Internet), non applicabile, passa alla regola successiva.NSG Rule 1 (Block Internet) doesn’t apply, move to next rule
    2. Regole gruppo di sicurezza di rete predefinite, consentono il traffico da subnet a subnet, il traffico è consentito, l'elaborazione della regola del gruppo di sicurezza di rete viene arrestata.Default NSG Rules allow subnet to subnet traffic, traffic is allowed, stop NSG rule processing
  15. Il server DNS riceve la risposta e la memorizza nella cache, quindi restituisce a IIS01 la risposta alla richiesta iniziale.The DNS server receives and caches the response, and then responds to the initial request back to IIS01
  16. Il routing definito dall'utente nella subnet back-end usa il firewall per l'hop successivo.The UDR route on backend subnet makes the firewall the next hop
  17. Non esistono regole del gruppo di sicurezza di rete in uscita sulla subnet back-end, il traffico è consentito.No outbound NSG rules exist on the Backend subnet, traffic is allowed
  18. Essendo una sessione stabilita sul firewall, la risposta viene restituita dal firewall al server IIS.This is an established session on the firewall, the response is forwarded by the firewall back to the IIS server
  19. La subnet front-end inizia l'elaborazione delle regole in ingresso:Frontend subnet begins inbound rule processing:
    1. Non sono presenti regole del gruppo di sicurezza di rete applicabili al traffico in ingresso dalla subnet back-end alla subnet front-end, quindi nessuna regola del gruppo di sicurezza di rete è applicabile.There is no NSG rule that applies to Inbound traffic from the Backend subnet to the Frontend subnet, so none of the NSG rules apply
    2. La regola di sistema predefinita che consente il traffico tra le subnet consentirebbe questo tipo di traffico, perciò è consentito.The default system rule allowing traffic between subnets would allow this traffic so the traffic is allowed
  20. IIS01 riceve la risposta da DNS01.IIS01 receives the response from DNS01

(Consentito) Da server back-end a server front-end(Allowed) Backend server to Frontend server

  1. Un amministratore connesso ad AppVM02 tramite RDP richiede un file direttamente al server IIS01 con Esplora file di Windows.An administrator logged on to AppVM02 via RDP requests a file directly from the IIS01 server via windows file explorer
  2. Il routing definito dall'utente nella subnet back-end usa il firewall per l'hop successivo.The UDR route on Backend subnet makes the firewall the next hop
  3. Non essendoci regole del gruppo di sicurezza di rete in uscita sulla subnet back-end, la risposta è consentita.Since there are no outbound NSG rules on the Backend subnet the response is allowed
  4. Il firewall inizia l'elaborazione delle regole:Firewall begins rule processing:
    1. Regola firewall 1 (FW Mgmt) non applicabile, passa alla regola successiva.FW Rule 1 (FW Mgmt) doesn’t apply, move to next rule
    2. Regole firewall da 2 a 5 (regole RDP) non applicabili, passa alla regola successiva.FW Rule 2 - 5 (RDP Rules) don’t apply, move to next rule
    3. Regole firewall 6 e 7 (regole app) non applicabili, passa alla regola successiva.FW Rules 6 & 7 (App Rules) don’t apply, move to next rule
    4. Regole firewall 8 (a Internet) non applicabili, passa alla regola successiva.FW Rule 8 (To Internet) doesn’t apply, move to next rule
    5. Regola firewall 9 (DNS) non applicabile, passa alla regola successiva.FW Rule 9 (DNS) doesn’t apply, move to next rule
    6. Regola firewall 10 (tra subnet) non applicabile, il traffico è consentito, il firewall passa il traffico a 10.0.1.4 (IIS01).FW Rule 10 (Intra-Subnet) does apply, traffic is allowed, firewall passes traffic to 10.0.1.4 (IIS01)
  5. La subnet front-end inizia l'elaborazione delle regole in ingresso:Frontend subnet begins inbound rule processing:
    1. Regola gruppo di sicurezza di rete 1 (blocco Internet), non applicabile, passa alla regola successiva.NSG Rule 1 (Block Internet) doesn’t apply, move to next rule
    2. Regole gruppo di sicurezza di rete predefinite, consentono il traffico da subnet a subnet, il traffico è consentito, l'elaborazione della regola del gruppo di sicurezza di rete viene arrestata.Default NSG Rules allow subnet to subnet traffic, traffic is allowed, stop NSG rule processing
  6. Presupponendo un'autenticazione e un'autorizzazione correte, IIS01 accetta la richiesta e risponde.Assuming proper authentication and authorization, IIS01 accepts the request and responds
  7. Il routing definito dall'utente nella subnet front-end usa il firewall per l'hop successivo.The UDR route on Frontend subnet makes the firewall the next hop
  8. Non essendoci regole del gruppo di sicurezza di rete in uscita sulla subnet front-end, la risposta è consentita.Since there are no outbound NSG rules on the Frontend subnet the response is allowed
  9. Essendo una sessione esistente sul firewall, la risposta è consentita e il firewall restituisce la risposta ad AppVM02.As this is an existing session on the firewall this response is allowed and the firewall returns the response to AppVM02
  10. La subnet back-end inizia l'elaborazione delle regole in ingresso:Backend subnet begins inbound rule processing:
    1. Regola gruppo di sicurezza di rete 1 (blocco Internet), non applicabile, passa alla regola successiva.NSG Rule 1 (Block Internet) doesn’t apply, move to next rule
    2. Regole gruppo di sicurezza di rete predefinite, consentono il traffico da subnet a subnet, il traffico è consentito, l'elaborazione della regola del gruppo di sicurezza di rete viene arrestata.Default NSG Rules allow subnet to subnet traffic, traffic is allowed, stop NSG rule processing
  11. AppVM02 riceve la risposta.AppVM02 receives the response

(Negato) Traffico Internet diretto al server Web(Denied) Internet direct to Web Server

  1. L'utente Internet prova ad accedere al server Web, IIS01, tramite il servizio FrontEnd001.CloudApp.Net.Internet user tries to access the web server, IIS01, through the FrontEnd001.CloudApp.Net service
  2. Non essendoci endpoint aperti per il traffico HTTP, questo non passa attraverso il servizio cloud e non raggiunge il server.Since there are no endpoints open for HTTP traffic, this would not pass through the Cloud Service and wouldn’t reach the server
  3. In caso di apertura degli endpoint per qualunque motivo, il gruppo di sicurezza di rete (blocco Internet) sulla subnet front-end bloccherà questo traffico.If the endpoints were open for some reason, the NSG (Block Internet) on the Frontend subnet would block this traffic
  4. Infine, il routing definito dall'utente nella subnet front-end invia tutto il traffico in uscita da IIS01 al firewall come hop successivo. Il firewall lo considera come traffico asimmetrico ed elimina la risposta in uscita. Ci sono quindi tre livelli di difesa indipendenti tra Internet e IIS01 tramite il servizio cloud che impedisce l'accesso non autorizzato/non appropriato.Finally, the Frontend subnet UDR route would send any outbound traffic from IIS01 to the firewall as the next hop, and the firewall would see this as asymmetric traffic and drop the outbound response Thus there are at least three independent layers of defense between the internet and IIS01 via its cloud service preventing unauthorized/inappropriate access.

(Negato) Da Internet al server back-end(Denied) Internet to Backend Server

  1. L'utente Internet prova ad accedere a un file su AppVM01 tramite il servizio BackEnd001.CloudApp.Net.Internet user tries to access a file on AppVM01 through the BackEnd001.CloudApp.Net service
  2. Non essendoci endpoint aperti per la condivisione file, il traffico non passa attraverso il servizio cloud e non raggiunge il server.Since there are no endpoints open for file share, this would not pass the Cloud Service and wouldn’t reach the server
  3. In caso di apertura degli endpoint per qualunque motivo, il gruppo di sicurezza di rete (blocco Internet) bloccherà questo traffico.If the endpoints were open for some reason, the NSG (Block Internet) would block this traffic
  4. Infine, il routing definito dall'utente invia tutto il traffico in uscita da AppVM01 al firewall come hop successivo. Il firewall lo considera come traffico asimmetrico ed elimina la risposta in uscita. Ci sono quindi tre livelli di difesa indipendenti tra Internet e AppVM01 tramite il servizio cloud che impedisce l'accesso non autorizzato/non appropriato.Finally, the UDR route would send any outbound traffic from AppVM01 to the firewall as the next hop, and the firewall would see this as asymmetric traffic and drop the outbound response Thus there are at least three independent layers of defense between the internet and AppVM01 via its cloud service preventing unauthorized/inappropriate access.

(Negato) Da server front-end a server back-end(Denied) Frontend server to Backend Server

  1. Si supponga che IIS01 sia stato compromesso ed esegua codice dannoso tentando di analizzare i server sulla subnet back-end.Assume IIS01 was compromised and is running malicious code trying to scan the Backend subnet servers.
  2. Il routing definito dall'utente nella subnet front-end invia tutto il traffico in uscita da IIS01 al firewall come hop successivo.The Frontend subnet UDR route would send any outbound traffic from IIS01 to the firewall as the next hop. Questo comportamento potrebbe essere modificato dalla macchina virtuale compromessa.This is not something that can be altered by the compromised VM.
  3. Il firewall elabora il traffico. Se la richiesta era destinata ad AppVM01 o al server DNS per ricerche DNS, il traffico potrebbe essere consentito dal firewall, a causa delle regole firewall 7 e 9.The firewall would process the traffic, if the request was to AppVM01, or to the DNS server for DNS lookups that traffic could potentially be allowed by the firewall (due to FW Rules 7 and 9). Tutto il resto del traffico verrebbe bloccato dalla regola firewall 11 (Deny All).All other traffic would be blocked by FW Rule 11 (Deny All).
  4. Se sul firewall è stato abilitato il rilevamento delle minacce avanzato, che non viene descritto in questo documento e quindi occorre vedere la documentazione del fornitore per informazioni sulle funzionalità di rilevamento avanzato delle minacce per il dispositivo di rete specifico, anche il traffico consentito dalle regole di inoltro di base illustrate in questo documento potrebbe non essere consentito qualora contenga firme note o modelli che contrassegnano una regola riguardante minacce avanzate.If advanced threat detection was enabled on the firewall (which is not covered in this document, see the vendor documentation for your specific network appliance advanced threat capabilities), even traffic that would be allowed by the basic forwarding rules discussed in this document could be prevented if the traffic contained known signatures or patterns that flag an advanced threat rule.

(Negato) Ricerca DNS Internet sul server DNS(Denied) Internet DNS lookup on DNS server

  1. L'utente Internet prova a cercare un record DNS interno su DNS01 tramite il servizio BackEnd001.CloudApp.Net.Internet user tries to lookup an internal DNS record on DNS01 through BackEnd001.CloudApp.Net service
  2. Non essendoci endpoint aperti per il traffico DNS, questo non passa attraverso il servizio cloud e non raggiunge il server.Since there are no endpoints open for DNS traffic, this would not pass through the Cloud Service and wouldn’t reach the server
  3. In caso di apertura degli endpoint per qualunque motivo, la regola del gruppo di sicurezza di rete (blocco Internet) sulla subnet front-end bloccherà questo traffico.If the endpoints were open for some reason, the NSG rule (Block Internet) on the Frontend subnet would block this traffic
  4. Infine, il routing definito dall'utente nella subnet back-end invia tutto il traffico in uscita da DNS01 al firewall come hop successivo. Il firewall lo considera come traffico asimmetrico ed elimina la risposta in uscita. Ci sono quindi tre livelli di difesa indipendenti tra Internet e DNS01 tramite il servizio cloud che impedisce l'accesso non autorizzato/non appropriato.Finally, the Backend subnet UDR route would send any outbound traffic from DNS01 to the firewall as the next hop, and the firewall would see this as asymmetric traffic and drop the outbound response Thus there are at least three independent layers of defense between the internet and DNS01 via its cloud service preventing unauthorized/inappropriate access.

(Negato) Accesso da Internet a SQL tramite il firewall(Denied) Internet to SQL access through Firewall

  1. L'utente Internet richiede dati SQL a SecSvc001.CloudApp.Net (servizio cloud per Internet).Internet user requests SQL data from SecSvc001.CloudApp.Net (Internet Facing Cloud Service)
  2. Non essendoci endpoint aperti per SQL, il traffico non passa attraverso il servizio cloud e non raggiunge il server.Since there are no endpoints open for SQL, this would not pass the Cloud Service and wouldn’t reach the firewall
  3. In caso di apertura degli endpoint SQL per qualunque motivo, il firewall avvierà l'elaborazione della regola:If SQL endpoints were open for some reason, the firewall would begin rule processing:
    1. Regola firewall 1 (FW Mgmt) non applicabile, passa alla regola successiva.FW Rule 1 (FW Mgmt) doesn’t apply, move to next rule
    2. Regole firewall da 2 a 5 (regole RDP) non applicabili, passa alla regola successiva.FW Rules 2 - 5 (RDP Rules) don’t apply, move to next rule
    3. Regole firewall 6 e 7 (regole applicazione) non applicabili, passa alla regola successiva.FW Rule 6 & 7 (Application Rules) don’t apply, move to next rule
    4. Regole firewall 8 (a Internet) non applicabili, passa alla regola successiva.FW Rule 8 (To Internet) doesn’t apply, move to next rule
    5. Regola firewall 9 (DNS) non applicabile, passa alla regola successiva.FW Rule 9 (DNS) doesn’t apply, move to next rule
    6. Regola firewall 10 (tra subnet) non applicabile, passa alla regola successiva.FW Rule 10 (Intra-Subnet) doesn’t apply, move to next rule
    7. Regole firewall 11 (Deny All) applicabile, il traffico viene bloccato, l'elaborazione della regola si arresta.FW Rule 11 (Deny All) does apply, traffic is blocked, stop rule processing

RiferimentiReferences

Script principale e configurazione di reteMain Script and Network Config

Salvare lo script completo in un file di script PowerShell.Save the Full Script in a PowerShell script file. Salvare la configurazione di rete in un file denominato "NetworkConf2.xml".Save the Network Config into a file named “NetworkConf2.xml”. Modificare le variabili definite dall'utente secondo le esigenze.Modify the user defined variables as needed. Eseguire lo script, quindi seguire le istruzioni per la configurazione delle regole del firewall.Run the script, then follow the Firewall rule setup instruction above.

Script completoFull Script

In base alle variabili definite dall'utente, lo script consente di:This script will, based on the user defined variables:

  1. Connettersi a una sottoscrizione di AzureConnect to an Azure subscription
  2. Creare un nuovo account di archiviazione.Create a new storage account
  3. Creare una nuova rete virtuale e tre subnet, come definito nel file di configurazione di rete.Create a new VNet and three subnets as defined in the Network Config file
  4. Compilare cinque macchine virtuali, 1 firewall e 4 VM Windows Server.Build five virtual machines; 1 firewall and 4 windows server VMs
  5. Configurare il routing definito dall'utente, incluse le operazioni seguenti:Configure UDR including:
    1. Creazione di due nuove tabelle di route.Creating two new route tables
    2. Aggiunta di route alle tabelle.Add routes to the tables
    3. Associazione di tabelle alle subnet appropriate.Bind tables to appropriate subnets
  6. Abilitare l'inoltro IP sul dispositivo virtuale di rete.Enable IP Forwarding on the NVA
  7. Configurare il gruppo di sicurezza di rete, incluse le operazioni seguenti:Configure NSG including:
    1. Creazione di un gruppo di sicurezza di rete.Creating a NSG
    2. Aggiunta di una regola.Adding a rule
    3. Associazione del gruppo di sicurezza di rete alle subnet appropriate.Binding the NSG to the appropriate subnets

Questo script di PowerShell deve essere eseguito localmente in un server o un PC connesso a Internet.This PowerShell script should be run locally on an internet connected PC or server.

Importante

Quando si esegue lo script, in PowerShell potrebbero venire visualizzati avvisi o altri messaggi informativi.When this script is run, there may be warnings or other informational messages that pop in PowerShell. Solo i messaggi di errore formattati in rosso possono indicare un problema.Only error messages in red are cause for concern.

<# 
 .SYNOPSIS
  Example of DMZ and User Defined Routing in an isolated network (Azure only, no hybrid connections)

 .DESCRIPTION
  This script will build out a sample DMZ setup containing:
   - A default storage account for VM disks
   - Three new cloud services
   - Three Subnets (SecNet, FrontEnd, and BackEnd subnets)
   - A Network Virtual Appliance (NVA), in this case a Barracuda NextGen Firewall
   - One server on the FrontEnd Subnet
   - Three Servers on the BackEnd Subnet
   - IP Forwading from the FireWall out to the internet
   - User Defined Routing FrontEnd and BackEnd Subnets to the NVA

  Before running script, ensure the network configuration file is created in
  the directory referenced by $NetworkConfigFile variable (or update the
  variable to reflect the path and file name of the config file being used).

 .Notes
  Everyone's security requirements are different and can be addressed in a myriad of ways.
  Please be sure that any sensitive data or applications are behind the appropriate
  layer(s) of protection. This script serves as an example of some of the techniques
  that can be used, but should not be used for all scenarios. You are responsible to
  assess your security needs and the appropriate protections needed, and then effectively
  implement those protections.

  Security Service (SecNet subnet 10.0.0.0/24)
   myFirewall - 10.0.0.4

  FrontEnd Service (FrontEnd subnet 10.0.1.0/24)
   IIS01      - 10.0.1.4

  BackEnd Service (BackEnd subnet 10.0.2.0/24)
   DNS01      - 10.0.2.4
   AppVM01    - 10.0.2.5
   AppVM02    - 10.0.2.6

#>

# Fixed Variables
    $LocalAdminPwd = Read-Host -Prompt "Enter Local Admin Password to be used for all VMs"
    $VMName = @()
    $ServiceName = @()
    $VMFamily = @()
    $img = @()
    $size = @()
    $SubnetName = @()
    $VMIP = @()

# User Defined Global Variables
  # These should be changes to reflect your subscription and services
  # Invalid options will fail in the validation section

  # Subscription Access Details
    $subID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

  # VM Account, Location, and Storage Details
    $LocalAdmin = "theAdmin"
    $DeploymentLocation = "Central US"
    $StorageAccountName = "vmstore02"

  # Service Details
    $SecureService = "SecSvc001"
    $FrontEndService = "FrontEnd001"
    $BackEndService = "BackEnd001"

  # Network Details
    $VNetName = "CorpNetwork"
    $VNetPrefix = "10.0.0.0/16"
    $SecNet = "SecNet"
    $FESubnet = "FrontEnd"
    $FEPrefix = "10.0.1.0/24"
    $BESubnet = "BackEnd"
    $BEPrefix = "10.0.2.0/24"
    $NetworkConfigFile = "C:\Scripts\NetworkConf3.xml"

  # VM Base Disk Image Details
    $SrvImg = Get-AzureVMImage | Where {$_.ImageFamily -match 'Windows Server 2012 R2 Datacenter'} | sort PublishedDate -Descending | Select ImageName -First 1 | ForEach {$_.ImageName}
    $FWImg = Get-AzureVMImage | Where {$_.ImageFamily -match 'Barracuda NextGen Firewall'} | sort PublishedDate -Descending | Select ImageName -First 1 | ForEach {$_.ImageName}

  # UDR Details
    $FERouteTableName = "FrontEndSubnetRouteTable"
    $BERouteTableName = "BackEndSubnetRouteTable"

  # NSG Details
    $NSGName = "MyVNetSG"

# User Defined VM Specific Config
    # Note: To ensure UDR and IP forwarding is setup
    # properly this script requires VM 0 be the NVA.

    # VM 0 - The Network Virtual Appliance (NVA)
      $VMName += "myFirewall"
      $ServiceName += $SecureService
      $VMFamily += "Firewall"
      $img += $FWImg
      $size += "Small"
      $SubnetName += $SecNet
      $VMIP += "10.0.0.4"

    # VM 1 - The Web Server
      $VMName += "IIS01"
      $ServiceName += $FrontEndService
      $VMFamily += "Windows"
      $img += $SrvImg
      $size += "Standard_D3"
      $SubnetName += $FESubnet
      $VMIP += "10.0.1.4"

    # VM 2 - The First Appliaction Server
      $VMName += "AppVM01"
      $ServiceName += $BackEndService
      $VMFamily += "Windows"
      $img += $SrvImg
      $size += "Standard_D3"
      $SubnetName += $BESubnet
      $VMIP += "10.0.2.5"

    # VM 3 - The Second Appliaction Server
      $VMName += "AppVM02"
      $ServiceName += $BackEndService
      $VMFamily += "Windows"
      $img += $SrvImg
      $size += "Standard_D3"
      $SubnetName += $BESubnet
      $VMIP += "10.0.2.6"

    # VM 4 - The DNS Server
      $VMName += "DNS01"
      $ServiceName += $BackEndService
      $VMFamily += "Windows"
      $img += $SrvImg
      $size += "Standard_D3"
      $SubnetName += $BESubnet
      $VMIP += "10.0.2.4"

# ----------------------------- #
# No User Defined Varibles or   #
# Configuration past this point #
# ----------------------------- #

  # Get your Azure accounts
    Add-AzureAccount
    Set-AzureSubscription –SubscriptionId $subID -ErrorAction Stop
    Select-AzureSubscription -SubscriptionId $subID -Current -ErrorAction Stop

  # Create Storage Account
    If (Test-AzureName -Storage -Name $StorageAccountName) { 
        Write-Host "Fatal Error: This storage account name is already in use, please pick a diffrent name." -ForegroundColor Red
        Return}
    Else {Write-Host "Creating Storage Account" -ForegroundColor Cyan 
          New-AzureStorageAccount -Location $DeploymentLocation -StorageAccountName $StorageAccountName}

  # Update Subscription Pointer to New Storage Account
    Write-Host "Updating Subscription Pointer to New Storage Account" -ForegroundColor Cyan 
    Set-AzureSubscription –SubscriptionId $subID -CurrentStorageAccountName $StorageAccountName -ErrorAction Stop

# Validation
$FatalError = $false

If (-Not (Get-AzureLocation | Where {$_.DisplayName -eq $DeploymentLocation})) {
     Write-Host "This Azure Location was not found or available for use" -ForegroundColor Yellow
     $FatalError = $true}

If (Test-AzureName -Service -Name $SecureService) { 
    Write-Host "The SecureService service name is already in use, please pick a different service name." -ForegroundColor Yellow
    $FatalError = $true}
Else { Write-Host "The FrontEndService service name is valid for use." -ForegroundColor Green}

If (Test-AzureName -Service -Name $FrontEndService) { 
    Write-Host "The FrontEndService service name is already in use, please pick a different service name." -ForegroundColor Yellow
    $FatalError = $true}
Else { Write-Host "The FrontEndService service name is valid for use" -ForegroundColor Green}

If (Test-AzureName -Service -Name $BackEndService) { 
    Write-Host "The BackEndService service name is already in use, please pick a different service name." -ForegroundColor Yellow
    $FatalError = $true}
Else { Write-Host "The BackEndService service name is valid for use." -ForegroundColor Green}

If (-Not (Test-Path $NetworkConfigFile)) { 
    Write-Host 'The network config file was not found, please update the $NetworkConfigFile variable to point to the network config xml file.' -ForegroundColor Yellow
    $FatalError = $true}
Else { Write-Host "The network config file was found" -ForegroundColor Green
        If (-Not (Select-String -Pattern $DeploymentLocation -Path $NetworkConfigFile)) {
            Write-Host 'The deployment location was not found in the network config file, please check the network config file to ensure the $DeploymentLocation varible is correct and the netowrk config file matches.' -ForegroundColor Yellow
            $FatalError = $true}
        Else { Write-Host "The deployment location was found in the network config file." -ForegroundColor Green}}

If ($FatalError) {
    Write-Host "A fatal error has occured, please see the above messages for more information." -ForegroundColor Red
    Return}
Else { Write-Host "Validation passed, now building the environment." -ForegroundColor Green}

# Create VNET
    Write-Host "Creating VNET" -ForegroundColor Cyan 
    Set-AzureVNetConfig -ConfigurationPath $NetworkConfigFile -ErrorAction Stop

# Create Services
    Write-Host "Creating Services" -ForegroundColor Cyan
    New-AzureService -Location $DeploymentLocation -ServiceName $SecureService -ErrorAction Stop
    New-AzureService -Location $DeploymentLocation -ServiceName $FrontEndService -ErrorAction Stop
    New-AzureService -Location $DeploymentLocation -ServiceName $BackEndService -ErrorAction Stop

# Build VMs
    $i=0
    $VMName | Foreach {
        Write-Host "Building $($VMName[$i])" -ForegroundColor Cyan
        If ($VMFamily[$i] -eq "Firewall") 
            { 
            New-AzureVMConfig -Name $VMName[$i] -ImageName $img[$i] –InstanceSize $size[$i] | `
                Add-AzureProvisioningConfig -Linux -LinuxUser $LocalAdmin -Password $LocalAdminPwd  | `
                Set-AzureSubnet  –SubnetNames $SubnetName[$i] | `
                Set-AzureStaticVNetIP -IPAddress $VMIP[$i] | `
                New-AzureVM –ServiceName $ServiceName[$i] -VNetName $VNetName -Location $DeploymentLocation
            # Set up all the EndPoints we'll need once we're up and running
            # Note: All traffic goes through the firewall, so we'll need to set up all ports here.
            #       Also, the firewall will be redirecting traffic to a new IP and Port in a forwarding
            #       rule, so all of these endpoint have the same public and local port and the firewall
            #       will do the mapping, NATing, and/or redirection as declared in the firewall rules.
            Add-AzureEndpoint -Name "MgmtPort1" -Protocol tcp -PublicPort 801  -LocalPort 801  -VM (Get-AzureVM -ServiceName $ServiceName[$i] -Name $VMName[$i]) | Update-AzureVM
            Add-AzureEndpoint -Name "MgmtPort2" -Protocol tcp -PublicPort 807  -LocalPort 807  -VM (Get-AzureVM -ServiceName $ServiceName[$i] -Name $VMName[$i]) | Update-AzureVM
            Add-AzureEndpoint -Name "HTTP"      -Protocol tcp -PublicPort 80   -LocalPort 80   -VM (Get-AzureVM -ServiceName $ServiceName[$i] -Name $VMName[$i]) | Update-AzureVM
            Add-AzureEndpoint -Name "RDPWeb"    -Protocol tcp -PublicPort 8014 -LocalPort 8014 -VM (Get-AzureVM -ServiceName $ServiceName[$i] -Name $VMName[$i]) | Update-AzureVM
            Add-AzureEndpoint -Name "RDPApp1"   -Protocol tcp -PublicPort 8025 -LocalPort 8025 -VM (Get-AzureVM -ServiceName $ServiceName[$i] -Name $VMName[$i]) | Update-AzureVM
            Add-AzureEndpoint -Name "RDPApp2"   -Protocol tcp -PublicPort 8026 -LocalPort 8026 -VM (Get-AzureVM -ServiceName $ServiceName[$i] -Name $VMName[$i]) | Update-AzureVM
            Add-AzureEndpoint -Name "RDPDNS01"  -Protocol tcp -PublicPort 8024 -LocalPort 8024 -VM (Get-AzureVM -ServiceName $ServiceName[$i] -Name $VMName[$i]) | Update-AzureVM
            # Note: A SSH endpoint is automatically created on port 22 when the appliance is created.
            }
        Else
            {
            New-AzureVMConfig -Name $VMName[$i] -ImageName $img[$i] –InstanceSize $size[$i] | `
                Add-AzureProvisioningConfig -Windows -AdminUsername $LocalAdmin -Password $LocalAdminPwd  | `
                Set-AzureSubnet  –SubnetNames $SubnetName[$i] | `
                Set-AzureStaticVNetIP -IPAddress $VMIP[$i] | `
                Set-AzureVMMicrosoftAntimalwareExtension -AntimalwareConfiguration '{"AntimalwareEnabled" : true}' | `
                Remove-AzureEndpoint -Name "RemoteDesktop" | `
                Remove-AzureEndpoint -Name "PowerShell" | `
                New-AzureVM –ServiceName $ServiceName[$i] -VNetName $VNetName -Location $DeploymentLocation
            }
        $i++
    }

# Configure UDR and IP Forwarding
    Write-Host "Configuring UDR" -ForegroundColor Cyan

  # Create the Route Tables
    Write-Host "Creating the Route Tables" -ForegroundColor Cyan 
    New-AzureRouteTable -Name $BERouteTableName `
        -Location $DeploymentLocation `
        -Label "Route table for $BESubnet subnet"
    New-AzureRouteTable -Name $FERouteTableName `
        -Location $DeploymentLocation `
        -Label "Route table for $FESubnet subnet"

  # Add Routes to Route Tables
    Write-Host "Adding Routes to the Route Tables" -ForegroundColor Cyan 
    Get-AzureRouteTable $BERouteTableName `
        |Set-AzureRoute -RouteName "All traffic to FW" -AddressPrefix 0.0.0.0/0 `
        -NextHopType VirtualAppliance `
        -NextHopIpAddress $VMIP[0]
    Get-AzureRouteTable $BERouteTableName `
        |Set-AzureRoute -RouteName "Internal traffic to FW" -AddressPrefix $VNetPrefix `
        -NextHopType VirtualAppliance `
        -NextHopIpAddress $VMIP[0]
    Get-AzureRouteTable $BERouteTableName `
        |Set-AzureRoute -RouteName "Allow Intra-Subnet Traffic" -AddressPrefix $BEPrefix `
        -NextHopType VNETLocal
    Get-AzureRouteTable $FERouteTableName `
        |Set-AzureRoute -RouteName "All traffic to FW" -AddressPrefix 0.0.0.0/0 `
        -NextHopType VirtualAppliance `
        -NextHopIpAddress $VMIP[0]
    Get-AzureRouteTable $FERouteTableName `
        |Set-AzureRoute -RouteName "Internal traffic to FW" -AddressPrefix $VNetPrefix `
        -NextHopType VirtualAppliance `
        -NextHopIpAddress $VMIP[0]
    Get-AzureRouteTable $FERouteTableName `
        |Set-AzureRoute -RouteName "Allow Intra-Subnet Traffic" -AddressPrefix $FEPrefix `
        -NextHopType VNETLocal

  # Assoicate the Route Tables with the Subnets
    Write-Host "Binding Route Tables to the Subnets" -ForegroundColor Cyan 
    Set-AzureSubnetRouteTable -VirtualNetworkName $VNetName `
        -SubnetName $BESubnet `
        -RouteTableName $BERouteTableName
    Set-AzureSubnetRouteTable -VirtualNetworkName $VNetName `
        -SubnetName $FESubnet `
        -RouteTableName $FERouteTableName

 # Enable IP Forwarding on the Virtual Appliance
    Get-AzureVM -Name $VMName[0] -ServiceName $ServiceName[0] `
        |Set-AzureIPForwarding -Enable

# Configure NSG
    Write-Host "Configuring the Network Security Group (NSG)" -ForegroundColor Cyan

  # Build the NSG
    Write-Host "Building the NSG" -ForegroundColor Cyan
    New-AzureNetworkSecurityGroup -Name $NSGName -Location $DeploymentLocation -Label "Security group for $VNetName subnets in $DeploymentLocation"

  # Add NSG Rule
    Write-Host "Writing rules into the NSG" -ForegroundColor Cyan
    Get-AzureNetworkSecurityGroup -Name $NSGName | Set-AzureNetworkSecurityRule -Name "Isolate the $VNetName VNet from the Internet" -Type Inbound -Priority 100 -Action Deny `
        -SourceAddressPrefix INTERNET -SourcePortRange '*' `
        -DestinationAddressPrefix VIRTUAL_NETWORK -DestinationPortRange '*' `
        -Protocol *

  # Assign the NSG to two Subnets
    # The NSG is *not* bound to the Security Subnet. The result
    # is that internet traffic flows only to the Security subnet
    # since the NSG bound to the Frontend and Backback subnets
    # will Deny internet traffic to those subnets.
    Write-Host "Binding the NSG to two subnets" -ForegroundColor Cyan
    Set-AzureNetworkSecurityGroupToSubnet -Name $NSGName -SubnetName $FESubnet -VirtualNetworkName $VNetName
    Set-AzureNetworkSecurityGroupToSubnet -Name $NSGName -SubnetName $BESubnet -VirtualNetworkName $VNetName

# Optional Post-script Manual Configuration
  # Configure Firewall
  # Install Test Web App (Run Post-Build Script on the IIS Server)
  # Install Backend resource (Run Post-Build Script on the AppVM01)
  Write-Host
  Write-Host "Build Complete!" -ForegroundColor Green
  Write-Host
  Write-Host "Optional Post-script Manual Configuration Steps" -ForegroundColor Gray
  Write-Host " - Configure Firewall" -ForegroundColor Gray
  Write-Host " - Install Test Web App (Run Post-Build Script on the IIS Server)" -ForegroundColor Gray
  Write-Host " - Install Backend resource (Run Post-Build Script on the AppVM01)" -ForegroundColor Gray
  Write-Host

File di configurazione di reteNetwork Config File

Salvare questo file XML con il percorso aggiornato e aggiungere il collegamento a questo file nella variabile $NetworkConfigFile dello script precedente.Save this xml file with updated location and add the link to this file to the $NetworkConfigFile variable in the script above.

<NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration">
  <VirtualNetworkConfiguration>
    <Dns>
      <DnsServers>
        <DnsServer name="DNS01" IPAddress="10.0.2.4" />
        <DnsServer name="Level3" IPAddress="209.244.0.3" />
      </DnsServers>
    </Dns>
    <VirtualNetworkSites>
      <VirtualNetworkSite name="CorpNetwork" Location="Central US">
        <AddressSpace>
          <AddressPrefix>10.0.0.0/16</AddressPrefix>
        </AddressSpace>
        <Subnets>
          <Subnet name="SecNet">
            <AddressPrefix>10.0.0.0/24</AddressPrefix>
          </Subnet>
          <Subnet name="FrontEnd">
            <AddressPrefix>10.0.1.0/24</AddressPrefix>
          </Subnet>
          <Subnet name="BackEnd">
            <AddressPrefix>10.0.2.0/24</AddressPrefix>
          </Subnet>
        </Subnets>
        <DnsServersRef>
          <DnsServerRef name="DNS01" />
          <DnsServerRef name="Level3" />
        </DnsServersRef>
      </VirtualNetworkSite>
    </VirtualNetworkSites>
  </VirtualNetworkConfiguration>
</NetworkConfiguration>

Script di applicazione di esempioSample Application Scripts

Se si vuole installare un'applicazione di esempio per questo e altri esempi di rete perimetrale, è possibile trovarne una in Script di applicazione di esempioIf you wish to install a sample application for this, and other DMZ Examples, one has been provided at the following link: Sample Application Script