Azure sanal ağındaki Azure kaynaklarına gelen ve giden ağ trafiğini filtrelemek için bir ağ güvenlik grubu kullanabilirsiniz.
Ağ güvenlik grupları, ağ trafiğini IP adresi, bağlantı noktası ve protokole göre filtreleyen güvenlik kuralları içerir. Bir ağ güvenlik grubu bir alt ağ ile ilişkilendirildiğinde, bu alt ağda dağıtılan kaynaklara güvenlik kuralları uygulanır.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Ağ güvenlik grubu ve güvenlik kuralları oluşturma
- Uygulama güvenlik grupları oluşturma
- Bir sanal ağ oluşturma ve ağ güvenlik grubunu alt ağ ile ilişkilendirme
- Sanal makineleri dağıtma ve ağ arabirimlerini uygulama güvenlik gruplarıyla ilişkilendirme
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı.
Ücretsiz bir hesap oluşturabilirsiniz.
- Etkin aboneliği olan bir Azure hesabı.
Ücretsiz bir hesap oluşturabilirsiniz.
Azure Cloud Shell
Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.
Azure Cloud Shell'i başlatmak için:
Seçenek |
Örnek/Bağlantı |
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin.
Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. |
|
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. |
|
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. |
|
Azure Cloud Shell'i kullanmak için:
Cloud Shell'i başlatın.
Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.
Windows ve Linux'ta Ctrlveya macOS üzerinde Cmd+ seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.
Kodu veya komutu çalıştırmak için Enter'ı seçin.
PowerShell'i yerel olarak yükleyip kullanmayı seçerseniz, bu makale Için Azure PowerShell modülünün 1.0.0 veya sonraki bir sürümü gerekir. Yüklü sürümü bulmak için Get-Module -ListAvailable Az
komutunu çalıştırın. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme. PowerShell'i yerel olarak çalıştırıyorsanız Azure ile bağlantı oluşturmak için de komutunu çalıştırmanız Connect-AzAccount
gerekir.
Azure hesabınız yoksa, başlamadan önce ücretsiz hesap oluşturun.
- Bu makale, Azure CLI'nın 2.0.28 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.
Aşağıdaki yordam, bir kaynak alt ağına sahip bir sanal ağ oluşturur.
Portalda Sanal ağlar'ı arayın ve seçin.
Sanal ağlar sayfasında + Oluştur'u seçin.
Sanal ağ oluştur'un Temel Bilgiler sekmesinde aşağıdaki bilgileri girin veya seçin:
Ayar |
Değer |
Proje ayrıntıları |
|
Abonelik |
Aboneliğinizi seçin. |
Kaynak grubu |
Yeni oluştur’u seçin.
Ad alanına test-rg girin.
Tamam'ı seçin. |
Örnek ayrıntıları |
|
Veri Akışı Adı |
vnet-1 girin. |
Bölge |
Doğu ABD 2’yi seçin. |
Güvenlik sekmesine gitmek için İleri'yi seçin.
IP adresleri sekmesine gitmek için İleri'yi seçin.
Alt ağlar altındaki adres alanı kutusunda varsayılan alt ağı seçin.
Alt ağı düzenle bölmesinde aşağıdaki bilgileri girin veya seçin:
Ayar |
Değer |
Alt ağ ayrıntıları |
|
Alt ağ şablonu |
Varsayılan değeri Varsayılan olarak bırakın. |
Veri Akışı Adı |
subnet-1 girin. |
Başlangıç adresi |
Varsayılan değeri 10.0.0.0 olarak bırakın. |
Alt ağ boyutu |
Varsayılan /24(256 adres) olarak bırakın. |
Kaydet'i seçin.
Ekranın alt kısmındaki Gözden geçir ve oluştur'u seçin. Doğrulama başarılı olduktan sonra Oluştur'u seçin.
İlk olarak New-AzResourceGroup ile bu makalede oluşturulan tüm kaynaklar için bir kaynak grubu oluşturun. Aşağıdaki örnek westus2 konumunda bir kaynak grubu oluşturur:
$rg = @{
ResourceGroupName = "test-rg"
Location = "westus2"
}
New-AzResourceGroup @rg
New-AzVirtualNetwork ile bir sanal ağ oluşturun. Aşağıdaki örnek vnet-1 adlı bir sanal oluşturur:
$vnet = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "vnet-1"
AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork = New-AzVirtualNetwork @vnet
New-AzVirtualNetworkSubnetConfig ile bir alt ağ yapılandırması oluşturun ve ardından Alt ağ yapılandırmasını Set-AzVirtualNetwork ile sanal ağa yazın. Aşağıdaki örnek sanal ağa subnet-1 adlı bir alt ağ ekler ve nsg-1 ağ güvenlik grubunu bu ağ ile ilişkilendirir:
$subnet = @{
Name = "subnet-1"
VirtualNetwork = $virtualNetwork
AddressPrefix = "10.0.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnet
$virtualNetwork | Set-AzVirtualNetwork
İlk olarak az group create ile bu makalede oluşturulan tüm kaynaklar için bir kaynak grubu oluşturun. Aşağıdaki örnek westus2 konumunda bir kaynak grubu oluşturur:
az group create \
--name test-rg \
--location westus2
az network vnet create komutu ile bir sanal ağ oluşturun. Aşağıdaki örnek vnet-1 adlı bir sanal oluşturur:
az network vnet create \
--name vnet-1 \
--resource-group test-rg \
--address-prefixes 10.0.0.0/16
az network vnet subnet create ile bir sanal ağa alt ağ ekleyin. Aşağıdaki örnek sanal ağa subnet-1 adlı bir alt ağ ekler ve nsg-1 ağ güvenlik grubunu bu ağ ile ilişkilendirir:
az network vnet subnet create \
--vnet-name vnet-1 \
--resource-group test-rg \
--name subnet-1 \
--address-prefix 10.0.0.0/24
Uygulama güvenlik grupları oluşturma
Uygulama güvenlik grubu (ASG' ler), web sunucuları gibi benzer işlevlere sahip sunucuları gruplandırmanıza olanak tanır.
Portalın üst kısmındaki arama kutusuna Uygulama güvenlik grubu yazın. Arama sonuçlarında Uygulama güvenlik grupları'nı seçin.
+Oluştur'u seçin.
Uygulama güvenlik grubu oluştur'un Temel Bilgiler sekmesinde şu bilgileri girin veya seçin:
Ayar |
Değer |
Proje ayrıntıları |
|
Abonelik |
Aboneliğinizi seçin. |
Kaynak grubu |
test-rg öğesini seçin. |
Örnek ayrıntıları |
|
Veri Akışı Adı |
asg-web girin. |
Bölge |
Doğu ABD 2’yi seçin. |
Gözden geçir ve oluştur’u seçin.
+Oluştur'u seçin.
Aşağıdaki değerleri belirterek önceki adımları yineleyin:
Ayar |
Değer |
Proje ayrıntıları |
|
Abonelik |
Aboneliğinizi seçin. |
Kaynak grubu |
test-rg öğesini seçin. |
Örnek ayrıntıları |
|
Veri Akışı Adı |
asg-mgmt girin. |
Bölge |
Doğu ABD 2’yi seçin. |
Gözden geçir ve oluştur’u seçin.
Oluştur'u belirleyin.
New-AzApplicationSecurityGroup ile bir uygulama güvenlik grubu oluşturun. Uygulama güvenlik grubu, benzer bağlantı noktası filtreleme gereksinimlerine sahip sunucuları gruplandırmanızı sağlar. Aşağıdaki örnek iki uygulama güvenlik grubu oluşturur.
$web = @{
ResourceGroupName = "test-rg"
Name = "asg-web"
Location = "westus2"
}
$webAsg = New-AzApplicationSecurityGroup @web
$mgmt = @{
ResourceGroupName = "test-rg"
Name = "asg-mgmt"
Location = "westus2"
}
$mgmtAsg = New-AzApplicationSecurityGroup @mgmt
az network asg create ile bir uygulama güvenlik grubu oluşturun. Uygulama güvenlik grubu, benzer bağlantı noktası filtreleme gereksinimlerine sahip sunucuları gruplandırmanızı sağlar. Aşağıdaki örnek iki uygulama güvenlik grubu oluşturur.
az network asg create \
--resource-group test-rg \
--name asg-web \
--location westus2
az network asg create \
--resource-group test-rg \
--name asg-mgmt \
--location westus2
Ağ güvenlik grubu oluşturma
Ağ güvenlik grubu (NSG), sanal ağınızdaki ağ trafiğinin güvenliğini sağlar.
Portalın üst kısmındaki arama kutusuna Ağ güvenlik grubu yazın. Arama sonuçlarında Ağ güvenlik grupları'nı seçin.
Not
Ağ güvenlik gruplarının arama sonuçlarında Ağ güvenlik grupları (klasik) görebilirsiniz. Ağ güvenlik grupları'ı seçin.
+Oluştur'u seçin.
Ağ güvenlik grubu oluştur'un Temel Bilgiler sekmesinde şu bilgileri girin veya seçin:
Ayar |
Değer |
Proje ayrıntıları |
|
Abonelik |
Aboneliğinizi seçin. |
Kaynak grubu |
test-rg öğesini seçin. |
Örnek ayrıntıları |
|
Veri Akışı Adı |
nsg-1 girin. |
Konum |
Doğu ABD 2’yi seçin. |
Gözden geçir ve oluştur’u seçin.
Oluştur'u belirleyin.
New-AzNetworkSecurityGroup ile bir ağ güvenlik grubu oluşturun. Aşağıdaki örnek nsg-1 adlı bir ağ güvenlik grubu oluşturur:
$nsgParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "nsg-1"
}
$nsg = New-AzNetworkSecurityGroup @nsgParams
az network nsg create ile bir ağ güvenlik grubu oluşturun. Aşağıdaki örnek nsg-1 adlı bir ağ güvenlik grubu oluşturur:
# Create a network security group
az network nsg create \
--resource-group test-rg \
--name nsg-1
Ağ güvenlik grubunu alt ağ ile ilişkilendirme
Bu bölümde, ağ güvenlik grubunu daha önce oluşturduğunuz sanal ağın alt ağıyla ilişkilendirirsiniz.
Portalın üst kısmındaki arama kutusuna Ağ güvenlik grubu yazın. Arama sonuçlarında Ağ güvenlik grupları'nı seçin.
nsg-1'i seçin.
nsg-1'in Ayarlar bölümünde Alt ağlar'ı seçin.
Alt ağlar sayfasında + İlişkili'yi seçin:
Alt ağı ilişkilendir'in altında Sanal ağ için vnet-1 (test-rg) öğesini seçin.
Alt ağ için subnet-1'i ve ardından Tamam'ı seçin.
Get-AzVirtualNetwork komutunu kullanarak sanal ağ nesnesini alın ve ardından ağ güvenlik grubunu alt ağ ile ilişkilendirmek için Set-AzVirtualNetworkSubnetConfig komutunu kullanın. Aşağıdaki örnek sanal ağ nesnesini alır ve ağ güvenlik grubunu ilişkilendirmek için alt ağ yapılandırmasını güncelleştirir:
# Retrieve the virtual network
$vnet = Get-AzVirtualNetwork -Name "vnet-1" -ResourceGroupName "test-rg"
# Update the subnet configuration to associate the network security group
$subnetConfigParams = @{
VirtualNetwork = $vnet
Name = "subnet-1"
AddressPrefix = $vnet.Subnets[0].AddressPrefix
NetworkSecurityGroup = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
}
Set-AzVirtualNetworkSubnetConfig @subnetConfigParams
# Update the virtual network with the new subnet configuration
$vnet | Set-AzVirtualNetwork
Ağ güvenlik grubunu alt ağ ile ilişkilendirmek için az network vnet subnet update komutunu kullanın. Aşağıdaki örnek nsg-1 ağ güvenlik grubunu subnet-1 alt ağıyla ilişkilendirir:
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--network-security-group nsg-1
Güvenlik kuralları oluşturma
nsg-1'in Ayarlar bölümünden Gelen güvenlik kuralları'nı seçin.
Gelen güvenlik kuralları sayfasında + Ekle'yi seçin.
Asg-web uygulaması güvenlik grubuna 80 ve 443 bağlantı noktalarına izin veren bir güvenlik kuralı oluşturun.
Gelen güvenlik kuralı ekle sayfasında aşağıdaki bilgileri girin veya seçin:
Ayar |
Değer |
Kaynak |
Varsayılan değeri Any olarak bırakın. |
Kaynak bağlantı noktası aralıkları |
Varsayılan olarak (*) bırakın. |
Hedef |
Uygulama güvenlik grubu'nun seçin. |
Hedef uygulama güvenlik grupları |
asg-web'i seçin. |
Hizmet |
Varsayılan Özel seçeneğini değiştirmeyin. |
Hedef bağlantı noktası aralıkları |
80.443 girin. |
Protokol |
TCP’yi seçin. |
Eylem |
Varsayılan olarak İzin Ver'i bırakın. |
Öncelik |
Varsayılan değeri 100 olarak bırakın. |
Veri Akışı Adı |
Tümüne izin ver yazın. |
Ekle'yi seçin.
Önceki adımları aşağıdaki bilgilerle tamamlayın:
Ayar |
Değer |
Kaynak |
Varsayılan değeri Any olarak bırakın. |
Kaynak bağlantı noktası aralıkları |
Varsayılan olarak (*) bırakın. |
Hedef |
Uygulama güvenlik grubu'nun seçin. |
Hedef uygulama güvenlik grubu |
asg-mgmt öğesini seçin. |
Hizmet |
RDP'yi seçin. |
Eylem |
Varsayılan olarak İzin Ver'i bırakın. |
Öncelik |
Varsayılan değeri 110 olarak bırakın. |
Veri Akışı Adı |
allow-rdp-all girin. |
Ekle'yi seçin.
Dikkat
Bu makalede, ASP (bağlantı noktası 3389), asg-mgmt uygulama güvenlik grubuna atanan VM için İnternet'te kullanıma sunulur.
Üretim ortamlarında, 3389 numaralı bağlantı noktasını İnternet'e açmak yerine VPN, özel ağ bağlantısı veya Azure Bastion kullanarak yönetmek istediğiniz Azure kaynaklarına bağlanmanız önerilir.
Azure Bastion hakkında daha fazla bilgi için bkz . Azure Bastion nedir?.
New-AzNetworkSecurityRuleConfig ile bir güvenlik kuralı oluşturun. Aşağıdaki örnek, 80 ve 443 bağlantı noktaları üzerinden İnternet'ten asg-web uygulaması güvenlik grubuna gelen trafiğe izin veren bir kural oluşturur:
$webAsgParams = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$webAsg = Get-AzApplicationSecurityGroup @webAsgParams
$webRuleParams = @{
Name = "Allow-Web-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 100
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $webAsg.id
DestinationPortRange = 80,443
}
$webRule = New-AzNetworkSecurityRuleConfig @webRuleParams
Aşağıdaki örnek, 3389 numaralı bağlantı noktası üzerinden internetten asg-mgmt uygulama güvenlik grubuna gelen trafiğe izin veren bir kural oluşturur:
$mgmtAsgParams = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$mgmtAsg = Get-AzApplicationSecurityGroup @mgmtAsgParams
$mgmtRuleParams = @{
Name = "Allow-RDP-All"
Access = "Allow"
Protocol = "Tcp"
Direction = "Inbound"
Priority = 110
SourceAddressPrefix = "Internet"
SourcePortRange = "*"
DestinationApplicationSecurityGroupId = $mgmtAsg.id
DestinationPortRange = 3389
}
$mgmtRule = New-AzNetworkSecurityRuleConfig @mgmtRuleParams
Mevcut ağ güvenlik grubunu almak için Get-AzNetworkSecurityGroup kullanın ve ardından işleciyle +=
yeni kuralları ekleyin. Son olarak, ağ güvenlik grubunu Set-AzNetworkSecurityGroup ile güncelleştirin:
# Retrieve the existing network security group
$nsg = Get-AzNetworkSecurityGroup -Name "nsg-1" -ResourceGroupName "test-rg"
# Add the new rules to the security group
$nsg.SecurityRules += $webRule
$nsg.SecurityRules += $mgmtRule
# Update the network security group with the new rules
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
Dikkat
Bu makalede, ASP (bağlantı noktası 3389), asg-mgmt uygulama güvenlik grubuna atanan VM için İnternet'te kullanıma sunulur.
Üretim ortamlarında, 3389 numaralı bağlantı noktasını İnternet'e açmak yerine VPN, özel ağ bağlantısı veya Azure Bastion kullanarak yönetmek istediğiniz Azure kaynaklarına bağlanmanız önerilir.
Azure Bastion hakkında daha fazla bilgi için bkz . Azure Bastion nedir?.
az network nsg rule create ile bir güvenlik kuralı oluşturun. Aşağıdaki örnek, 80 ve 443 bağlantı noktaları üzerinden İnternet'ten asg-web uygulaması güvenlik grubuna gelen trafiğe izin veren bir kural oluşturur:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-Web-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 100 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-web" \
--destination-port-range 80 443
Aşağıdaki örnek, 22 numaralı bağlantı noktası üzerinden İnternet'ten asg-mgmt uygulama güvenlik grubuna gelen trafiğe izin veren bir kural oluşturur:
az network nsg rule create \
--resource-group test-rg \
--nsg-name nsg-1 \
--name Allow-SSH-All \
--access Allow \
--protocol Tcp \
--direction Inbound \
--priority 110 \
--source-address-prefix Internet \
--source-port-range "*" \
--destination-asgs "asg-mgmt" \
--destination-port-range 22
Dikkat
Bu makalede, asg-mgmt uygulama güvenlik grubuna atanan VM için SSH (bağlantı noktası 22) İnternet'e açıktır.
Üretim ortamlarında, 22 numaralı bağlantı noktasını İnternet'e açmak yerine VPN, özel ağ bağlantısı veya Azure Bastion kullanarak yönetmek istediğiniz Azure kaynaklarına bağlanmanız önerilir.
Azure Bastion hakkında daha fazla bilgi için bkz . Azure Bastion nedir?.
Sanal makineleri oluşturma
Sanal ağda iki sanal makine (VM) oluşturun.
Portalda Sanal makineler'i arayın ve seçin.
Sanal makineler'de + Oluştur'u ve ardından Azure sanal makinesi'ne tıklayın.
Sanal makine oluştur bölümünde, Temel Bilgiler sekmesinde bu bilgileri girin veya seçin:
Ayar |
Değer |
Proje ayrıntıları |
|
Abonelik |
Aboneliğinizi seçin. |
Kaynak grubu |
test-rg öğesini seçin. |
Örnek ayrıntıları |
|
Sanal makine ismi |
vm-web girin. |
Bölge |
(ABD) Doğu ABD 2'yi seçin. |
Kullanılabilirlik seçenekleri |
Altyapı yedekliliği gerekli değil varsayılanını değiştirmeyin. |
Güvenlik türü |
Standart'ı seçin. |
Görsel |
Windows Server 2022 Datacenter - x64 2. Nesil'i seçin. |
Azure Spot örneği |
Varsayılan olarak işaretlenmemiş olarak bırakın. |
Boyut |
Bir boyut seçin. |
Yönetici hesabı |
|
Kullanıcı adı |
Bir kullanıcı adı girin. |
Parola |
Bir parola girin. |
Parolayı onaylayın |
Parolayı yeniden girin. |
Gelen bağlantı noktası kuralları |
|
Gelen bağlantı noktalarını seçin |
Hiçbiri seçeneğini belirtin. |
İleri: Diskler'i ve ardından İleri: Ağ'ı seçin.
Ağ sekmesinde aşağıdaki bilgileri girin veya seçin:
Ayar |
Değer |
Ağ arabirimi |
|
Sanal ağ |
vnet-1'i seçin. |
Alt ağ |
subnet-1 (10.0.0.0/24) öğesini seçin. |
Genel IP |
Yeni bir genel IP'nin varsayılanını değiştirmeyin. |
NIC ağ güvenlik grubu |
Hiçbiri seçeneğini belirtin. |
Gözden Geçir + oluştur sekmesini seçin veya sayfanın en altındaki mavi Gözden Geçir + oluştur düğmesini seçin.
Oluştur'u belirleyin. VM'nin dağıtılması birkaç dakika sürebilir.
Vm-mgmt adlı ikinci bir sanal makine oluşturmak için önceki adımları yineleyin.
VM'leri oluşturmadan önce Get-AzVirtualNetwork alt ağıyla sanal ağ nesnesini alın:
$virtualNetworkParams = @{
Name = "vnet-1"
ResourceGroupName = "test-rg"
}
$virtualNetwork = Get-AzVirtualNetwork @virtualNetworkParams
New-AzPublicIpAddress ile her VM için bir genel IP adresi oluşturun:
$publicIpWebParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-web"
}
$publicIpWeb = New-AzPublicIpAddress @publicIpWebParams
$publicIpMgmtParams = @{
AllocationMethod = "Static"
ResourceGroupName = "test-rg"
Location = "westus2"
Name = "public-ip-vm-mgmt"
}
$publicIpMgmt = New-AzPublicIpAddress @publicIpMgmtParams
New-AzNetworkInterface ile iki ağ arabirimi oluşturun ve ağ arabirimine bir genel IP adresi atayın. Aşağıdaki örnek bir ağ arabirimi oluşturur ve public-ip-vm-web genel IP adresini bu arabirimle ilişkilendirir.
$webNicParams = @{
Location = "westus2"
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpWeb.Id
}
$webNic = New-AzNetworkInterface @webNicParams
Aşağıdaki örnek bir ağ arabirimi oluşturur ve public-ip-vm-mgmt genel IP adresini bu arabirimle ilişkilendirir.
$mgmtNicParams = @{
Location = "westus2"
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
SubnetId = $virtualNetwork.Subnets[0].Id
PublicIpAddressId = $publicIpMgmt.Id
}
$mgmtNic = New-AzNetworkInterface @mgmtNicParams
Daha sonraki bir adımda trafik filtrelemesini doğrulayabilmek için sanal ağda iki VM oluşturun.
New-AzVMConfig ile bir VM yapılandırması oluşturun ve ardından New-AzVM ile VM'yi oluşturun. Aşağıdaki örnek, web sunucusu olarak hizmet veren bir VM oluşturur.
-AsJob
seçeneği, sonraki adıma devam edebilmeniz için arka planda sanal makineyi oluşturur:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-web"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-web"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$webVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $webNic.Id
$webVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $webVmConfig
}
New-AzVM @webVmParams -AsJob
Yönetim sunucusu olarak görev yapacak bir VM oluşturun:
# Create user object
$cred = Get-Credential -Message "Enter a username and password for the virtual machine."
$webVmConfigParams = @{
VMName = "vm-mgmt"
VMSize = "Standard_DS1_V2"
}
$vmOSParams = @{
ComputerName = "vm-mgmt"
Credential = $cred
}
$vmImageParams = @{
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$mgmtVmConfig = New-AzVMConfig @webVmConfigParams | Set-AzVMOperatingSystem -Windows @vmOSParams | Set-AzVMSourceImage @vmImageParams | Add-AzVMNetworkInterface -Id $mgmtNic.Id
$mgmtVmParams = @{
ResourceGroupName = "test-rg"
Location = "westus2"
VM = $mgmtVmConfig
}
New-AzVM @mgmtVmParams
Sanal makinenin oluşturulması birkaç dakika sürer. Azure VM oluşturma işlemini tamamlayana kadar sonraki adıma geçmeyin.
Daha sonraki bir adımda trafik filtrelemesini doğrulayabilmek için sanal ağda iki VM oluşturun.
az vm create ile bir VM oluşturun. Aşağıdaki örnek, web sunucusu olarak hizmet veren bir VM oluşturur. Azure'ın --nsg ""
VM'yi oluşturduğunda Azure'ın oluşturduğu ağ arabirimi için varsayılan bir ağ güvenlik grubu oluşturmasını önlemek için seçeneği belirtilir. Komut, VM için bir parola oluşturmanızı ister. Bu örnekte, bu makaledeki sonraki adımları kolaylaştırmak için SSH anahtarları kullanılmaz. Üretim ortamında güvenlik için SSH anahtarlarını kullanın.
az vm create \
--resource-group test-rg \
--name vm-web \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--authentication-type password \
--assign-identity
Sanal makinenin oluşturulması birkaç dakika sürer. VM oluşturulduktan sonra aşağıdaki örneğe benzer bir çıkış döndürülür:
{
"fqdns": "",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/test-rg/providers/Microsoft.Compute/virtualMachines/vm-web",
"location": "westus2",
"macAddress": "00-0D-3A-23-9A-49",
"powerState": "VM running",
"privateIpAddress": "10.0.0.4",
"publicIpAddress": "203.0.113.24",
"resourceGroup": "test-rg"
}
az vm create ile bir VM oluşturun. Aşağıdaki örnek, yönetim sunucusu olarak hizmet veren bir VM oluşturur.
Aşağıdaki örnek bir VM oluşturur ve bir kullanıcı hesabı ekler. parametresi, --generate-ssh-keys
CLI'nın içinde ~/.ssh
kullanılabilir bir ssh anahtarı aramasına neden olur. Bir anahtar bulunursa, bu anahtar kullanılır. Değilse, bir tane oluşturulur ve içinde ~/.ssh
depolanır. Son olarak en son Ubuntu 22.04
görüntüyü dağıtacağız.
az vm create \
--resource-group test-rg \
--name vm-mgmt \
--image Ubuntu2204 \
--vnet-name vnet-1 \
--subnet subnet-1 \
--nsg "" \
--admin-username azureuser \
--generate-ssh-keys \
--assign-identity
Sanal makinenin oluşturulması birkaç dakika sürer. Azure VM oluşturma işlemini tamamlayana kadar sonraki adıma geçmeyin.
Ağ arabirimlerini ASG ile ilişkilendirme
VM'leri oluşturduğunuzda, Azure her VM için bir ağ arabirimi oluşturmuş ve vm'ye eklemiş.
Her vm'nin ağ arabirimini daha önce oluşturduğunuz uygulama güvenlik gruplarından birine ekleyin:
Portalın üst kısmındaki arama kutusuna Sanal makine yazın.
Arama sonuçlarında Sanal makineler'i ve ardından vm-web'i seçin.
vm-web'in Ağ bölümünden Uygulama güvenlik grupları'nı seçin.
Uygulama güvenlik grupları ekle'yi seçin, ardından Uygulama güvenlik grupları ekle sekmesinde asg-web'i seçin. Son olarak Ekle'yi seçin.
Uygulama güvenlik grupları ekle sekmesinde asg-mgmt'yi seçerek vm-mgmtiçin önceki adımları yineleyin.
Sanal makinenin ağ arabirimini almak için Get-AzNetworkInterface kullanın ve ardından uygulama güvenlik grubunu almak için Get-AzApplicationSecurityGroup kullanın. Son olarak, uygulama güvenlik grubunu ağ arabirimiyle ilişkilendirmek için Set-AzNetworkInterface komutunu kullanın. Aşağıdaki örnek, asg-web uygulaması güvenlik grubunu vm-web-nic ağ arabirimiyle ilişkilendirir:
$params1 = @{
Name = "vm-web-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-web"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
asg-mgmt uygulama güvenlik grubunu vm-mgmt-nic ağ arabirimiyle ilişkilendirmek için komutunu yineleyin.
$params1 = @{
Name = "vm-mgmt-nic"
ResourceGroupName = "test-rg"
}
$nic = Get-AzNetworkInterface @params1
$params2 = @{
Name = "asg-mgmt"
ResourceGroupName = "test-rg"
}
$asg = Get-AzApplicationSecurityGroup @params2
$nic.IpConfigurations[0].ApplicationSecurityGroups = @($asg)
$params3 = @{
NetworkInterface = $nic
}
Set-AzNetworkInterface @params3
Ağ arabirimini uygulama güvenlik grubuyla ilişkilendirmek için az network nic update komutunu kullanın. Aşağıdaki örnek, asg-web uygulaması güvenlik grubunu vm-web-nic ağ arabirimiyle ilişkilendirir:
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-web --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-web \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-web
asg-mgmt uygulama güvenlik grubunu vm-mgmt-nic ağ arabirimiyle ilişkilendirmek için komutunu yineleyin.
# Retrieve the network interface name associated with the virtual machine
nic_name=$(az vm show --resource-group test-rg --name vm-mgmt --query 'networkProfile.networkInterfaces[0].id' -o tsv | xargs basename)
# Associate the application security group with the network interface
az network nic ip-config update \
--name ipconfigvm-mgmt \
--nic-name $nic_name \
--resource-group test-rg \
--application-security-groups asg-mgmt
Trafik filtrelerini test etme
Portalın üst kısmındaki arama kutusuna Sanal makine yazın. Arama sonuçlarında Sanal makineler'i seçin.
vm-mgmt öğesini seçin.
Genel Bakış sayfasında Bağlandüğmesini ve ardından Yerel RDP'yi seçin.
RDP dosyasını indir’i seçin.
İndirilen rdp dosyasını açın ve Bağlan'ı seçin. VM'yi oluştururken belirttiğiniz kullanıcı adını ve parolayı girin.
Tamam'ı seçin.
Bağlantı işlemi sırasında bir sertifika uyarısı alabilirsiniz. Uyarıyı alırsanız, bağlantıya devam etmek için Evet veya Devam'ı seçin.
İnternet'ten asg-mgmt uygulama güvenlik grubuna gelen trafiğe 3389 numaralı bağlantı noktası üzerinden izin verildiğinden bağlantı başarılı olur.
vm-mgmt için ağ arabirimi asg-mgmt uygulama güvenlik grubuyla ilişkilendirilir ve bağlantıya izin verir.
vm-mgmt üzerinde bir PowerShell oturumu açın. Aşağıdakileri kullanarak vm-web'e bağlanın:
mstsc /v:vm-web
Aynı ağdaki sanal makineler varsayılan olarak herhangi bir bağlantı noktası üzerinden birbirleriyle iletişim kurabildiğinden, vm-mgmt'den vm-web'e RDP bağlantısı başarılı olur.
İnternet'ten vm-web sanal makinesine RDP bağlantısı oluşturamazsınız. asg-web güvenlik kuralı, 3389 numaralı bağlantı noktasına İnternet'ten gelen bağlantıları engeller. İnternet'ten gelen trafik varsayılan olarak tüm kaynaklara reddedilir.
Microsoft IIS'yi vm-web sanal makinesine yüklemek için, vm-web sanal makinesindeki bir PowerShell oturumundan aşağıdaki komutu girin:
Install-WindowsFeature -name Web-Server -IncludeManagementTools
IIS yüklemesi tamamlandıktan sonra, sizi vm-mgmt sanal makinesi uzak masaüstü bağlantısında bırakan vm-web sanal makinesi bağlantısını kesin.
vm-mgmt VM bağlantısını kesin.
Portal arama kutusunda vm-web araması yapın.
vm-web'in Genel Bakış sayfasında VM'nizin Genel IP adresini not edin. Aşağıdaki örnekte gösterilen adres 203.0.113.103'dür. Adresiniz farklı:
vm-web web sunucusuna İnternet'ten erişebildiğinizden emin olmak için, bilgisayarınızda bir internet tarayıcısı açın ve adresine http://<public-ip-address-from-previous-step>
gidin.
İnternet'ten asg-web uygulaması güvenlik grubuna gelen trafiğe bağlantı noktası 80 üzerinden izin verildiğinden IIS varsayılan sayfasını görürsünüz.
vm-web için eklenen ağ arabirimi asg-web uygulaması güvenlik grubuyla ilişkilendirilir ve bağlantıya izin verir.
Bir VM'nin genel IP adresini döndürmek için Get-AzPublicIpAddress komutunu kullanın. Aşağıdaki örnek, vm-mgmt VM'sinin genel IP adresini döndürür:
$params = @{
Name = "public-ip-vm-mgmt"
ResourceGroupName = "test-rg"
}
$publicIP = Get-AzPublicIpAddress @params | Select IpAddress
Yerel bilgisayarınızdan vm-mgmt VM ile bir uzak masaüstü oturumu oluşturmak için aşağıdaki komutu kullanın.
mstsc /v:$publicIP
VM'yi oluştururken belirttiğiniz kullanıcı adını ve parolayı girin (VM'yi oluştururken girdiğiniz kimlik bilgilerini belirtmek için Diğer seçenekler'i ve ardından Farklı bir hesap kullan'ı seçmeniz gerekebilir) ve ardından Tamam'ı seçin. Oturum açma işlemi sırasında bir sertifika uyarısı alabilirsiniz. Bağlantıya devam etmek için Evet’i seçin.
Bağlantı başarılı olur. 3389 numaralı bağlantı noktasının internetten asg-mgmt uygulama güvenlik grubuna girmesine izin verilir. vm-mgmt VM'sine bağlı ağ arabirimi bu gruptadır.
PowerShell'den vm-mgmt VM'sinden vm-web VM'sine uzak masaüstü bağlantısı oluşturmak için aşağıdaki komutu kullanın:
mstsc /v:vm-web
Her bir ağ güvenlik grubu içindeki varsayılan güvenlik kuralı bir sanal ağ içindeki tüm IP adresleri arasında tüm bağlantı noktaları üzerinden trafiğe izin verdiği için bağlantı başarılı olur. asg-web için güvenlik kuralı 3389 numaralı bağlantı noktasının İnternet'ten gelen bağlantı noktasına izin vermediğinden, sanal makine-web VM'sine İnternet'ten uzak masaüstü bağlantısı oluşturamazsınız.
PowerShell'den vm-web VM'sine Microsoft IIS yüklemek için aşağıdaki komutu kullanın:
Install-WindowsFeature -name Web-Server -IncludeManagementTools
IIS yüklemesi tamamlandıktan sonra, sizi vm-mgmt VM uzak masaüstü bağlantısında bırakan vm-web VM bağlantısını kesin. IIS karşılama ekranını görüntülemek için bir internet tarayıcısı açın ve http://vm-web.
vm-mgmt VM bağlantısını kesin.
Bilgisayarınızda, vm-web sunucusunun genel IP adresini almak için PowerShell'den aşağıdaki komutu girin:
$params = @{
Name = "public-ip-vm-web"
ResourceGroupName = "test-rg"
}
Get-AzPublicIpAddress @params | Select IpAddress
Vm-web web sunucusuna Azure dışından erişebildiğinizden emin olmak için, bilgisayarınızda bir internet tarayıcısı açın ve adresine http://<public-ip-address-from-previous-step>
gidin. Bağlantı başarılı olur. 80 numaralı bağlantı noktasının internetten asg-web uygulaması güvenlik grubuna girmesine izin verilir. vm-web VM'sine eklenen ağ arabirimi bu gruptadır.
Seçtiğiniz bir SSH istemcisini kullanarak daha önce oluşturulan VM'lere bağlanın. Örneğin, aşağıdaki komut vm-mgmt VM ile SSH oturumu oluşturmak için Linux için Windows Alt Sistemi gibi bir komut satırı arabiriminden kullanılabilir. Microsoft Entra Id kimlik bilgilerinizi kullanarak sanal makinelerde oturum açabilir veya VM'leri oluşturmak için kullandığınız SSH anahtarını kullanabilirsiniz. Aşağıdaki örnekte, yönetim VM'sinde oturum açmak ve ardından yönetim VM'sinden web VM'sinde parolayla oturum açmak için SSH anahtarını kullanırız.
Linux VM'sinde SSH yapma ve Microsoft Entra KIMLIĞI ile oturum açma hakkında daha fazla bilgi için bkz . Microsoft Entra ID ve OpenSSH kullanarak Azure'da Linux sanal makinesinde oturum açma.
SSH için VM'nin IP adresini depolama
VM'nin IP adresini ortam değişkeni olarak depolamak için aşağıdaki komutu çalıştırın:
export IP_ADDRESS=$(az vm show --show-details --resource-group test-rg --name vm-mgmt --query publicIps --output tsv)
ssh -o StrictHostKeyChecking=no azureuser@$IP_ADDRESS
vm-mgmt VM'sine bağlı ağ arabirimi asg-mgmt uygulama güvenlik grubunda olduğundan bağlantı başarılı olur ve bu da 22 numaralı bağlantı noktasının İnternet'ten gelen bağlantı noktasına izin verir.
Vm-mgmt VM'sinden vm-web VM'sine SSH yapmak için aşağıdaki komutu kullanın:
ssh -o StrictHostKeyChecking=no azureuser@vm-web
Her bir ağ güvenlik grubu içindeki varsayılan güvenlik kuralı bir sanal ağ içindeki tüm IP adresleri arasında tüm bağlantı noktaları üzerinden trafiğe izin verdiği için bağlantı başarılı olur. Asg-web güvenlik kuralı İnternet'ten gelen 22 numaralı bağlantı noktasına izin vermediğinden, vm-web VM'sine İnternet'ten SSH yapamazsınız.
nginx web sunucusunu vm-web VM'sine yüklemek için aşağıdaki komutları kullanın:
# Update package source
sudo apt-get -y update
# Install NGINX
sudo apt-get -y install nginx
Varsayılan güvenlik kuralı İnternet'e giden tüm trafiğe izin verdiğinden vm-web VM'sinin nginx alması için İnternet'e giden sanal makineye izin verilir.
çıkın. vm-web VM'sinden nginx karşılama ekranını almak için aşağıdaki komutu girin:
curl vm-web
vm-mgmt VM oturumunu kapatın. Vm-web web sunucusuna Azure dışından erişebildiğinizden emin olmak için kendi bilgisayarınızdan girincurl <publicIpAddress>
. Vm-web VM'sine bağlı ağ arabiriminin bulunduğu asg-web uygulaması güvenlik grubu İnternet'ten gelen 80 numaralı bağlantı noktasına izin verdiğinden bağlantı başarılı olur.
Oluşturduğunuz kaynakları kullanmayı bitirdiğinizde, kaynak grubunu ve tüm kaynaklarını silebilirsiniz.
Azure portalında Kaynak grupları'nı arayın ve seçin.
Kaynak grupları sayfasında test-rg kaynak grubunu seçin.
test-rg sayfasında Kaynak grubunu sil'i seçin.
Silme işlemini onaylamak için Kaynak grubu adını girin alanına test-rg yazın ve ardından Sil'i seçin.
Artık gerekli olmadığında az group delete komutunu kullanarak kaynak grubunu ve içerdiği tüm kaynakları kaldırın.
az group delete \
--name test-rg \
--yes \
--no-wait
Sonraki adımlar
Bu öğreticide şunları yaptınız:
- Bir ağ güvenlik grubu oluşturup bunu bir sanal ağ alt ağıyla ilişkilendirdi.
- Web ve yönetim için uygulama güvenlik grupları oluşturuldu.
- İki sanal makine oluşturdunuz ve ağ arabirimlerini uygulama güvenlik gruplarıyla ilişkilendirdi.
- Uygulama güvenlik grubu ağ filtrelemesi test edildi.
Ağ güvenlik grupları hakkında daha fazla bilgi edinmek bkz. Ağ güvenlik grubuna genel bakış ve Ağ güvenlik grubunu yönetme.
Azure, varsayılan olarak trafiği alt ağlar arasında yönlendirir. Bunun yerine, örneğin güvenlik duvarı olarak hizmet veren bir VM aracılığıyla alt ağlar arasındaki trafiği yönlendirmeyi seçebilirsiniz.
Yönlendirme tablosu oluşturma hakkında bilgi edinmek için sonraki öğreticiye geçin.