Ćwiczenie z programowania dotyczące wstępnie skonfigurowanych reguł WAF w Cloud Armor

1. Wprowadzenie

Cześć! Witamy w ćwiczeniach z programowania dotyczących wstępnie skonfigurowanych reguł WAF w Cloud Armor.

Google Cloud Armor to rozwiązanie Google do zabezpieczeń brzegowych sieci firmowych, które zapewnia ochronę przed atakami typu DDOS, egzekwowanie reguł WAF oraz możliwość adaptacyjnego zarządzania na dużą skalę.

Usługa Cloud Armor rozszerzyła wstępnie skonfigurowane zestawy reguł WAF, aby ograniczyć luki w zabezpieczeniach aplikacji internetowych OWASP Top 10. Zestawy reguł są oparte na podstawowym zestawie reguł OWASP Modsecurity w wersji 3.0.2, aby chronić aplikacje przed najpowszechniejszymi zagrożeniami związanymi z bezpieczeństwem aplikacji internetowych, takimi jak uwzględnianie plików lokalnych (lfi), zdalne uwzględnianie plików (rfi), zdalne wykonywanie kodu (rce) i wiele innych.

Z tego ćwiczenia w Codelabs dowiesz się, jak ograniczyć niektóre typowe luki w zabezpieczeniach przy użyciu reguł Google Cloud Armor WAF.

Czego się nauczysz

  • Jak skonfigurować grupę instancji i globalny system równoważenia obciążenia na potrzeby obsługi usługi
  • Jak skonfigurować zasady zabezpieczeń Cloud Armor ze wstępnie skonfigurowanymi regułami WAF w celu ochrony przed lFi, rce, skanerami, atakami protokołów i ustaleniem sesji
  • Jak sprawdzić, czy usługa Cloud Armor złagodziła atak przez obserwację logów.

Czego potrzebujesz

  • Podstawowa znajomość Google Compute Engine ( laboratorium)
  • Podstawowa wiedza o sieciach i TCP/IP
  • Podstawowa wiedza na temat wiersza poleceń systemu Unix/Linux.
  • Warto zapoznać się z prezentacją sieci w GCP w temacie Networking in the Google Cloud (Sieć w Google Cloud).
  • (Opcjonalnie) Ukończ moduł Cloudnet20 Cloud Armor, aby dowiedzieć się, jak chronić zadania za pomocą wstrzykiwania SQL oraz reguł opartych na adresach IP i lokalizacjach geograficznych.

Topologia ćwiczeń z programowania przypadek użycia

119e13312f3cec25.jpeg

Rysunek 1. Topologia reguł WAF w Cloud Armor w Codelabs

Aplikacja OWASP Juice Shop zbudowana jest przydaje się podczas szkoleń z zakresu bezpieczeństwa i zwiększania świadomości, ponieważ zawiera ona wystąpienia każdej z 10 luk w zabezpieczeniach programu OWASP Top 10. Osoba przeprowadzająca atak może je wykorzystać do celów testowych. W ramach tego ćwiczenia w programie wykorzystamy je do zademonstrowania niektórych ataków na aplikacje, a następnie ochrony aplikacji za pomocą reguł Cloud Armor WAF. Frontendem aplikacji będzie system równoważenia obciążenia Google Cloud, do którego będą stosowane zasady i reguły zabezpieczeń Cloud Armor. Będzie on dostępny w publicznym internecie, dzięki czemu będzie dostępny niemal z każdego miejsca i chroniony za pomocą reguł Cloud Armor i zapory sieciowej VPC.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Zapamiętaj identyfikator projektu, unikalną nazwę we wszystkich projektach Google Cloud (powyższa nazwa jest już zajęta i nie będzie Ci odpowiadać). W dalszej części tego ćwiczenia w Codelabs będzie ona określana jako PROJECT_ID.

  1. Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud.

Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Postępuj zgodnie z instrukcjami podanymi w sekcji „Czyszczenie” W tym samouczku znajdziesz wskazówki, jak wyłączyć zasoby, aby uniknąć naliczania opłat. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Uruchamianie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w chmurze.

W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:

bce75f34b2c53987.png

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:

f6ef2b5f13479f3a.png

Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym module możesz wykonać w przeglądarce.

Zanim zaczniesz

Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID

włączyć interfejsy API,

Włącz wszystkie niezbędne usługi

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com        
gcloud services enable monitoring.googleapis.com 

3. Tworzenie sieci VPC

Tworzenie sieci VPC

Z Cloud Shell

gcloud compute networks create ca-lab-vpc --subnet-mode custom

Wyniki

Created
NAME        SUBNET_MODE  BGP_ROUTING_MODE  IPV4_RANGE  GATEWAY_IPV4
ca-lab-vpc  CUSTOM       REGIONAL

Tworzenie podsieci

Z Cloud Shell

gcloud compute networks subnets create ca-lab-subnet \
        --network ca-lab-vpc --range 10.0.0.0/24 --region us-central1

Wyniki

Created 
NAME           REGION       NETWORK       RANGE
ca-lab-subnet  us-central1  ca-lab-vpc    10.0.0.0/24

Tworzenie reguł zapory sieciowej VPC

Po utworzeniu sieci VPC i podsieci skonfiguruj teraz kilka reguł zapory sieciowej. Pierwsza reguła zapory sieciowej będzie używana do zezwalania wszystkim adresom IP na dostęp do zewnętrznego adresu IP witryny testowej na porcie 3000. Druga reguła zapory sieciowej będzie używana do zezwalania na kontrolę stanu ze źródłowego adresu IP systemów równoważenia obciążenia.

Z Cloud Shell

gcloud compute firewall-rules create allow-js-site --allow tcp:3000 --network ca-lab-vpc

Wyniki

Creating firewall...done.
NAME           NETWORK     DIRECTION  PRIORITY  ALLOW     DENY  DISABLED
allow-js-site  ca-lab-vpc  INGRESS    1000      tcp:3000        False

Utwórz reguły FW, aby umożliwić kontrole stanu z zakresów kontroli stanu Google.

Z Cloud Shell

gcloud compute firewall-rules create allow-health-check \
    --network=ca-lab-vpc \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-healthcheck \
    --rules=tcp

Wyniki

Creating firewall...done.
NAME                NETWORK     DIRECTION  PRIORITY  ALLOW  DENY  DISABLED
allow-health-check  ca-lab-vpc  INGRESS    1000      tcp          False

4. Konfigurowanie aplikacji testowej

Następnym krokiem jest utworzenie aplikacji testowej, w tym przypadku serwera WWW OWASP Juice Shop.

Podczas tworzenia instancji Compute używamy obrazu kontenera, aby zapewnić serwerowi dostęp do odpowiednich usług. Ten serwer zostanie wdrożony w regionie us-central1-c i będzie miał tag sieciowy umożliwiający kontrolę stanu.

Tworzenie aplikacji OWASP Juice Shop

Jako aplikację z lukami w zabezpieczeniach użyj dobrze znanej aplikacji OWASP Juice Shop. Za pomocą tej aplikacji możesz też przeprowadzać testy zabezpieczające OWASP na tej stronie.

Z Cloud Shell

gcloud compute instances create-with-container owasp-juice-shop-app --container-image bkimminich/juice-shop \
     --network ca-lab-vpc \
     --subnet ca-lab-subnet \
     --private-network-ip=10.0.0.3 \
     --machine-type n1-standard-2 \
     --zone us-central1-c \
     --tags allow-healthcheck

Wyniki

NAME                  ZONE           MACHINE_TYPE   PREEMPTIBLE  
owasp-juice-shop-app  us-central1-c  n1-standard-2               

INTERNAL_IP  EXTERNAL_IP     STATUS
10.0.0.3     <public IP>     RUNNING

Skonfiguruj komponent systemu równoważenia obciążenia Cloud: grupa instancji

Utwórz niezarządzaną grupę instancji.

Z Cloud Shell

gcloud compute instance-groups unmanaged create juice-shop-group \
    --zone=us-central1-c

Wyniki

NAME              LOCATION       SCOPE  NETWORK  MANAGED  INSTANCES
juice-shop-group  us-central1-c  zone                     0

Dodaj instancję GCE Juice Shop do niezarządzanej grupy instancji.

Z Cloud Shell

gcloud compute instance-groups unmanaged add-instances juice-shop-group \
    --zone=us-central1-c \
    --instances=owasp-juice-shop-app

Wyniki

Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].

Ustaw nazwany port na port aplikacji Juice Shop.

Z Cloud Shell

gcloud compute instance-groups unmanaged set-named-ports \
juice-shop-group \
   --named-ports=http:3000 \
   --zone=us-central1-c

Wyniki

Updated [https://www.googleapis.com/compute/v1/projects/<project name>/zones/us-central1-c/instanceGroups/juice-shop-group].

Po utworzeniu niezarządzanej grupy instancji utwórz kontrolę stanu, usługę backendu, mapę URL, docelowy serwer proxy i regułę przekierowania.

Konfigurowanie komponentu systemu równoważenia obciążenia Cloud: kontrola stanu

Utwórz kontrolę stanu portu obsługi cukierni soków.

Z Cloud Shell

gcloud compute health-checks create tcp tcp-port-3000 \
        --port 3000

Wyniki

Created 
NAME           PROTOCOL
tcp-port-3000  TCP

Konfigurowanie komponentu systemu równoważenia obciążenia Cloud: usługa backendu

Utwórz parametry usługi backendu.

Z Cloud Shell

gcloud compute backend-services create juice-shop-backend \
        --protocol HTTP \
        --port-name http \
        --health-checks tcp-port-3000 \
        --enable-logging \
        --global 

Wyniki

NAME                BACKENDS  PROTOCOL
juice-shop-backend            HTTP

Dodaj grupę instancji Juice Shop do usługi backendu.

Z Cloud Shell

 gcloud compute backend-services add-backend juice-shop-backend \
        --instance-group=juice-shop-group \
        --instance-group-zone=us-central1-c \
        --global

Wyniki

Updated [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/backendServices/juice-shop-backend].

Konfigurowanie komponentu automatycznego systemu równoważenia obciążenia: mapa URL

Utwórz mapę URL, która ma zostać wysłana do backendu.

Z Cloud Shell

gcloud compute url-maps create juice-shop-loadbalancer \
        --default-service juice-shop-backend

Wyniki

NAME                     DEFAULT_SERVICE
juice-shop-loadbalancer  backendServices/juice-shop-backend

Skonfiguruj komponent systemu równoważenia obciążenia Clud: docelowy serwer proxy.

Utwórz docelowy serwer proxy, aby umieścić mapę na początku mapy URL.

Z Cloud Shell

gcloud compute target-http-proxies create juice-shop-proxy \
        --url-map juice-shop-loadbalancer

Wyniki

NAME              URL_MAP
juice-shop-proxy  juice-shop-loadbalancer

Konfigurowanie komponentu systemu równoważenia obciążenia Cloud: reguła przekierowania

Utwórz regułę przekierowania dla systemu równoważenia obciążenia.

Z Cloud Shell

gcloud compute forwarding-rules create juice-shop-rule \
        --global \
        --target-http-proxy=juice-shop-proxy \
        --ports=80

Wyniki

Created [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/forwardingRules/juice-shop-rule].

Sprawdzanie, czy sklep z sokami jest online

Z Cloud Shell

PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule  --global --format="value(IPAddress)")"

Z Cloud Shell

echo $PUBLIC_SVC_IP

Wyniki

<public VIP of service>

Poczekaj kilka minut, zanim przejdziesz dalej. W przeciwnym razie możesz otrzymać odpowiedź HTTP/1.1 „404 – nie znaleziono”.

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP

Wyniki

HTTP/1.1 200 OK
<...>

Możesz też otworzyć sklep z sokami w przeglądarce.

428c18eee6708c28.png

Teraz możesz zapoznać się z lukami w zabezpieczeniach sklepu Juice Shop i chronić się przed nimi za pomocą zestawów reguł WAF w Cloud Armor.

5. Demonstracja znanych luk w zabezpieczeniach

Aby zaoszczędzić czas, zademonstrujemy stany przed i po rozpowszechnieniu reguł Cloud Armor WAF w etapach skróconych.

Obserwowanie luki w zabezpieczeniach LFI: przemierzanie ścieżki

Uwzględnienie plików lokalnych to proces obserwowania plików znajdujących się na serwerze przez wykorzystanie braku weryfikacji danych wejściowych w żądaniu do potencjalnego ujawnienia danych wrażliwych. Poniższy przykład pokazuje tylko, że przemierzanie ścieżki jest możliwe. W przeglądarce lub za pomocą narzędzia curl obserwuj istniejącą ścieżkę serwowaną przez aplikację.

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp

Wyniki

HTTP/1.1 200 OK
<...>

Zauważ też, że przemierzanie ścieżki również działa:

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp/../

Wyniki

HTTP/1.1 200 OK
<...>

Obserwowanie luki w zabezpieczeniach RCE

Zdalne wykonywanie kodu obejmuje różne scenariusze wstrzykiwania poleceń w systemie UNIX i Windows, co pozwala osobom przeprowadzającym atak na wykonywanie poleceń systemu operacyjnego, które są zwykle ograniczone do użytkowników z podwyższonymi uprawnieniami. Poniżej przedstawiono proste wykonanie polecenia ls przekazane przez niego.

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Wyniki

HTTP/1.1 200 OK
<...>

Możesz usunąć flagi curl, aby zobaczyć pełne dane wyjściowe.

Obserwowanie dostępu dobrze znanego skanera

Zarówno aplikacje komercyjne, jak i open source do skanowania do różnych celów, w tym skanowania w poszukiwaniu luk w zabezpieczeniach. Narzędzia te korzystają ze znanych nagłówków User-Agent i innych nagłówków. Obserwuj curl ze znanym nagłówkiem User-Agent:

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Wyniki

HTTP/1.1 200 OK
<...>

Obserwowanie ataku protokołu: podział HTTP

Niektóre aplikacje internetowe generują nagłówki w odpowiedziach na podstawie danych wejściowych użytkownika. Jeśli aplikacja nie filtruje prawidłowo danych wejściowych, osoba przeprowadzająca atak może zanieczyść parametr wejściowy sekwencją %0d%0a (sekwencją CRLF wykorzystywaną do rozdzielania różnych wierszy). Odpowiedź może zostać zinterpretowana jako 2 odpowiedzi przez dowolny element, który dokonuje jej analizy, np. przez pośredni serwer proxy, który może wyświetlać fałszywe treści w kolejnych żądaniach. Wstaw sekwencję %0d%0a do parametru wejściowego, co może spowodować wyświetlenie strony wprowadzającej w błąd.

Z Cloud Shell

curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

Wyniki

HTTP/1.1 200 OK
<...>

Obserwuj utrwalanie sesji

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP -H session_id=X

Wyniki

HTTP/1.1 200 OK
<...>

6. Definiowanie reguł Cloud Armor WAF

Wyświetl listę wstępnie skonfigurowanych reguł WAF:

Z Cloud Shell

gcloud compute security-policies list-preconfigured-expression-sets

Wyniki

EXPRESSION_SET
Sqli-canary
RULE_ID
    owasp-crs-v030001-id942110-sqli
    owasp-crs-v030001-id942120-sqli
<...>

Tworzenie zasady zabezpieczeń Cloud Armor

W Cloud Shell:

gcloud compute security-policies create block-with-modsec-crs \
    --description "Block with OWASP ModSecurity CRS"

Aktualizowanie domyślnej reguły zasady zabezpieczeń

Pamiętaj, że domyślny priorytet reguły ma wartość liczbową 2147483647.

W Cloud Shell:

gcloud compute security-policies rules update 2147483647 \
    --security-policy block-with-modsec-crs \
    --action "deny-403"

Ponieważ reguła domyślna ma skonfigurowaną opcję odmowy działań, musimy zezwolić na dostęp z Twojego adresu IP. Znajdź swój publiczny adres IP (curl, ipmonkey, whatismyip itp.).

W Cloud Shell:

MY_IP=$(curl ifconfig.me)

Dodaj pierwszą regułę, która zezwala na dostęp z Twojego adresu IP (WPISZ PONIŻEJ ADRES IP)

W Cloud Shell:

gcloud compute security-policies rules create 10000 \
    --security-policy  block-with-modsec-crs  \
    --description "allow traffic from my IP" \
    --src-ip-ranges "$MY_IP/32" \
    --action "allow"

Aktualizowanie zasady zabezpieczeń w celu blokowania ataków LFI

Zastosuj zestaw reguł OWASP ModSecurity Core , który uniemożliwia przemierzanie ścieżki w przypadku uwzględnienia plików lokalnych.

W Cloud Shell:

gcloud compute security-policies rules create 9000 \
    --security-policy block-with-modsec-crs  \
    --description "block local file inclusion" \
     --expression "evaluatePreconfiguredExpr('lfi-stable')" \
    --action deny-403

Aktualizowanie zasady zabezpieczeń w celu blokowania zdalnego wykonywania kodu (rce)

Zgodnie z zestawem reguł OWASP ModSecurity Core stosuj reguły, które szukają rce, w tym wstrzykiwania poleceń. Typowe polecenia systemu operacyjnego są wykrywane i blokowane.

W Cloud Shell:

gcloud compute security-policies rules create 9001 \
    --security-policy block-with-modsec-crs  \
    --description "block rce attacks" \
     --expression "evaluatePreconfiguredExpr('rce-stable')" \
    --action deny-403

Aktualizowanie zasady zabezpieczeń w celu blokowania skanerów zabezpieczeń

Zastosuj zestaw reguł OWASP ModSecurity Core Rule, aby zablokować dobrze znane skanery zabezpieczeń, klienty HTTP i roboty sieciowe.

W Cloud Shell:

gcloud compute security-policies rules create 9002 \
    --security-policy block-with-modsec-crs  \
    --description "block scanners" \
     --expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \
    --action deny-403

Aktualizowanie zasady zabezpieczeń w celu blokowania ataków protokołów

Zgodnie z zestawem reguł OWASP ModSecurity Security Core stosuj reguły uwzględniające znaki %0d powrotu karetki (CR) i LF (LF) %0a oraz inne rodzaje ataków protokołów, takie jak przemyt żądań HTTP.

W Cloud Shell:

gcloud compute security-policies rules create 9003 \
    --security-policy block-with-modsec-crs  \
    --description "block protocol attacks" \
     --expression "evaluatePreconfiguredExpr('protocolattack-stable')" \
    --action deny-403

Aktualizowanie zasady zabezpieczeń w celu blokowania utrwalania sesji

Zgodnie z zestawem reguł OWASP ModSecurity Core stosuj reguły, które...

W Cloud Shell:

gcloud compute security-policies rules create 9004 \
    --security-policy block-with-modsec-crs  \
    --description "block session fixation attacks" \
     --expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \
    --action deny-403

Dołączanie zasady zabezpieczeń do usługi backendu

W Cloud Shell:

gcloud compute backend-services update juice-shop-backend \
    --security-policy block-with-modsec-crs \
    --global

Rozpowszechnienie reguł może trochę potrwać (maksymalnie 10 minut). Gdy będziesz mieć pewność, że upłynęło wystarczająco dużo czasu, przetestuj luki w zabezpieczeniach, aby potwierdzić egzekwowanie reguły WAF w następnym kroku.

7. Obserwuj ochronę Cloud Armor za pomocą zestawu reguł OWASP ModSecurity

Potwierdzanie, że luka w zabezpieczeniach LFI została wyeliminowana

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/?a=../

Wyniki

HTTP/1.1 403 Forbidden
<...>

Potwierdzanie, że atak RCE jest złagodzony

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Wyniki

HTTP/1.1 403 Forbidden
<..>

Potwierdź wykrywanie dobrze znanego skanera

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Wyniki

HTTP/1.1 403 Forbidden
<..>

Potwierdzanie, że atak z protokołem został złagodzony

Zgodnie z zestawem reguł OWASP ModSecurity Core Rule w wersji 3.0.2 atak na protokół jest ograniczany przez

Z Cloud Shell

curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"

Wyniki

HTTP/1.1 403 Forbidden
<..>

Potwierdzanie, że próby rozwiązania problemów z sesją są blokowane

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/?session_id=a

Wyniki

HTTP/1.1 403 Forbidden
<..>

8. Sprawdź reguły zabezpieczeń Cloud Armor

Po utworzeniu zasady zabezpieczeń przyjrzyjmy się dokładnie tym, które reguły zostały skonfigurowane.

d00e4102fc89e44f.png

Reguły są sprawdzane według priorytetu: w pierwszej kolejności są sprawdzane niższe wartości. Po aktywowaniu reguły przetwarzanie nie jest kontynuowane w przypadku reguł o wyższym priorytecie.

  • Priorytet 9000 – blokuj LFI (uwzględnianie plików lokalnych)
  • Priorytet 9001 – blokuj RCE (zdalne wykonywanie kodu/wstrzykiwanie poleceń)
  • Priorytet 9002 – blokuj skanery
  • Priorytet 9003 – blokuj ataki protokołów, np. podział HTTP i przemyt HTTP
  • Priorytet 9004 – blokuj ataki polegające na utrwalaniu sesji
  • Priorytet 10000 – zezwalanie na dostęp do witryny z wykorzystaniem Twojego adresu IP
  • Domyślny priorytet – Odrzucaj.

*Zwróć uwagę na komunikat „zezwól na swój adres IP”. jest skonfigurowana z numerem o najwyższym priorytecie, co umożliwia dostęp do witryny, jednak blokuje wszelkie atak.

9. Obserwuj logi zasad zabezpieczeń Cloud Armor

Na stronie konsoli Cloud Armor możesz wyświetlić szczegóły zasady zabezpieczeń. Kliknij kartę Logs, a następnie link View policy logs, aby przejść na stronę Cloud Logging. Jest on automatycznie filtrowany na podstawie interesującej Cię zasady bezpieczeństwa, np. resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs) Zapoznaj się z kodami odpowiedzi na błąd 403 i rozwiń szczegóły dziennika, aby zobaczyć nazwę egzekwowanej zasady zabezpieczeń, dopasowaną wartość pola oraz wstępnie skonfigurowane identyfikatory wyrażeń (lub identyfikator podpisu). Poniższe zrzuty ekranu przedstawiają przykłady dzienników egzekwowanych zasad zabezpieczeń skonfigurowanych w ramach tego ćwiczenia w Codelabs.

Dziennik LFI

983a6cab0cff940d.png

Dziennik RCE

988a3a571f9d9d45.png

Dziennik wykrywania skanera

7ed661863ba27555.png

Dziennik ataku protokołu

17ee3cbe0bd98939.png

Dziennik naprawy sesji

80d1ddfd0fe982e1.png

10. Czyszczenie modułu

Po ukończeniu modułu usuń zasoby.

Uruchom te polecenia, aby usunąć zasadę zabezpieczeń Cloud Armor, system równoważenia obciążenia, instancje, reguły zapory sieciowej i sieć VPC.

Usuwanie zasady zabezpieczeń Cloud Armor z usługi backendu

gcloud -q compute backend-services update juice-shop-backend --security-policy "" --global

Usuwanie zasady zabezpieczeń Cloud Armor

Usunięcie zasady zabezpieczeń spowoduje automatyczne usunięcie powiązanych reguł.

gcloud -q compute security-policies delete block-with-modsec-crs

Usuwanie zasobów systemu równoważenia obciążenia

Te zasoby systemu równoważenia obciążenia, które mają zostać usunięte, obejmują regułę przekierowania, docelowe serwery proxy HTTP, mapy URL, backend, kontrole stanu i grupę instancji.

gcloud -q compute forwarding-rules delete juice-shop-rule --global

gcloud -q compute target-http-proxies delete juice-shop-proxy

gcloud -q compute url-maps delete juice-shop-loadbalancer

gcloud -q compute backend-services delete juice-shop-backend \
    --global

gcloud -q compute health-checks delete tcp-port-3000

gcloud -q compute instance-groups unmanaged delete juice-shop-group --zone=us-central1-c

Usuwanie instancji

gcloud -q compute instances delete owasp-juice-shop-app --zone us-central1-c

Usuwanie reguł zapory sieciowej, podsieci i sieci VPC

gcloud -q compute firewall-rules delete allow-health-check
gcloud -q compute firewall-rules delete allow-js-site
gcloud -q compute networks subnets delete ca-lab-subnet --region us-central1
gcloud -q compute networks delete ca-lab-vpc

11. Gratulacje!

Gratulujemy ukończenia ćwiczenia z programowania dotyczącego wstępnie skonfigurowanych reguł WAF w Cloud Armor.

Omówione zagadnienia

  • Jak skonfigurować grupę instancji i globalny system równoważenia obciążenia Cloud
  • Jak skonfigurować zasady zabezpieczeń Cloud Armor ze wstępnie skonfigurowanymi regułami WAF w celu ochrony przed lFi, rce, skanerami, atakami protokołów i ustaleniem sesji
  • Jak sprawdzić za pomocą logów, czy usługa Cloud Armor oszczędziła niektóre ataki OWASP z najwyższej półki

Dalsze kroki