Cvičení – vytvoření a správa skupin zabezpečení sítě
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.
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ě.
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>"
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
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
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ě.
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>
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>
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.
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
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)"
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
.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 | Access |
---|---|---|---|---|
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.
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"
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.
Teď byste se měli být schopni připojit. Po zobrazení zprávy
Are you sure you want to continue connecting (yes/no)?
zadejteyes
.Zadejte heslo, které jste definovali při vytváření virtuálního počítače.
Pokud chcete zavřít relaci AppServeru , zadejte
exit
.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
Teď byste se měli být schopni připojit. Po zobrazení zprávy
Are you sure you want to continue connecting (yes/no)?
zadejteyes
.Zadejte heslo, které jste definovali při vytváření virtuálního počítače.
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 |
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.
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'
Zadejte heslo, které jste definovali při vytváření virtuálního počítače.
Odpověď by měla obsahovat zprávu
200 OK
.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'
Zadejte heslo, které jste definovali při vytváření virtuálního počítače.
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, vyberte 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.
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
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
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
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'
Zadejte heslo, které jste definovali při vytváření virtuálního počítače.
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áva200 OK
, počkejte minutu a pak to zkuste znovu.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'
Zadejte heslo, které jste definovali při vytváření virtuálního počítače.
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, vyberte 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.