Azure CLI kullanarak ağ güvenlik grubuyla ağ trafiğini filtreleme

Bir sanal ağ alt ağına gelen ve sanal ağ alt ağından giden ağ trafiğini, bir ağ güvenlik grubu ile filtreleyebilirsiniz. Ağ güvenlik grupları, ağ trafiğini IP adresi, bağlantı noktası ve protokole göre filtreleyen güvenlik kuralları içerir. Güvenlik kuralları bir alt ağda dağıtılmış kaynaklara uygulanır. Bu makalede şunları öğreneceksiniz:

  • Ağ güvenlik grubu ve güvenlik kuralları oluşturma
  • Bir sanal ağ oluşturma ve ağ güvenlik grubunu alt ağ ile ilişkilendirme
  • Sanal makineleri (VM) bir alt ağa dağıtma
  • Trafik filtrelerini test etme

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Ön koşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • 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ğ güvenlik grubu oluşturma

Bir ağ güvenlik grubu, güvenlik kuralları içerir. Güvenlik kuralları, bir kaynak ve hedefi belirtir. Kaynaklar ve hedefler, uygulama güvenlik grupları olabilir.

Uygulama güvenlik grupları oluşturma

İlk olarak az group create ile bu makalede oluşturulan tüm kaynaklar için bir kaynak grubu oluşturun. Aşağıdaki örnekte eastus konumunda bir kaynak grubu oluşturulmaktadır:

az group create \
  --name myResourceGroup \
  --location eastus

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 myResourceGroup \
  --name myAsgWebServers \
  --location eastus

az network asg create \
  --resource-group myResourceGroup \
  --name myAsgMgmtServers \
  --location eastus

Ağ güvenlik grubu oluşturma

az network nsg create ile bir ağ güvenlik grubu oluşturun. Aşağıdaki örnek myNsg adlı bir ağ güvenlik grubu oluşturur:

# Create a network security group
az network nsg create \
  --resource-group myResourceGroup \
  --name myNsg

Güvenlik kuralları oluşturma

az network nsg rule create ile bir güvenlik kuralı oluşturun. Aşağıdaki örnek, internetten gelen trafiğin 80 ve 443 numaralı bağlantı noktaları üzerinden myWebServers uygulama güvenlik grubuna gitmesine izin veren bir kural oluşturur:

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsg \
  --name Allow-Web-All \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 100 \
  --source-address-prefix Internet \
  --source-port-range "*" \
  --destination-asgs "myAsgWebServers" \
  --destination-port-range 80 443

Aşağıdaki örnek, 22 numaralı bağlantı noktası üzerinden İnternet'ten myMgmtServers uygulama güvenlik grubuna gelen trafiğe izin veren bir kural oluşturur:

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsg \
  --name Allow-SSH-All \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 110 \
  --source-address-prefix Internet \
  --source-port-range "*" \
  --destination-asgs "myAsgMgmtServers" \
  --destination-port-range 22

Bu makalede, myAsgMgmtServers VM için SSH (bağlantı noktası 22) İnternet'te kullanıma sunulur. Üretim ortamlarında, 22 numaralı bağlantı noktasını İnternet'e açmak yerine VPN veya özel ağ bağlantısı kullanarak yönetmek istediğiniz Azure kaynaklarına bağlanmanız önerilir.

Sanal ağ oluşturma

az network vnet create komutu ile bir sanal ağ oluşturun. Aşağıdaki örnek myVirtualNetwork adlı bir sanal ağ oluşturur:

az network vnet create \
  --name myVirtualNetwork \
  --resource-group myResourceGroup \
  --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 mySubnet adlı bir alt ağ ekler ve myNsg ağ güvenlik grubunu onunla ilişkilendirir:

az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name mySubnet \
  --address-prefix 10.0.0.0/24 \
  --network-security-group myNsg

Sanal makineleri oluşturma

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 görev yapacak bir VM oluşturur. bu seçenek Azure'ın --asgs myAsgWebServers VM için oluşturduğu ağ arabirimini myAsgWebServers uygulama güvenlik grubunun bir üyesi yapmasına neden olur.

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. Bu makaleyi kolaylaştırmak için bir parola kullanılır. Anahtarlar genellikle üretim dağıtımlarında kullanılır. Anahtarları kullanıyorsanız, kalan adımlar için SSH aracısı iletmeyi de yapılandırmanız gerekir. Daha fazla bilgi için SSH istemcinizin belgelerine bakın. Aşağıdaki komutta öğesini seçtiğiniz bir parolayla değiştirin <replace-with-your-password> .

adminPassword="<replace-with-your-password>"

az vm create \
  --resource-group myResourceGroup \
  --name myVmWeb \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet mySubnet \
  --nsg "" \
  --asgs myAsgWebServers \
  --admin-username azureuser \
  --admin-password $adminPassword

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/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVmWeb",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "13.90.242.231",
  "resourceGroup": "myResourceGroup"
}

publicIpAddress değerini not alın. Bu adres, sonraki bir adımda sanal makineye İnternet'ten erişmek için kullanılır. Yönetim sunucusu olarak görev yapacak bir VM oluşturun:

az vm create \
  --resource-group myResourceGroup \
  --name myVmMgmt \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet mySubnet \
  --nsg "" \
  --asgs myAsgMgmtServers \
  --admin-username azureuser \
  --admin-password $adminPassword

Sanal makinenin oluşturulması birkaç dakika sürer. VM oluşturulduktan sonra, döndürülen çıktıdaki publicIpAddress değerini not edin. Bu adres, sonraki adımda VM'ye erişmek için kullanılır. Azure VM oluşturma işlemini tamamlayana kadar sonraki adıma geçmeyin.

Trafik filtrelerini test etme

myVmMgmt VM ile SSH oturumu oluşturmak için aşağıdaki komutu kullanın. publicIpAddress değerini VM'nizin genel IP adresiyle değiştirin<.> Yukarıdaki örnekte IP adresi 13.90.242.231'dir.

ssh azureuser@<publicIpAddress>

Parola istendiğinde VM oluşturma bölümüne girdiğiniz parolayı girin.

Bağlantı başarılı olur, çünkü 22 numaralı bağlantı noktasının myVmMgmt VM'sine bağlı ağ arabiriminin içinde olduğu myAsgMgmtServers uygulama güvenlik grubuna İnternet'ten girmesine izin verilir.

myVmMgmt VM'sinden myVmWeb VM'sine SSH yapmak için aşağıdaki komutu kullanın:

ssh azureuser@myVmWeb

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. myAsgWebServers güvenlik kuralı İnternet'ten gelen 22 numaralı bağlantı noktasına izin vermediğinden, İnternet'ten myVmWeb VM'sine SSH yapamazsınız.

myVmWeb VM'sine nginx web sunucusunu 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 myVmWeb VM'sinin nginx alması için İnternet'e giden sanal makineye izin verilir. myVmMgmt VM'sinin isteminde username@myVmMgmt:~$ sizi bırakan myVmWeb SSH oturumundan çıkın. myVmWeb VM'sinden nginx hoş geldiniz ekranını almak için aşağıdaki komutu girin:

curl myVmWeb

myVmMgmt SANAL makinesinin oturumunu kapatın. myVmWeb web sunucusuna Azure dışından erişebildiğinizden emin olmak için kendi bilgisayarınızdan girincurl <publicIpAddress>. bağlantı noktası 80'in İnternet'ten myVmWeb VM'ye bağlı ağ arabiriminin içinde olduğu myAsgWebServers uygulama güvenlik grubuna girmesine izin verildiğinden bağlantı başarılı olur.

Kaynakları temizleme

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 myResourceGroup --yes

Sonraki adımlar

Bu makalede, bir ağ güvenlik grubu oluşturdunuz ve bunu bir sanal ağ alt ağıyla ilişkilendirdiyseniz. 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, alt ağlar arasındaki trafiği, örneğin, güvenlik duvarı olarak görev yapan bir VM aracılığıyla yönlendirmeyi seçebilirsiniz. Nasıl yapılacağını öğrenmek için bkz . Yol tablosu oluşturma.