Cvičení – vytvoření a správa skupin zabezpečení sítě

Dokončeno

Jako architekt řešení výrobní společnosti chcete nyní začít s přesunem aplikačních a databázových serverů ERP do Azure. Jako první krok otestujete plán zabezpečení sítě pomocí dvou serverů.

V této lekci nakonfigurujete skupinu zabezpečení sítě a pravidla zabezpečení k omezení síťového provozu na konkrétních serverech. Chcete, aby se váš aplikační server mohl připojovat k databázovému serveru přes HTTP. Nechcete, aby se databázový server mohl pomocí HTTP připojovat k aplikačnímu serveru.

Diagram of exercise scenario network security groups.

Vytvoření virtuální sítě a skupiny zabezpečení sítě

Nejprve vytvoříte virtuální síť a podsítě pro prostředky serveru. Potom vytvoříte skupinu zabezpečení sítě.

  1. Spuštěním následujícího příkazu v Azure Cloud Shellu přiřaďte skupinu prostředků sandboxu k proměnné rg:

    rg="<rgn>[sandbox resource group name]</rgn>"
    
  2. Pokud chcete vytvořit virtuální síť ERP-servers a podsíť Aplikace , spusťte v Cloud Shellu následující příkaz:

    az network vnet create \
        --resource-group $rg \
        --name ERP-servers \
        --address-prefixes 10.0.0.0/16 \
        --subnet-name Applications \
        --subnet-prefixes 10.0.0.0/24
    
  3. Pokud chcete vytvořit podsíť Databáze, spusťte v Cloud Shellu následující příkaz:

    az network vnet subnet create \
        --resource-group $rg \
        --vnet-name ERP-servers \
        --address-prefixes 10.0.1.0/24 \
        --name Databases
    
  4. Pokud chcete vytvořit skupinu zabezpečení sítě ERP-SERVERS-NSG , spusťte v Cloud Shellu následující příkaz:

    az network nsg create \
        --resource-group $rg \
        --name ERP-SERVERS-NSG
    

Vytvoření virtuálních počítačů s Ubuntu

Potom vytvoříte dva virtuální počítače nazvané AppServer a DataServer. AppServer nasaďte do podsítě Applications a DataServer do podsítě Databases. Přidejte síťová rozhraní virtuálních počítačů do skupiny zabezpečení sítě ERP-SERVERS-NSG. Tyto virtuální počítače pak použijete k otestování skupiny zabezpečení sítě.

  1. Pokud chcete sestavit virtuální počítač AppServer, spusťte v Cloud Shellu následující příkaz. Pro účet správce nahraďte <password> složitým heslem.

    wget -N https://raw.githubusercontent.com/MicrosoftDocs/mslearn-secure-and-isolate-with-nsg-and-service-endpoints/master/cloud-init.yml && \
    az vm create \
        --resource-group $rg \
        --name AppServer \
        --vnet-name ERP-servers \
        --subnet Applications \
        --nsg ERP-SERVERS-NSG \
        --image Ubuntu2204 \
        --size Standard_DS1_v2 \
         --generate-ssh-keys \
        --admin-username azureuser \
        --custom-data cloud-init.yml \
        --no-wait \
        --admin-password <password>
    
  2. Spuštěním následujícího příkazu v Cloud Shellu sestavte virtuální počítač DataServer . Pro účet správce nahraďte <password> složitým heslem.

    az vm create \
        --resource-group $rg \
        --name DataServer \
        --vnet-name ERP-servers \
        --subnet Databases \
        --nsg ERP-SERVERS-NSG \
        --size Standard_DS1_v2 \
        --image Ubuntu2204 \
        --generate-ssh-keys \
        --admin-username azureuser \
        --custom-data cloud-init.yml \
         --no-wait \
        --admin-password <password>
    
  3. Zprovoznění těchto virtuálních počítačů může trvat několik minut. Pokud chcete ověřit, že jsou virtuální počítače spuštěné, spusťte v Cloud Shellu následující příkaz:

    az vm list \
        --resource-group $rg \
        --show-details \
        --query "[*].{Name:name, Provisioned:provisioningState, Power:powerState}" \
        --output table
    

    Po dokončení vytváření virtuálního počítače by se měl zobrazit následující výstup:

    Name        Provisioned    Power
    ----------  -------------  ----------
    AppServer   Succeeded      VM running
    DataServer  Succeeded      VM running
    

Kontrola výchozího připojení

Teď se pro každý z vašich virtuálních počítačů pokuste otevřít relaci SSH (Secure Shell). Mějte na paměti, že zatím jste nasadili skupinu zabezpečení sítě s výchozími pravidly.

  1. Pro připojení k virtuálním počítačům použijte SSH přímo v Cloud Shellu. K tomu budete potřebovat veřejné IP adresy, které byly přiřazeny vašim virtuálním počítačům. Pokud chcete zobrazit seznam IP adres, které použijete pro připojení k virtuálním počítačům, spusťte v Cloud Shellu následující příkaz:

    az vm list \
        --resource-group $rg \
        --show-details \
        --query "[*].{Name:name, PrivateIP:privateIps, PublicIP:publicIps}" \
        --output table
    
  2. Pro usnadnění připojení k vašim virtuálním počítačům ve zbytku tohoto cvičení přiřaďte veřejné IP adresy proměnným. Pokud chcete uložit veřejnou IP adresu AppServeru a DataServeru do proměnné, spusťte v Cloud Shellu následující příkaz:

    APPSERVERIP="$(az vm list-ip-addresses \
                     --resource-group $rg \
                     --name AppServer \
                     --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
                     --output tsv)"
    
    DATASERVERIP="$(az vm list-ip-addresses \
                     --resource-group $rg \
                     --name DataServer \
                     --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
                     --output tsv)"
    
  3. Pokud chcete zkontrolovat, jestli se můžete připojit k virtuálnímu počítači AppServer , spusťte v Cloud Shellu následující příkaz:

    ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
    

    Zobrazí se zpráva Connection timed out.

  4. Pokud chcete zkontrolovat, jestli se můžete připojit k virtuálnímu počítači DataServer , spusťte v Cloud Shellu následující příkaz:

    ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
    

    Zobrazí se stejná zpráva o selhání připojení.

Nezapomeňte, že výchozí pravidla zakazují veškerý příchozí provoz do virtuální sítě, pokud tento provoz nepochází ze stejné virtuální sítě. Pravidlo Zakázat všechen příchozí provoz zablokovalo příchozí připojení SSH, o které jste se právě pokusili.

Příchozí

Název Priorita Zdrojová IP adresa Cílová IP adresa Přístup
Povolit příchozí provoz z virtuální sítě 65000 VIRTUAL_NETWORK VIRTUAL_NETWORK Povolit
Zakázat všechen příchozí provoz 65500 * * Odepřít

Vytvoření pravidla zabezpečení pro SSH

Jak jste si teď vyzkoušeli, výchozí pravidla ve vaší skupině zabezpečení sítě ERP-SERVERS-NSG zahrnují pravidlo Zakázat všechen příchozí provoz. Teď přidáte pravidlo, které vám umožní použít SSH pro připojení k počítačům AppServer a DataServer.

  1. Pokud chcete vytvořit nové příchozí pravidlo zabezpečení pro povolení přístupu SSH, spusťte v Cloud Shellu následující příkaz:

    az network nsg rule create \
        --resource-group $rg \
        --nsg-name ERP-SERVERS-NSG \
        --name AllowSSHRule \
        --direction Inbound \
        --priority 100 \
        --source-address-prefixes '*' \
        --source-port-ranges '*' \
        --destination-address-prefixes '*' \
        --destination-port-ranges 22 \
        --access Allow \
        --protocol Tcp \
        --description "Allow inbound SSH"
    
  2. Pokud chcete zkontrolovat, jestli se teď můžete připojit k virtuálnímu počítači AppServer , spusťte v Cloud Shellu následující příkaz:

    ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
    

    Může trvat pár minut, než se pravidlo skupiny zabezpečení sítě projeví. Pokud se zobrazí zpráva o selhání připojení, chvíli počkejte a zkuste to znovu.

  3. Teď byste se měli být schopni připojit. Po zobrazení zprávy Are you sure you want to continue connecting (yes/no)? zadejte yes.

  4. Zadejte heslo, které jste definovali při vytváření virtuálního počítače.

  5. Pokud chcete zavřít relaci AppServeru , zadejte exit.

  6. Pokud chcete zkontrolovat, jestli se teď můžete připojit k virtuálnímu počítači DataServer , spusťte v Cloud Shellu následující příkaz:

    ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
    
  7. Teď byste se měli být schopni připojit. Po zobrazení zprávy Are you sure you want to continue connecting (yes/no)? zadejte yes.

  8. Zadejte heslo, které jste definovali při vytváření virtuálního počítače.

  9. Zavřete relaci DataServer příkazem exit.

Vytvoření pravidla zabezpečení k zabránění webového přístupu

Teď přidejte pravidlo umožňující, aby AppServer mohl komunikovat s počítačem DataServer přes protokol HTTP, ale DataServer nemohl komunikovat s počítačem AppServer přes protokol HTTP. Toto jsou interní IP adresy pro tyto servery:

Název serveru IP adresa
AppServer 10.0.0.4
DataServer 10.0.1.4
  1. Pokud chcete vytvořit nové příchozí pravidlo zabezpečení pro odepření přístupu HTTP přes port 80, spusťte v Cloud Shellu následující příkaz:

    az network nsg rule create \
        --resource-group $rg \
        --nsg-name ERP-SERVERS-NSG \
        --name httpRule \
        --direction Inbound \
        --priority 150 \
        --source-address-prefixes 10.0.1.4 \
        --source-port-ranges '*' \
        --destination-address-prefixes 10.0.0.4 \
        --destination-port-ranges 80 \
        --access Deny \
        --protocol Tcp \
        --description "Deny from DataServer to AppServer on port 80"
    

Otestování připojení pomocí protokolu HTTP mezi virtuálními počítači

Tady otestujete, jestli vaše nové pravidlo funguje. AppServer by měl být schopný komunikovat s počítačem DataServer přes protokol HTTP. DataServer by neměl být schopný komunikovat s počítačem AppServer přes protokol HTTP.

  1. Pokud se chcete připojit k virtuálnímu počítači AppServer, spusťte v Cloud Shellu následující příkaz. Zkontrolujte, jestli AppServer může komunikovat s počítačem DataServer přes protokol HTTP.

    ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
    
  2. Zadejte heslo, které jste definovali při vytváření virtuálního počítače.

  3. Odpověď by měla obsahovat zprávu 200 OK.

  4. Pokud se chcete připojit k virtuálnímu počítači DataServer, spusťte v Cloud Shellu následující příkaz. Zkontrolujte, jestli DataServer může komunikovat s počítačem AppServer přes protokol HTTP.

    ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
    
  5. Zadejte heslo, které jste definovali při vytváření virtuálního počítače.

  6. Nemělo by se to povést, protože jste zablokovali přístup přes port 80. Po několika minutách by se měla zobrazit zpráva Connection timed out. Pokud chcete příkaz před vypršením časového limitu zastavit, stiskněte Ctrl+C.

Nasazení skupiny zabezpečení aplikace

Dále vytvořte skupinu zabezpečení aplikace pro databázové servery, aby všem serverům v této skupině bylo možné přiřadit stejná nastavení. Máte v plánu nasadit větší počet databázových serverů a chcete těmto serverům zabránit v přístupu k aplikačním serverům přes protokol HTTP. Když přiřadíte zdroje ve skupině zabezpečení aplikace, nemusíte ručně uchovávat seznam IP adres ve skupině zabezpečení sítě. Místo toho skupině zabezpečení aplikace přiřadíte síťová rozhraní virtuálních počítačů, které chcete spravovat.

Diagram of exercise scenario app security groups.

  1. Pokud chcete vytvořit novou skupinu zabezpečení aplikací s názvem ERP-DB-SERVERS-ASG, spusťte v Cloud Shellu následující příkaz:

    az network asg create \
        --resource-group $rg \
        --name ERP-DB-SERVERS-ASG
    
  2. Pokud chcete přidružit DataServer ke skupině zabezpečení aplikace, spusťte v Cloud Shellu následující příkaz:

    az network nic ip-config update \
        --resource-group $rg \
        --application-security-groups ERP-DB-SERVERS-ASG \
        --name ipconfigDataServer \
        --nic-name DataServerVMNic \
        --vnet-name ERP-servers \
        --subnet Databases
    
  3. Pokud chcete aktualizovat pravidlo HTTP ve skupině zabezpečení sítě ERP-SERVERS-NSG , spusťte v Cloud Shellu následující příkaz. Mělo by odkazovat na skupinu zabezpečení aplikace ERP-DB-Servers.

    az network nsg rule update \
        --resource-group $rg \
        --nsg-name ERP-SERVERS-NSG \
        --name httpRule \
        --direction Inbound \
        --priority 150 \
        --source-address-prefixes "" \
        --source-port-ranges '*' \
        --source-asgs ERP-DB-SERVERS-ASG \
        --destination-address-prefixes 10.0.0.4 \
        --destination-port-ranges 80 \
        --access Deny \
        --protocol Tcp \
        --description "Deny from DataServer to AppServer on port 80 using application security group"
    

Test aktualizovaného pravidla zabezpečení protokolu HTTP

  1. Pokud se chcete připojit k virtuálnímu počítači AppServer, spusťte v Cloud Shellu následující příkaz. Zkontrolujte, jestli AppServer může komunikovat s počítačem DataServer přes protokol HTTP.

    ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
    
  2. Zadejte heslo, které jste definovali při vytváření virtuálního počítače.

  3. Odpověď by stejně jako předtím měla obsahovat zprávu 200 OK. Může trvat několik minut, než se nastavení skupiny zabezpečení aplikace projeví. Pokud se vám hned nezobrazí zpráva 200 OK, počkejte minutu a pak to zkuste znovu.

  4. Pokud se chcete připojit k dataServeru, spusťte v Cloud Shellu následující příkaz. Zkontrolujte, jestli DataServer může komunikovat s počítačem AppServer přes protokol HTTP.

    ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
    
  5. Zadejte heslo, které jste definovali při vytváření virtuálního počítače.

  6. Stejně jako předtím by se to nemělo povést, protože jste zablokovali přístup přes port 80. Po několika minutách by se měla zobrazit zpráva Connection timed out. Pokud chcete příkaz před vypršením časového limitu zastavit, stiskněte Ctrl+C.

Teď jste potvrdili, že vaše pravidlo skupiny zabezpečení sítě funguje s použitím skupiny zabezpečení aplikace stejným způsobem jako při použití zdrojové IP adresy. Pokud jsme přidali další datové servery, mohli bychom snadno zajistit, aby měly správné zabezpečení sítě přidáním nových serverů do skupiny ERP-DB-SERVERS-ASG.