Gyakorlat – Hálózati biztonsági csoportok létrehozása és kezelése

Befejeződött

A gyártó cég megoldástervezőjeként úgy döntött, hogy az ERP-alkalmazást és az adatbázis-kiszolgálókat szeretné áttelepíteni az Azure-ba. Első lépésként két kiszolgálóval fogja tesztelni a hálózati biztonsági tervet.

Ebben a leckében egy hálózati biztonsági csoportot fog konfigurálni olyan biztonsági szabályokkal, amelyekkel korlátozható az adott kiszolgálókra irányuló hálózati forgalom. Azt szeretné, hogy az alkalmazáskiszolgáló HTTP-n keresztül csatlakozhasson az adatbázis-kiszolgálóhoz. Azt viszont nem szeretné, hogy az adatbázis-kiszolgáló HTTP-n keresztül tudjon csatlakozni az alkalmazáskiszolgálóhoz.

Diagram of exercise scenario network security groups.

Egy virtuális hálózat és egy hálózati biztonsági csoport létrehozása

Először a virtuális hálózatot és az alhálózatokat fogja létrehozni a kiszolgálói erőforrásokhoz. Ezután egy hálózati biztonsági csoportot fog létrehozni.

  1. Az Azure Cloud Shellben futtassa a következő parancsot a tesztkörnyezet erőforráscsoportjának a változóhoz rgvaló hozzárendeléséhez:

    rg="<rgn>[sandbox resource group name]</rgn>"
    
  2. Az ERP-kiszolgálók virtuális hálózatának és az Alkalmazások alhálózatának létrehozásához futtassa a következő parancsot a Cloud Shellben:

    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. Az Adatbázisok alhálózat létrehozásához futtassa a következő parancsot a Cloud Shellben:

    az network vnet subnet create \
        --resource-group $rg \
        --vnet-name ERP-servers \
        --address-prefixes 10.0.1.0/24 \
        --name Databases
    
  4. Az ERP-Standard kiadás RVERS-NSG hálózati biztonsági csoport létrehozásához futtassa a következő parancsot a Cloud Shellben:

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

Ubuntut futtató virtuális gépek létrehozása

A következő lépésben két virtuális gépet (AppServer és DataServer) fog létrehozni. A központi AppServer az Applications alhálózaton, a DataServer pedig a Databases alhálózaton lesz üzembe helyezve. Adja hozzá a virtuális gépek hálózati adaptereit az ERP-SERVERS-NSG nevű hálózati biztonsági csoporthoz. Ezután a virtuális gépek használatával végezze el a hálózati biztonsági csoport tesztelését.

  1. Az AppServer virtuális gép létrehozásához futtassa a következő parancsot a Cloud Shellben. A rendszergazdai fiók esetében cserélje le <password> egy összetett jelszóra.

    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. A DataServer virtuális gép létrehozásához futtassa a következő parancsot a Cloud Shellben. A rendszergazdai fiók esetében cserélje le <password> egy összetett jelszóra.

    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. Eltarthat néhány percig, amíg a virtuális gépek futó állapotba kerülnek. A virtuális gépek futásának ellenőrzéséhez futtassa a következő parancsot a Cloud Shellben:

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

    Ha a virtuális gép létrehozása befejeződött, a következő kimenetnek kell megjelennie:

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

Az alapértelmezett kapcsolat ellenőrzése

Most minden egyes virtuális géphez egy SSH-munkamenetet fog megnyitni. Ne feledje, eddig egy hálózati biztonsági csoportot helyezett üzembe alapértelmezett szabályokkal.

  1. A virtuális gépekhez való csatlakozáshoz SSH-t használjon közvetlenül a Cloud Shellből. Ehhez szüksége lesz a virtuális gépekhez rendelt nyilvános IP-címekre. A virtuális gépekhez való csatlakozáshoz használt IP-címek listázásához futtassa a következő parancsot a Cloud Shellben:

    az vm list \
        --resource-group $rg \
        --show-details \
        --query "[*].{Name:name, PrivateIP:privateIps, PublicIP:publicIps}" \
        --output table
    
  2. Ha a gyakorlat további részében szeretné megkönnyíteni a virtuális gépekhez való csatlakozást, akkor a nyilvános IP-címeket változókhoz kell rendelnie. Ha az AppServer és a DataServer nyilvános IP-címét egy változóba szeretné menteni, futtassa a következő parancsot a Cloud Shellben:

    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. Annak ellenőrzéséhez, hogy tud-e csatlakozni az AppServer virtuális géphez, futtassa a következő parancsot a Cloud Shellben:

    ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
    

    Ekkor egy Connection timed out üzenetet fog kapni.

  4. Annak ellenőrzéséhez, hogy tud-e csatlakozni a DataServer virtuális géphez, futtassa a következő parancsot a Cloud Shellben:

    ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
    

    Ekkor ugyanaz a sikertelen csatlakozásról tájékoztató üzenet fog megjelenni.

Ne feledje, hogy az alapértelmezett szabályok a virtuális hálózat minden bejövő forgalmát letiltják, hacsak az adott forgalom nem ugyanarról a virtuális hálózatról érkezik. A Minden bejövő adatforgalom tiltása szabály elutasította az imént kezdeményezett SSH-kapcsolatokat.

Bejövő

Név Prioritás Forrás IP-címe Cél IP-címe Access
VNet bejövő forgalmának engedélyezése 65000 VIRTUAL_NETWORK VIRTUAL_NETWORK Engedélyezve
Minden bejövő forgalom letiltása 65500 * * Megtagadás

Biztonsági szabály létrehozása az SSH-hoz

Amint láthatta, az ERP-SERVERS-NSG hálózati biztonsági csoport alapértelmezett szabályai között egy Minden bejövő forgalom letiltása szabály is szerepel. Most egy szabályt fog hozzáadni, hogy használhassa az SSH-t az AppServer és a DataServer nevű virtuális gépekhez való csatlakozáshoz.

  1. Ha új bejövő biztonsági szabályt szeretne létrehozni az SSH-hozzáférés engedélyezéséhez, futtassa a következő parancsot a Cloud Shellben:

    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. Annak ellenőrzéséhez, hogy tud-e csatlakozni az AppServer virtuális géphez, futtassa a következő parancsot a Cloud Shellben:

    ssh azureuser@$APPSERVERIP -o ConnectTimeout=5
    

    A hálózati biztonsági csoport szabályának érvénybe lépése eltarthat egy-két percig. Ha kapcsolathiba üzenet jelenik meg, várjon egy kis időt, és próbálkozzon újra.

  3. Most már tudni fog csatlakozni. Az Are you sure you want to continue connecting (yes/no)? üzenet után írja be a yes kifejezést.

  4. Adja meg a virtuális gép létrehozásakor megadott jelszót.

  5. Az AppServer-munkamenet bezárásához írja be a következőtexit: .

  6. Annak ellenőrzéséhez, hogy most már csatlakozhat-e a DataServer virtuális géphez, futtassa a következő parancsot a Cloud Shellben:

    ssh azureuser@$DATASERVERIP -o ConnectTimeout=5
    
  7. Most már tudni fog csatlakozni. Az Are you sure you want to continue connecting (yes/no)? üzenet után írja be a yes kifejezést.

  8. Adja meg a virtuális gép létrehozásakor megadott jelszót.

  9. A DataServer munkamenetének bezárásához írja be a következőt: exit.

Biztonsági szabály létrehozása a webes hozzáférés megakadályozása céljából

Most egy szabályt fog hozzáadni, hogy az AppServer HTTP-n keresztül kommunikálhasson a DataServer virtuális gépel, de a DataServer ne tudjon HTTP-n keresztül kommunikálni az AppServer virtuális géppel. Az említett kiszolgálókhoz tartozó belső IP-címek a következők:

Kiszolgálónév IP address
AppServer 10.0.0.4
DataServer 10.0.1.4
  1. Ha új bejövő biztonsági szabályt szeretne létrehozni a HTTP-hozzáférés megtagadásához a 80-as porton keresztül, futtassa a következő parancsot a Cloud Shellben:

    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"
    

Virtuális gépek közötti HTTP-kapcsolat tesztelése

Most azt fogja ellenőrizni, hogy működik-e az új szabály. Az AppServer virtuális gépnek tudnia kell HTTP-n keresztül kommunikálni a DataServer virtuális géppel. A DataServer virtuális gépnek nem szabadna tudnia HTTP-n keresztül kommunikálni az AppServer virtuális géppel.

  1. Az AppServer virtuális géphez való csatlakozáshoz futtassa a következő parancsot a Cloud Shellben. Ellenőrizze, hogy az AppServer virtuális gépn tud-e HTTP-n keresztül kommunikálni a DataServer virtuális géppel.

    ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
    
  2. Adja meg a virtuális gép létrehozásakor megadott jelszót.

  3. A válaszban szerepelni fog egy 200 OK üzenetnek.

  4. A DataServer virtuális géphez való csatlakozáshoz futtassa a következő parancsot a Cloud Shellben. Ellenőrizze, hogy a DataServer virtuális gép tud-e HTTP-n keresztül kommunikálni az AppServer virtuális géppel.

    ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
    
  5. Adja meg a virtuális gép létrehozásakor megadott jelszót.

  6. Ez nem fog sikerülni, mivel már letiltotta a 80-as porton keresztüli hozzáférést. Néhány perc elteltével egy Connection timed out üzenetet kap. A parancs időtúllépés előtti leállításához nyomja le a Ctrl+C billentyűkombinációt.

Alkalmazásbiztonsági csoport üzembe helyezése

Ezután hozzon létre egy alkalmazásbiztonsági csoportot az adatbázis-kiszolgálókhoz, hogy a csoport összes kiszolgálója ugyanazokat a beállításokat rendelhesse hozzá. Több adatbázis-kiszolgáló üzembe helyezését tervezi, és szeretné megakadályozni, hogy ezek a kiszolgálók HTTP-n keresztül elérhessék az alkalmazáskiszolgálókat. Ha forrásokat rendel az alkalmazásbiztonsági csoporthoz, akkor nem kell manuálisan kezelnie a hálózati biztonsági csoport IP-cím-listáját. Ehelyett a kezelni kívánt virtuális gépek hálózati adapterét az alkalmazásbiztonsági csoporthoz rendeli hozzá.

Diagram of exercise scenario app security groups.

  1. Az ERP-DB-Standard kiadás RVERS-ASG nevű új alkalmazásbiztonsági csoport létrehozásához futtassa a következő parancsot a Cloud Shellben:

    az network asg create \
        --resource-group $rg \
        --name ERP-DB-SERVERS-ASG
    
  2. A DataServer alkalmazásbiztonsági csoporthoz való társításához futtassa a következő parancsot a Cloud Shellben:

    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. Az ERP-Standard kiadás RVERS-NSG hálózati biztonsági csoport HTTP-szabályának frissítéséhez futtassa a következő parancsot a Cloud Shellben. Ennek az ERP-DB-Servers alkalmazásbiztonsági csoportra kell hivatkoznia.

    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"
    

A frissített HTTP biztonsági szabály tesztelése

  1. Az AppServer virtuális géphez való csatlakozáshoz futtassa a következő parancsot a Cloud Shellben. Ellenőrizze, hogy az AppServer virtuális gépn tud-e HTTP-n keresztül kommunikálni a DataServer virtuális géppel.

    ssh -t azureuser@$APPSERVERIP 'wget http://10.0.1.4; exit; bash'
    
  2. Adja meg a virtuális gép létrehozásakor megadott jelszót.

  3. Ahogy korábban is, a válasz tartalmazni fog egy 200 OK üzenetet. Az alkalmazásbiztonsági csoport beállításainak érvénybe lépése eltarthat egy-két percig. Ha nem kapta meg a(z) 200 OK üzenetet, várjon néhány percet, és próbálkozzon újra.

  4. A DataServerhez való csatlakozáshoz futtassa a következő parancsot a Cloud Shellben. Ellenőrizze, hogy a DataServer virtuális gép tud-e HTTP-n keresztül kommunikálni az AppServer virtuális géppel.

    ssh -t azureuser@$DATASERVERIP 'wget http://10.0.0.4; exit; bash'
    
  5. Adja meg a virtuális gép létrehozásakor megadott jelszót.

  6. Ahogyan korábban, ez most sem fog sikerülni, mivel már letiltotta a 80-as porton keresztüli hozzáférést. Néhány perc elteltével egy Connection timed out üzenetet kap. A parancs időtúllépés előtti leállításához nyomja le a Ctrl+C billentyűkombinációt.

Most már megerősítette, hogy a hálózati biztonsági csoport szabálya ugyanúgy működik egy alkalmazásbiztonsági csoport használatával, mint a forrás IP-cím használatakor. Ha további adatkiszolgálókat adtunk hozzá, az új kiszolgálók ERP-DB-Standard kiadás RVERS-ASG-hez való hozzáadásával könnyen biztosíthatjuk a megfelelő hálózati biztonságot.