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

1. Wprowadzenie

Cześć! Witamy w samouczku dotyczącym wstępnie skonfigurowanych reguł WAF w 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ł zapory sieciowej aplikacji internetowych i adaptacyjne zarządzanie na dużą skalę.

Usługa Cloud Armor rozszerzyła wstępnie skonfigurowane zestawy reguł WAF, aby zapobiegać lukom w zabezpieczeniach aplikacji internetowych wymienionym w dokumencie 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 przewodnika dowiesz się, jak ograniczyć niektóre z najczęstszych luk w zabezpieczeniach za pomocą reguł zapory aplikacji internetowych 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ć się 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 przewodnikiem po sieciach w GCP, takim jak 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 ćwiczeń z programowania dotyczących reguł WAF w Cloud Armor

Aplikacja OWASP Juice Shop jest przydatna do szkolenia w zakresie bezpieczeństwa i podnoszenia świadomości, ponieważ zawiera przykłady wszystkich 10 najważniejszych luk w zabezpieczeniach OWASP. Osoba atakująca może wykorzystać tę funkcję do celów testowych. W tym ćwiczeniu z programowania pokażemy kilka ataków na aplikację, a potem zabezpieczymy ją za pomocą reguł zapory WAF Cloud Armor. Aplikacja będzie obsługiwana przez system równoważenia obciążenia Google Cloud, do którego zostaną zastosowane zasady zabezpieczeń i reguły Cloud Armor. Będzie on udostępniany w internecie publicznym, a więc dostępny niemal z każdego miejsca i chroniony 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 ani Google Workspace, musisz je utworzyć.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.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 konsoli Cloud, 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 bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.

Uruchamianie Cloud Shell

Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać 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 module 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

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 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 systemu 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 zapory sieciowej, które zezwalają na kontrolę 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 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 kontrole 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.

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

Konfigurowanie komponentu systemu równoważenia obciążenia w 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 sklepu 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 następnym krokiem jest utworzenie kontroli stanu, usługi backendu, mapy URL, docelowego serwera proxy i reguły przekierowania.

Skonfiguruj komponent systemu równoważenia obciążenia w Cloud: kontrola stanu

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

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 w chmurze: 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].

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

Utwórz mapę URL, aby wysłać ją 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 w Cloud: docelowy serwer proxy

Utwórz docelowy serwer proxy przed mapą 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

Skonfiguruj komponent Cloud Load Balancer: 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].

Sprawdź, czy usługa Juice Shop jest dostępna 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>

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

Z 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 w Cloud Armor.

5. wykazywać znane luki w zabezpieczeniach,

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

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

Z Cloud Shell

curl -Ii http://$PUBLIC_SVC_IP/ftp

Wyniki

HTTP/1.1 200 OK
<...>

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

Z Cloud Shell

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

Wyniki

HTTP/1.1 200 OK
<...>

Obserwowanie luki w zabezpieczeniach, która umożliwia zdalne wykonanie kodu

Wykonywanie kodu zdalnego 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.

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

Zarówno komercyjne, jak i open source’owe aplikacje do skanowania służą do różnych celów, w tym do wykrywania 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 z dobrze znanym nagłówkiem klienta użytkownika:

Z Cloud Shell

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

Wyniki

HTTP/1.1 200 OK
<...>

Obserwowanie ataku na protokół: dzielenie 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). W takim przypadku odpowiedź może zostać zinterpretowana jako 2 odpowiedzi przez dowolny element, który ją analizuje, np. pośredni serwer proxy, co może spowodować, że w kolejnych żądaniach będą wyświetlane fałszywe treści. Wstaw sekwencję %0d%0a do parametru wejściowego, co może spowodować wyświetlenie wprowadzającej w błąd strony.

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

Obserwowanie utrwalania sesji

Z 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 wstępnie skonfigurowane reguły 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 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 blokować 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 internetowe.

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 zastosuj 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

Zaktualizuj zasadę zabezpieczeń, aby blokować utrwalanie 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

Z Cloud Shell

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

Wyniki

HTTP/1.1 403 Forbidden
<...>

Potwierdź, że atak RCE został zneutralizowany

Z Cloud Shell

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

Wyniki

HTTP/1.1 403 Forbidden
<..>

Potwierdź wykrycie znanego skanera

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

Sprawdzanie, czy próby utrwalenia sesji są blokowane

Z 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 zasad 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 po wywołaniu reguły przetwarzanie nie jest kontynuowane w przypadku reguł o wyższych wartościach priorytetu.

  • Priorytet 9000 – blokowanie LFI (local file inclusion)
  • Priorytet 9001 – blokowanie RCE (zdalnego wykonania kodu lub wstrzyknięcia polecenia)
  • Priorytet 9002 – wykryto skanery bloków
  • Priorytet 9003 – blokowanie ataków na protokoły, takich jak dzielenie i przemyt HTTP
  • Priorytet 9004 – blokowanie ataków typu Session Fixation
  • Priorytet 10000 – zezwól Twojemu adresowi IP na dostęp do witryny
  • Priorytet domyślny – odmowa.

*Zwróć uwagę, że reguła „Zezwól 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 bezpieczeństwa. Aby przejść do strony Cloud Logging, kliknij kolejno kartę Logs i link View policy logs. Będzie on automatycznie filtrować wyniki na podstawie interesującej Cię zasady zabezpieczeń, np. resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(block-with-modsec-crs). Obserwuj kody odpowiedzi błędu 403 i rozwijaj szczegóły logu, aby zobaczyć nazwę wymuszonych zasad bezpieczeństwa, pasującą wartość pola i dalej 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 laboratorium.

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 z kodem dotyczącego wstępnie skonfigurowanych reguł WAF w 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ć się przed atakami LFI, RCE, skanerami, atakami na protokoły i utrwalaniem sesji
  • Jak sprawdzić w logach, czy Cloud Armor złagodził skutki niektórych ataków z listy OWASP Top 10

Dalsze kroki