Rychlý start: Zabezpečení virtuálního centra pomocí Azure Firewall Manageru – Bicep
V tomto rychlém startu použijete Bicep k zabezpečení virtuálního centra pomocí Azure Firewall Manageru. Nasazená brána firewall má pravidlo aplikace, které umožňuje připojení k www.microsoft.com
. Pro testování brány firewall jsou nasazené dva virtuální počítače s Windows Serverem 2019. Pro připojení k serveru úloh se používá jeden jump server. Ze serveru úloh se můžete připojit jenom k www.microsoft.com
.
Bicep je jazyk specifický pro doménu (DSL), který k nasazení prostředků Azure používá deklarativní syntaxi. Poskytuje stručnou syntaxi, spolehlivou bezpečnost typů a podporu opětovného použití kódu. Bicep nabízí nejlepší prostředí pro vytváření obsahu pro vaše řešení infrastruktury jako kódu v Azure.
Další informace o Azure Firewall Manageru najdete v tématu Co je Azure Firewall Manager?.
Požadavky
- Účet Azure s aktivním předplatným. Vytvořte si zdarma účet.
Kontrola souboru Bicep
Tento soubor Bicep vytvoří zabezpečené virtuální centrum s využitím Azure Firewall Manageru spolu s potřebnými prostředky pro podporu scénáře.
Soubor Bicep použitý v tomto rychlém startu je ze šablon Azure pro rychlý start.
@description('Admin username for the servers')
param adminUsername string
@description('Password for the admin account on the servers')
@secure()
param adminPassword string
@description('Location for all resources.')
param location string = resourceGroup().location
@description('Size of the virtual machine.')
param vmSize string = 'Standard_D2_v3'
resource virtualWan 'Microsoft.Network/virtualWans@2021-08-01' = {
name: 'VWan-01'
location: location
properties: {
disableVpnEncryption: false
allowBranchToBranchTraffic: true
type: 'Standard'
}
}
resource virtualHub 'Microsoft.Network/virtualHubs@2021-08-01' = {
name: 'Hub-01'
location: location
properties: {
addressPrefix: '10.1.0.0/16'
virtualWan: {
id: virtualWan.id
}
}
}
resource hubVNetconnection 'Microsoft.Network/virtualHubs/hubVirtualNetworkConnections@2021-08-01' = {
parent: virtualHub
name: 'hub-spoke'
dependsOn: [
firewall
]
properties: {
remoteVirtualNetwork: {
id: virtualNetwork.id
}
allowHubToRemoteVnetTransit: true
allowRemoteVnetToUseHubVnetGateways: false
enableInternetSecurity: true
routingConfiguration: {
associatedRouteTable: {
id: hubRouteTable.id
}
propagatedRouteTables: {
labels: [
'VNet'
]
ids: [
{
id: hubRouteTable.id
}
]
}
}
}
}
resource policy 'Microsoft.Network/firewallPolicies@2021-08-01' = {
name: 'Policy-01'
location: location
properties: {
threatIntelMode: 'Alert'
}
}
resource ruleCollectionGroup 'Microsoft.Network/firewallPolicies/ruleCollectionGroups@2021-08-01' = {
parent: policy
name: 'DefaultApplicationRuleCollectionGroup'
properties: {
priority: 300
ruleCollections: [
{
ruleCollectionType: 'FirewallPolicyFilterRuleCollection'
name: 'RC-01'
priority: 100
action: {
type: 'Allow'
}
rules: [
{
ruleType: 'ApplicationRule'
name: 'Allow-msft'
sourceAddresses: [
'*'
]
protocols: [
{
port: 80
protocolType: 'Http'
}
{
port: 443
protocolType: 'Https'
}
]
targetFqdns: [
'*.microsoft.com'
]
}
]
}
]
}
}
resource firewall 'Microsoft.Network/azureFirewalls@2021-08-01' = {
name: 'AzfwTest'
location: location
properties: {
sku: {
name: 'AZFW_Hub'
tier: 'Standard'
}
hubIPAddresses: {
publicIPs: {
count: 1
}
}
virtualHub: {
id: virtualHub.id
}
firewallPolicy: {
id: policy.id
}
}
}
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2021-08-01' = {
name: 'Spoke-01'
location: location
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
enableDdosProtection: false
enableVmProtection: false
}
}
resource subnet_Workload_SN 'Microsoft.Network/virtualNetworks/subnets@2021-08-01' = {
parent: virtualNetwork
name: 'Workload-SN'
properties: {
addressPrefix: '10.0.1.0/24'
privateEndpointNetworkPolicies: 'Enabled'
privateLinkServiceNetworkPolicies: 'Enabled'
}
}
resource subnet_Jump_SN 'Microsoft.Network/virtualNetworks/subnets@2021-08-01' = {
parent: virtualNetwork
name: 'Jump-SN'
dependsOn: [
subnet_Workload_SN
]
properties: {
addressPrefix: '10.0.2.0/24'
routeTable: {
id: routeTable.id
}
privateEndpointNetworkPolicies: 'Enabled'
privateLinkServiceNetworkPolicies: 'Enabled'
}
}
resource Jump_Srv 'Microsoft.Compute/virtualMachines@2022-03-01' = {
name: 'Jump-Srv'
location: location
properties: {
hardwareProfile: {
vmSize: vmSize
}
storageProfile: {
imageReference: {
publisher: 'MicrosoftWindowsServer'
offer: 'WindowsServer'
sku: '2019-Datacenter'
version: 'latest'
}
osDisk: {
osType: 'Windows'
createOption: 'FromImage'
caching: 'ReadWrite'
managedDisk: {
storageAccountType: 'StandardSSD_LRS'
}
diskSizeGB: 127
}
}
osProfile: {
computerName: 'Jump-Srv'
adminUsername: adminUsername
adminPassword: adminPassword
windowsConfiguration: {
provisionVMAgent: true
enableAutomaticUpdates: true
}
allowExtensionOperations: true
}
networkProfile: {
networkInterfaces: [
{
id: netInterface_jump_srv.id
}
]
}
}
}
resource Workload_Srv 'Microsoft.Compute/virtualMachines@2022-03-01' = {
name: 'Workload-Srv'
location: location
properties: {
hardwareProfile: {
vmSize: vmSize
}
storageProfile: {
imageReference: {
publisher: 'MicrosoftWindowsServer'
offer: 'WindowsServer'
sku: '2019-Datacenter'
version: 'latest'
}
osDisk: {
osType: 'Windows'
createOption: 'FromImage'
caching: 'ReadWrite'
managedDisk: {
storageAccountType: 'StandardSSD_LRS'
}
diskSizeGB: 127
}
}
osProfile: {
computerName: 'Workload-Srv'
adminUsername: adminUsername
adminPassword: adminPassword
windowsConfiguration: {
provisionVMAgent: true
enableAutomaticUpdates: true
}
allowExtensionOperations: true
}
networkProfile: {
networkInterfaces: [
{
id: netInterface_workload_srv.id
}
]
}
}
}
resource netInterface_workload_srv 'Microsoft.Network/networkInterfaces@2021-08-01' = {
name: 'netInterface-workload-srv'
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
subnet: {
id: subnet_Workload_SN.id
}
primary: true
privateIPAddressVersion: 'IPv4'
}
}
]
enableAcceleratedNetworking: false
enableIPForwarding: false
networkSecurityGroup: {
id: nsg_workload_srv.id
}
}
}
resource netInterface_jump_srv 'Microsoft.Network/networkInterfaces@2021-08-01' = {
name: 'netInterface-jump-srv'
location: location
properties: {
ipConfigurations: [
{
name: 'ipconfig1'
properties: {
privateIPAllocationMethod: 'Dynamic'
publicIPAddress: {
id: publicIP_jump_srv.id
}
subnet: {
id: subnet_Jump_SN.id
}
primary: true
privateIPAddressVersion: 'IPv4'
}
}
]
enableAcceleratedNetworking: false
enableIPForwarding: false
networkSecurityGroup: {
id: nsg_jump_srv.id
}
}
}
resource nsg_jump_srv 'Microsoft.Network/networkSecurityGroups@2021-08-01' = {
name: 'nsg-jump-srv'
location: location
properties: {
securityRules: [
{
name: 'RDP'
properties: {
protocol: 'Tcp'
sourcePortRange: '*'
destinationPortRange: '3389'
sourceAddressPrefix: '*'
destinationAddressPrefix: '*'
access: 'Allow'
priority: 300
direction: 'Inbound'
}
}
]
}
}
resource nsg_workload_srv 'Microsoft.Network/networkSecurityGroups@2021-08-01' = {
name: 'nsg-workload-srv'
location: location
properties: {}
}
resource publicIP_jump_srv 'Microsoft.Network/publicIPAddresses@2021-08-01' = {
name: 'publicIP-jump-srv'
location: location
sku: {
name: 'Standard'
}
properties: {
publicIPAddressVersion: 'IPv4'
publicIPAllocationMethod: 'Static'
idleTimeoutInMinutes: 4
}
}
resource routeTable 'Microsoft.Network/routeTables@2021-08-01' = {
name: 'RT-01'
location: location
properties: {
disableBgpRoutePropagation: false
routes: [
{
name: 'jump-to-inet'
properties: {
addressPrefix: '0.0.0.0/0'
nextHopType: 'Internet'
}
}
]
}
}
resource hubRouteTable 'Microsoft.Network/virtualHubs/hubRouteTables@2021-08-01' = {
parent: virtualHub
name: 'RT_VNet'
properties: {
routes: [
{
name: 'Workload-SNToFirewall'
destinationType: 'CIDR'
destinations: [
'10.0.1.0/24'
]
nextHopType: 'ResourceId'
nextHop: firewall.id
}
{
name: 'InternetToFirewall'
destinationType: 'CIDR'
destinations: [
'0.0.0.0/0'
]
nextHopType: 'ResourceId'
nextHop: firewall.id
}
]
labels: [
'VNet'
]
}
}
V souboru Bicep je definováno více prostředků Azure:
- Microsoft.Network/virtualWans
- Microsoft.Network/virtualHubs
- Microsoft.Network/firewallPolicies
- Microsoft.Network/azureFirewalls
- Microsoft.Network/virtualNetworks
- Microsoft.Compute/virtualMachines
- Microsoft.Storage/storageAccounts
- Microsoft.Network/networkInterfaces
- Microsoft.Network/networkSecurityGroups
- Microsoft.Network/publicIPAddresses
- Microsoft.Network/routeTables
Nasazení souboru Bicep
Uložte soubor Bicep jako
main.bicep
do místního počítače.Nasaďte soubor Bicep pomocí Azure CLI nebo Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters adminUsername=<admin-user>
Poznámka
Nahraďte <admin-user> přihlašovacím uživatelským jménem správce pro servery. Zobrazí se výzva k zadání adminPassword.
Po dokončení nasazení by se měla zobrazit zpráva oznamující, že nasazení bylo úspěšné.
Ověření nasazení
Ke kontrole nasazených prostředků použijte Azure CLI nebo Azure PowerShell.
az resource list --resource-group exampleRG
Teď otestujte pravidla brány firewall a ověřte, že fungují podle očekávání.
V Azure Portal zkontrolujte nastavení sítě pro virtuální počítač Workload-Srv a poznamenejte si privátní IP adresu.
Připojte vzdálenou plochu k virtuálnímu počítači Jump-Srv a přihlaste se. Odtud otevřete připojení ke vzdálené ploše k privátní IP adrese Workload-Srv .
Otevřete prohlížeč Internet Explorer a přejděte na adresu
www.microsoft.com
.Vyberte OK>Zavřít v výstrahách zabezpečení aplikace Internet Explorer.
Měla by se zobrazit domovská stránka Microsoftu.
Přejděte na adresu
www.google.com
.Brána firewall by vás měla zablokovat.
Teď jste ověřili, že pravidla brány firewall fungují, takže můžete přejít k jednomu povolenému plně kvalifikovanému názvu domény, ale ne k žádnému jinému.
Vyčištění prostředků
Pokud už prostředky vytvořené pomocí brány firewall nepotřebujete, použijte k odstranění skupiny prostředků Azure Portal, Azure CLI nebo Azure PowerShell. Tím se odebere brána firewall a všechny související prostředky.
az group delete --name exampleRG