Rövid útmutató: A virtuális központ védelme a Azure Firewall Managerrel – Bicep
Ebben a rövid útmutatóban a Bicep használatával biztonságossá teheti a virtuális központot Azure Firewall Managerrel. Az üzembe helyezett tűzfal rendelkezik egy alkalmazásszabálysal, amely lehetővé teszi a kapcsolatok használatát a következőhöz www.microsoft.com
: . Két Windows Server 2019 rendszerű virtuális gép van üzembe helyezve a tűzfal teszteléséhez. A számítási feladat kiszolgálóhoz való csatlakozáshoz egy ugrókiszolgáló szolgál. A számítási feladat kiszolgálójáról csak a kiszolgálóhoz www.microsoft.com
csatlakozhat.
A Bicep egy tartományspecifikus nyelv (DSL), amely deklaratív szintaxist használ az Azure-erőforrások üzembe helyezéséhez. Tömör szintaxist, megbízható típusbiztonságot és a kód újrafelhasználásának támogatását biztosítja. A Bicep a legjobb szerzői élményt nyújtja az Azure-beli infrastruktúra-kódmegoldásokhoz.
A Azure Firewall Managerrel kapcsolatos további információkért lásd: Mi az a Azure Firewall Manager?.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Hozzon létre ingyenes fiókot.
A Bicep-fájl áttekintése
Ez a Bicep-fájl biztonságos virtuális központot hoz létre a Azure Firewall Manager használatával, valamint a forgatókönyv támogatásához szükséges erőforrásokat.
Az ebben a rövid útmutatóban használt Bicep-fájl az Azure Gyorsindítási sablonokból származik.
@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'
]
}
}
Több Azure-erőforrás van definiálva a Bicep-fájlban:
- 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
A Bicep-fájl üzembe helyezése
Mentse a Bicep-fájlt
main.bicep
a helyi számítógépre.Telepítse a Bicep-fájlt az Azure CLI vagy Azure PowerShell használatával.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters adminUsername=<admin-user>
Megjegyzés
Cserélje le <a rendszergazda-felhasználót> a kiszolgálók rendszergazdai bejelentkezési felhasználónevére. A rendszer kérni fogja, hogy adja meg az adminPassword kifejezést.
Amikor az üzembe helyezés befejeződik, egy üzenetnek kell megjelennie, amely jelzi, hogy az üzembe helyezés sikeres volt.
Az üzembe helyezés ellenőrzése
Az üzembe helyezett erőforrások áttekintéséhez használja az Azure CLI-t vagy a Azure PowerShell.
az resource list --resource-group exampleRG
Most tesztelje a tűzfalszabályokat annak ellenőrzéséhez, hogy az a várt módon működik-e.
A Azure Portal tekintse át a Workload-Srv virtuális gép hálózati beállításait, és jegyezze fel a privát IP-címet.
Csatlakoztassa a távoli asztalt a Jump-Srv virtuális géphez, és jelentkezzen be. Innen nyisson meg egy távoli asztali kapcsolatot a Workload-Srv privát IP-címmel .
Nyissa meg az Internet Explorert, és navigáljon a következő címre:
www.microsoft.com
.Válassza az OK>Bezárás lehetőséget az Internet Explorer biztonsági riasztásai között.
Ekkor megjelenik a Microsoft kezdőlapja.
Nyissa meg a következő címet:
www.google.com
.A tűzfal blokkolja a hozzáférést.
Most, hogy meggyőződett arról, hogy a tűzfalszabályok működnek, megkeresheti az engedélyezett teljes tartománynevet, másokat azonban nem.
Az erőforrások eltávolítása
Ha már nincs szüksége a tűzfallal létrehozott erőforrásokra, Azure Portal, Azure CLI vagy Azure PowerShell használatával törölje az erőforráscsoportot. Ezzel eltávolítja a tűzfalat és az összes kapcsolódó erőforrást.
az group delete --name exampleRG