Ćwiczenie — konfigurowanie dostępu do sieci

Zakończone

W tym ćwiczeniu skonfigurujesz dostęp do maszyny wirtualnej utworzonej wcześniej w tym module.

Ważne

Maszyna wirtualna dla tego ćwiczenia została utworzona wcześniej w tym module. Jeśli usunięto maszynę wirtualną lub grupę zasobów utworzoną w lekcji 3, musisz ponownie wykonać poprzednie ćwiczenie (Ćwiczenie — tworzenie maszyny wirtualnej platformy Azure).

W tej chwili utworzona i zainstalowana maszyna wirtualna Nginx w poprzednim ćwiczeniu nie jest dostępna z Internetu. W tym ćwiczeniu utworzysz sieciową grupę zabezpieczeń, która ulegnie zmianie, zezwalając na przychodzący dostęp HTTP na porcie 80.

Uwaga

Ważne jest, aby korzystasz z usługi Cloud Shell w wersji BASH dla niektórych poleceń w tym ćwiczeniu. Jeśli jesteś obecnie w trybie programu PowerShell, możesz użyć przycisku Przełącz do ...

Zadanie 1. Uzyskiwanie dostępu do serwera internetowego

W tej procedurze uzyskasz adres IP maszyny wirtualnej i podejmiesz próbę uzyskania dostępu do strony głównej serwera internetowego.

  1. Uruchom następujące polecenie az vm list-ip-addresses, aby uzyskać adres IP maszyny wirtualnej i zapisać wynik jako zmienną Bash:

    IPADDRESS="$(az vm list-ip-addresses \
      --resource-group "IntroAzureRG" \
      --name my-vm \
      --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
      --output tsv)"    
    
  2. Uruchom następujące polecenie curl, aby pobrać stronę główną:

    curl --connect-timeout 5 http://$IPADDRESS
    

    Argument --connect-timeout określa, że nawiązywanie połączenia może potrwać do pięciu sekund. Po upływie pięciu sekund zostanie wyświetlony komunikat o błędzie z informacją, że upłynął limit czasu połączenia:

    curl: (28) Connection timed out after 5001 milliseconds
    

    Ten komunikat oznacza, że maszyna wirtualna nie była dostępna w czasie ograniczenia czasowego.

  3. Opcjonalnie spróbuj uzyskać dostęp do serwera internetowego z przeglądarki:

    1. Uruchom następujące polecenie, aby wydrukować adres IP maszyny wirtualnej w konsoli programu:

      echo $IPADDRESS       
      

      Zobaczysz adres IP, na przykład 23.102.42.235.

    2. Skopiuj widoczny adres IP do schowka.

    3. Otwórz nową kartę przeglądarki i przejdź do serwera internetowego. Po chwili zobaczysz, że połączenie nie jest nawiązywane. Jeśli poczekasz, aż przeglądarka przekroczy limit czasu, zobaczysz coś podobnego:

      Zrzut ekranu przedstawiający przeglądarkę internetową z komunikatem o błędzie informującym o przekroczeniu limitu czasu połączenia.

    4. Zostaw tę kartę przeglądarki otwartą do użycia później.

Zadanie 2. Wyświetlanie listy bieżących reguł sieciowej grupy zabezpieczeń

Serwer internetowy nie jest dostępny. Aby dowiedzieć się dlaczego, należy sprawdzić bieżące reguły NSG.

  1. Uruchom następujące polecenie az network nsg list, aby wyświetlić listę sieciowych grup zabezpieczeń skojarzonych z maszyną wirtualną:

    az network nsg list \
      --resource-group "IntroAzureRG" \
      --query '[].name' \
      --output tsv    
    

    Zobaczysz następujące dane wyjściowe:

    my-vmNSG
    

    Każda maszyna wirtualna na platformie Azure jest skojarzona z co najmniej jedną sieciową grupą zabezpieczeń. W tym przypadku platforma Azure utworzyła grupę zabezpieczeń sieciowych o nazwie my-vmNSG.

  2. Uruchom następujące polecenie az network nsg rule list, aby wyświetlić listę reguł skojarzonych z grupą zabezpieczeń sieciowych o nazwie my-vmNSG:

    az network nsg rule list \
      --resource-group "IntroAzureRG" \
      --nsg-name my-vmNSG    
    

    W danych wyjściowych zostanie wyświetlony duży blok tekstu w formacie JSON. W następnym kroku zostanie uruchomione podobne polecenie, które ułatwia odczytywanie danych wyjściowych.

  3. Uruchom polecenie az network nsg rule list po raz drugi. Tym razem użyj argumentu --query, aby pobrać tylko nazwę, priorytet, odpowiednie porty i dostęp (Zezwalaj lub Odmawiaj) dla każdej reguły. Argument --output formatuje dane wyjściowe jako tabelę, aby można było je łatwo odczytać.

    az network nsg rule list \
      --resource-group "IntroAzureRG" \
      --nsg-name my-vmNSG \
      --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
      --output table    
    

    Zobaczysz następujące dane wyjściowe:

    Name              Priority    Port    Access
    -----------------  ----------  ------  --------
    default-allow-ssh  1000        22      Allow
    

    Zostanie wyświetlona domyślna reguła default-allow-ssh. Ta reguła umożliwia połączenia przychodzące przez port 22 (SSH). Protokół SSH (Secure Shell) to protokół używany w systemie Linux, który umożliwia administratorom zdalne uzyskiwanie dostępu do systemu. Priorytetem tej reguły jest 1000. Reguły są przetwarzane w kolejności priorytetu — niższe liczby są przetwarzane przed wyższymi liczbami.

Domyślnie sieciowa grupa zabezpieczeń maszyny wirtualnej systemu Linux zezwala na dostęp do sieci tylko na porcie 22. Ten port umożliwia administratorom dostęp do systemu. Należy również zezwolić na połączenia przychodzące na porcie 80, który zezwala na dostęp za pośrednictwem protokołu HTTP.

Zadanie 3. Tworzenie reguły zabezpieczeń sieci

W tym miejscu utworzysz regułę zabezpieczeń sieci, która zezwala na dostęp przychodzący na porcie 80 (HTTP).

  1. Uruchom następujące polecenie az network nsg rule create, aby utworzyć regułę o nazwie allow-http, która zezwala na dostęp przychodzący na porcie 80:

    az network nsg rule create \
      --resource-group "IntroAzureRG" \
      --nsg-name my-vmNSG \
      --name allow-http \
      --protocol tcp \
      --priority 100 \
      --destination-port-range 80 \
      --access Allow    
    

    Na potrzeby nauki ustaw priorytet na 100. W tym przypadku priorytet nie ma znaczenia. Musisz wziąć pod uwagę priorytet, jeśli nakładają się zakresy portów.

  2. Aby sprawdzić konfigurację, uruchom polecenie az network nsg rule list, aby wyświetlić zaktualizowaną listę reguł:

    az network nsg rule list \
      --resource-group "IntroAzureRG" \
      --nsg-name my-vmNSG \
      --query '[].{Name:name, Priority:priority, Port:destinationPortRange, Access:access}' \
      --output table    
    

    Zobaczysz zarówno regułę default-allow-ssh , jak i nową regułę allow-http:

    Name              Priority    Port    Access
    -----------------  ----------  ------  --------
    default-allow-ssh  1000        22      Allow
    allow-http          100        80      Allow    
    

Zadanie 4. Ponowne uzyskiwanie dostępu do serwera internetowego

Po skonfigurowaniu dostępu sieciowego do portu 80 spróbujmy uzyskać dostęp do serwera internetowego po raz drugi.

Uwaga

Po zaktualizowaniu sieciowej grupy zabezpieczeń może upłynąć kilka chwil przed rozpowszechnieniem zaktualizowanych reguł. Ponów próbę następnego kroku z wstrzymaniem między próbami, dopóki nie uzyskasz żądanych wyników.

  1. Uruchom to samo polecenie curl, które zostało uruchomione wcześniej:

    curl --connect-timeout 5 http://$IPADDRESS
    

    Zostanie wyświetlona następująca odpowiedź:

    <html><body><h2>Welcome to Azure! My name is my-vm.</h2></body></html>
    
  2. Jako opcjonalny krok, odśwież kartę przeglądarki, która prowadzi do Twojego serwera internetowego. Zostanie wyświetlona strona główna:

    Zrzut ekranu przeglądarki internetowej przedstawiający stronę główną z serwera internetowego. Na stronie głównej zostanie wyświetlony komunikat powitalny.

Brawo. W praktyce można utworzyć autonomiczną sieciową grupę zabezpieczeń zawierającą wymagane przychodzące i wychodzące reguły dostępu do sieci. Jeśli masz wiele maszyn wirtualnych pełniących tę samą funkcję, możesz przypisać sieciową grupę zabezpieczeń do każdej maszyny wirtualnej podczas jej tworzenia. Ta technika umożliwia kontrolowanie dostępu do sieci na wielu maszynach wirtualnych w ramach jednego, centralnego zestawu reguł.

Wykonano to ćwiczenie i wszystkie ćwiczenia dla tego modułu. Aby wyczyścić środowisko platformy Azure i uniknąć opuszczania maszyn wirtualnych uruchomionych, gdy nie są używane, usuń grupę zasobów IntroAzureRG .

Czyszczenie

  1. Na stronie głównej platformy Azure w obszarze Usługi platformy Azure wybierz pozycję Grupy zasobów.
  2. Wybierz grupę zasobów IntroAzureRG .
  3. Wybierz pozycję Usuń grupę zasobów.
  4. Wprowadź polecenie IntroAzureRG , aby potwierdzić usunięcie grupy zasobów i wybierz pozycję Usuń.