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

1. Wprowadzenie

Cześć! Witamy w ćwiczeniu dotyczącym wstępnie skonfigurowanych reguł WAF Cloud Armor.

Google Cloud Armor to rozwiązanie Google do zabezpieczania sieci brzegowej klasy korporacyjnej, które zapewnia ochronę przed atakami typu DDoS, egzekwowanie reguł WAF i adaptacyjne zarządzanie na dużą skalę.

Usługa Cloud Armor rozszerzyła wstępnie skonfigurowane zbiory reguł WAF, aby ograniczać zagrożenia związane z lukami w zabezpieczeniach aplikacji internetowych wymienionymi na liście OWASP Top 10. Zestawy reguł są oparte na podstawowym zestawie reguł OWASP Modsecurity w wersji 3.0.2, aby chronić przed najczęstszymi zagrożeniami dla bezpieczeństwa aplikacji internetowych, takimi jak lokalne włączenie pliku (lfi), zdalne włączenie pliku (rfi), zdalne wykonanie kodu (rce) i wiele innych.

Z tego ćwiczenia dowiesz się, jak ograniczyć niektóre z najczęstszych luk w zabezpieczeniach za pomocą reguł zapory aplikacji internetowych Google Cloud Armor.

Czego się nauczysz

  • Konfigurowanie grupy instancji i globalnego systemu równoważenia obciążenia na potrzeby usługi
  • Jak skonfigurować zasady zabezpieczeń Cloud Armor ze wstępnie skonfigurowanymi regułami WAF, aby chronić przed atakami LFI, RCE, skanerami, atakami na protokoły i utrwalaniem sesji
  • Jak sprawdzić, czy Cloud Armor złagodził atak, obserwując dzienniki.

Czego potrzebujesz

  • Podstawowa wiedza o Google Compute Engine ( codelab)
  • Podstawowa wiedza o sieciach i protokole TCP/IP
  • Podstawowa znajomość wiersza poleceń w systemach Unix i Linux
  • Warto wcześniej zapoznać się z sieciami w GCP, korzystając z przewodnika Networking in the Google Cloud.
  • (Opcjonalnie) Wykonaj ćwiczenie Cloudnet20 Cloud Armor, aby dowiedzieć się, jak chronić zbiory zadań za pomocą reguł opartych na wstrzyknięciu kodu SQL, adresach IP i lokalizacji geograficznej.

Topologia i przypadek użycia ćwiczeń w Codelabs

119e13312f3cec25.jpeg

Rysunek 1. Topologia ćwiczenia dotyczącego reguł WAF Cloud Armor

Aplikacja OWASP Juice Shop jest przydatna do szkolenia w zakresie bezpieczeństwa i podnoszenia świadomości, ponieważ zawiera przykłady wszystkich 10 luk w zabezpieczeniach wymienionych w publikacji OWASP Top 10. Osoba atakująca może wykorzystać tę funkcję do testowania. W tym ćwiczeniu użyjemy go do zademonstrowania niektórych ataków na aplikacje, a następnie zabezpieczymy aplikację za pomocą reguł WAF Cloud Armor. Aplikacja będzie obsługiwana przez usługę równoważenia obciążenia Google Cloud, do której zostaną zastosowane zasady zabezpieczeń i reguły Cloud Armor. Będzie ona udostępniana w internecie publicznym, a więc dostępna niemal z każdego miejsca i chroniona za pomocą Cloud Armor i reguł zapory sieciowej VPC.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

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

96a9c957bc475304.pngb9a10ebdf5b5a448.pnga1e3c01a38fa61c2.png

Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.

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

Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchom Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym ćwiczeniu użyjesz Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym laboratorium możesz wykonać w przeglądarce.

Zanim zaczniesz

W Cloud Shell sprawdź, 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

Utwórz sieć VPC

W 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

W 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 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 aplikacji testowej na porcie 3000. Druga reguła zapory sieciowej będzie używana do zezwalania na kontrolę stanu z adresu IP źródła systemów równoważenia obciążenia.

W 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 zapory sieciowej, które zezwalają na kontrolę stanu z zakresów kontroli stanu Google.

W 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

Kolejnym krokiem jest utworzenie aplikacji testowej, w tym przypadku serwera WWW OWASP Juice Shop.

Podczas tworzenia instancji obliczeniowej używamy obrazu kontenera, aby mieć pewność, że serwer ma odpowiednie usługi. Ten serwer zostanie wdrożony w strefie us-central1-c i będzie miał tag sieciowy, który umożliwi przeprowadzanie kontroli stanu.

Tworzenie aplikacji OWASP Juice Shop

Użyj aplikacji OWASP Juice Shop o otwartym kodzie źródłowym jako aplikacji podatnej na ataki. Za pomocą tej aplikacji możesz też rozwiązywać wyzwania związane z bezpieczeństwem OWASP na ich stronie internetowej.

W 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

Konfigurowanie komponentu systemu równoważenia obciążenia w Cloud: grupa instancji

Utwórz niezarządzaną grupę instancji.

W 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 sklepu Juice Shop do niezarządzanej grupy instancji.

W 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.

W 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 następnym krokiem jest utworzenie kontroli stanu, usługi backendu, mapy URL, docelowego serwera proxy i reguły przekierowania.

Skonfiguruj komponent Cloud Load Balancer: kontrola stanu

Utwórz kontrolę stanu dla portu usługi Juice Shop.

W 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 w chmurze: usługa backendu

Utwórz parametry usługi backendu.

W 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.

W 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].

Skonfiguruj komponent systemu równoważenia obciążenia Cloud: mapę URL

Utwórz mapę URL, która zostanie wysłana do backendu.

W 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 w Cloud: docelowy serwer proxy

Utwórz docelowy serwer proxy przed mapą URL.

W 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

Skonfiguruj komponent Cloud Load Balancer: reguła przekierowania

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

W 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].

Sprawdź, czy usługa Juice Shop jest dostępna online

W Cloud Shell

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

W Cloud Shell

echo $PUBLIC_SVC_IP

Wyniki

<public VIP of service>

Zanim przejdziesz dalej, odczekaj kilka minut, w przeciwnym razie możesz otrzymać odpowiedź HTTP/1.1 404 Not Found.

W Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP

Wyniki

HTTP/1.1 200 OK
<...>

Możesz też otworzyć przeglądarkę, aby wyświetlić Juice Shop.

428c18eee6708c28.png

Możemy teraz przyjrzeć się lukom w zabezpieczeniach sklepu Juice Shop i sposobom ochrony przed nimi za pomocą zestawów reguł WAF Cloud Armor.

5. wykazywać znane luki w zabezpieczeniach,

Aby zaoszczędzić czas, w skróconych krokach pokażemy stany przed i po rozpowszechnieniu reguł WAF Cloud Armor.

Obserwowanie luki w zabezpieczeniach LFI: [atak typu] path traversal

Local File Inclusion to proces obserwowania plików znajdujących się na serwerze poprzez wykorzystanie braku weryfikacji danych wejściowych w żądaniu, co może prowadzić do ujawnienia danych wrażliwych. Poniższy przykład pokazuje, że możliwy jest atak typu path traversal. W przeglądarce lub za pomocą polecenia curl sprawdź istniejącą ścieżkę obsługiwaną przez aplikację.

W Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp

Wyniki

HTTP/1.1 200 OK
<...>

Zauważ też, że działa również [atak typu] path traversal:

W 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 systemach UNIX i Windows, które umożliwiają atakującym wykonywanie poleceń systemu operacyjnego zwykle ograniczonych do użytkowników z uprawnieniami. Poniżej przedstawiono prosty przykład wykonania polecenia ls.

W 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 znanego skanera

Zarówno komercyjne, jak i open source, do różnych celów, w tym do skanowania w poszukiwaniu luk w zabezpieczeniach. Te narzędzia używają dobrze znanych ciągów User-Agent i innych nagłówków. Sprawdź, czy polecenie curl działa ze znanym nagłówkiem klienta użytkownika:

W Cloud Shell

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

Wyniki

HTTP/1.1 200 OK
<...>

Obserwowanie ataku na protokół: rozdzielanie HTTP

Niektóre aplikacje internetowe używają danych wejściowych od użytkownika do generowania nagłówków w odpowiedziach. Jeśli aplikacja nie filtruje danych wejściowych prawidłowo, atakujący może potencjalnie zatruć parametr wejściowy sekwencją %0d%0a (sekwencja CRLF używana do oddzielania różnych wierszy). Odpowiedź może być następnie interpretowana jako 2 odpowiedzi przez dowolny element, który ją analizuje, np. pośredni serwer proxy, co może prowadzić do wyświetlania fałszywych treści w kolejnych żądaniach. Wstaw sekwencję %0d%0a do parametru wejściowego, co może spowodować wyświetlenie wprowadzającej w błąd strony.

W 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
<...>

Obserwowanie utrwalania sesji

W Cloud Shell

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

Wyniki

HTTP/1.1 200 OK
<...>

6. Definiowanie reguł WAF Cloud Armor

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

W 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 jest skonfigurowana z działaniem odrzucającym, 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łę, aby zezwolić na dostęp z Twojego adresu IP (WPISZ SWÓJ ADRES IP PONIŻEJ)

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"

Zaktualizuj zasadę zabezpieczeń, aby blokować ataki LFI

Zastosuj zestaw reguł podstawowych OWASP ModSecurity, który zapobiega [atakom typu] path traversal w przypadku dołączania 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

Zaktualizuj zasady bezpieczeństwa, aby zablokować zdalne wykonywanie kodu (rce)

Zgodnie z zestawem reguł podstawowych OWASP ModSecurity zastosuj reguły, które wyszukują zdalne wykonanie kodu, w tym wstrzykiwanie 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ł podstawowych OWASP ModSecurity, aby blokować znane skanery zabezpieczeń, skryptowe klienty HTTP i roboty indeksujące.

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 na protokoły

Zgodnie z zestawem reguł podstawowych OWASP ModSecurity stosuj reguły, które wyszukują znaki powrotu karetki (CR) %0d i znaki nowego wiersza (LF) %0a oraz inne typy ataków na protokoły, takie jak przemycanie żą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ł podstawowych OWASP ModSecurity zastosuj 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 zająć trochę czasu (ale nie więcej niż 10 minut). Gdy będziesz mieć pewność, że upłynęło wystarczająco dużo czasu, przetestuj wcześniej wykryte luki w zabezpieczeniach, aby w następnym kroku potwierdzić egzekwowanie reguł WAF Cloud Armor.

7. Obserwowanie ochrony Cloud Armor za pomocą zestawu reguł podstawowych OWASP ModSecurity

Potwierdź, że luka w zabezpieczeniach LFI została usunięta

W Cloud Shell

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

Wyniki

HTTP/1.1 403 Forbidden
<...>

Potwierdź, że atak RCE został zneutralizowany

W Cloud Shell

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

Wyniki

HTTP/1.1 403 Forbidden
<..>

Potwierdź wykrycie znanego skanera

W Cloud Shell

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

Wyniki

HTTP/1.1 403 Forbidden
<..>

Potwierdzanie, że atak na protokół został zneutralizowany

Zgodnie z zestawem reguł podstawowych OWASP ModSecurity w wersji 3.0.2 atak protokołu jest ograniczany przez

W 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
<..>

Sprawdzanie, czy próby utrwalenia sesji są blokowane

W Cloud Shell

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

Wyniki

HTTP/1.1 403 Forbidden
<..>

8. Sprawdzanie reguł zabezpieczeń Cloud Armor

Po utworzeniu zasady zabezpieczeń sprawdźmy, jakie reguły zostały skonfigurowane.

d00e4102fc89e44f.png

Reguły są sprawdzane według priorytetu. Najpierw sprawdzane są reguły o niższych numerach, a gdy reguła zostanie aktywowana, przetwarzanie nie jest kontynuowane w przypadku reguł o wyższych wartościach priorytetu.

  • Priorytet 9000 – blokowanie LFI (dołączanie plików lokalnych)
  • Priorytet 9001 – blokowanie RCE (zdalnego wykonywania kodu lub wstrzykiwania poleceń)
  • Priorytet 9002 – wykryto skanery bloków
  • Priorytet 9003 – blokowanie ataków na protokoły, takich jak dzielenie HTTP i przemycanie HTTP
  • Priorytet 9004 – blokowanie ataków typu Session Fixation
  • Priorytet 10000 – zezwól adresowi IP na dostęp do witryny
  • Priorytet domyślny – odmowa.

*Zwróć uwagę, że reguła „zezwalaj na Twój adres IP” ma najwyższy priorytet, aby umożliwić dostęp do witryny, ale blokuje wszelkie ataki.

9. Obserwowanie logów zasad zabezpieczeń Cloud Armor

Na stronie konsoli Cloud Armor możesz wyświetlić szczegóły zasad zabezpieczeń. Aby przejść do strony Cloud Logging, kliknij kolejno kartę Logs i link View policy logs. Będzie on automatycznie filtrować dane na podstawie interesującej Cię zasady zabezpieczeń, np. resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs). Obserwuj kody odpowiedzi o błędzie 403 i rozwijaj szczegóły logu, aby zobaczyć nazwę zastosowanych zasad bezpieczeństwa, pasującą wartość pola oraz identyfikatory wstępnie skonfigurowanych wyrażeń (lub identyfikator podpisu). Na zrzutach ekranu poniżej znajdziesz przykłady logów dotyczących wymuszonych zasad bezpieczeństwa skonfigurowanych w tym samouczku.

Dziennik LFI

983a6cab0cff940d.png

Log RCE

988a3a571f9d9d45.png

Dziennik wykrywania skanera

7ed661863ba27555.png

Dziennik ataków na protokół

17ee3cbe0bd98939.png

Dziennik utrwalania sesji

80d1ddfd0fe982e1.png

10. Czyszczenie modułu

Po ukończeniu modułu usuń zasoby.

Uruchom te polecenia, aby usunąć zasady 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

Usuń zasoby systemu równoważenia obciążenia

Zasoby systemu równoważenia obciążenia, które mają zostać usunięte, to reguła przekierowania, docelowe serwery proxy HTTP, mapy URL, backend, kontrole stanu i grupa 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

Usuń instancję

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 dotyczącego wstępnie skonfigurowanych reguł WAF Cloud Armor.

Omówione zagadnienia

  • Konfigurowanie grupy instancji i globalnego systemu równoważenia obciążenia w Cloud
  • Jak skonfigurować zasady zabezpieczeń Cloud Armor ze wstępnie skonfigurowanymi regułami WAF, aby chronić przed atakami LFI, RCE, skanerami, atakami na protokoły i utrwalaniem sesji
  • Jak sprawdzić w logach, czy Cloud Armor złagodził niektóre z 10 najczęstszych ataków OWASP

Dalsze kroki