Create the VPC network

Periksa progres saya

/ 20

Set up the test application

Periksa progres saya

/ 10

Set up the Cloud load balancer component- instance group

Periksa progres saya

/ 20

Set up the Cloud load balancer component- health check

Periksa progres saya

/ 30

Create the Cloud Armor security policy

Periksa progres saya

/ 20

Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.

GSP879

Lab mandiri Google Cloud

Ringkasan

Google Cloud Armor adalah solusi keamanan jaringan edge tingkat perusahaan dari Google yang menyediakan perlindungan DDOS, penerapan aturan WAF, dan pengelolaan adaptif dalam skala besar.

Cloud Armor telah memperluas rangkaian aturan WAF yang dikonfigurasi sebelumnya untuk memitigasi kerentanan keamanan aplikasi web berdasarkan OWASP Top 10. Rangkaian aturan ini didasarkan pada OWASP Modsecurity core rule set versi 3.0.2 untuk melindungi dari beberapa risiko keamanan aplikasi web yang paling umum, termasuk penyertaan file lokal (LFI), penyertaan file jarak jauh (RFI), eksekusi kode jarak jauh (RCE), dan banyak lagi.

Di lab ini, Anda akan mempelajari cara memitigasi beberapa kerentanan umum dengan menggunakan aturan WAF Google Cloud Armor.

Yang akan Anda pelajari

Di lab ini, Anda akan mempelajari cara:

  • Menyiapkan Grup Instance dan Load Balancer Global untuk mendukung layanan
  • Mengonfigurasi kebijakan keamanan Cloud Armor dengan aturan WAF yang telah dikonfigurasi sebelumnya untuk melindungi dari LFI, RCE, pemindai, serangan protokol, dan fiksasi sesi
  • Memastikan Cloud Armor memitigasi serangan dengan mengamati log

Topologi aturan WAF Cloud Armor

Aplikasi OWASP Juice Shop berguna untuk pelatihan dan awareness terkait keamanan karena sengaja dirancang agar berisi contoh dari setiap kerentanan keamanan yang termasuk dalam OWASP Top 10. Penyerang dapat mengeksploitasi aplikasi tersebut untuk tujuan pengujian. Di lab ini, Anda akan menggunakan OWASP Juice Shop sebagai demonstrasi serangan aplikasi, lalu melindungi aplikasi tersebut dengan aturan WAF Cloud Armor. Aplikasi tersebut menggunakan Load Balancer Google Cloud sebagai frontend, yang menjadi tempat diterapkannya kebijakan dan aturan keamanan Cloud Armor. Aplikasi ini disajikan di internet publik sehingga dapat dijangkau dari hampir semua tempat dan dilindungi menggunakan Cloud Armor serta aturan firewall VPC.

Penyiapan dan persyaratan

Sebelum mengklik tombol Start Lab

Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.

Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.

Untuk menyelesaikan lab ini, Anda memerlukan:

  • Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
  • Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.

Cara memulai lab dan login ke Google Cloud Console

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran. Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:

    • Tombol Open Google Cloud console
    • Waktu tersisa
    • Kredensial sementara yang harus Anda gunakan untuk lab ini
    • Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
  2. Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).

    Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.

    Tips: Atur tab di jendela terpisah secara berdampingan.

    Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
  3. Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.

    {{{user_0.username | "Username"}}}

    Anda juga dapat menemukan Username di panel Lab Details.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab Details.

  6. Klik Next.

    Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
  7. Klik halaman berikutnya:

    • Setujui persyaratan dan ketentuan.
    • Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
    • Jangan mendaftar uji coba gratis.

Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.

Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search. Ikon Navigation menu dan kolom Search

Mengaktifkan Cloud Shell

Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.

  1. Klik Activate Cloud Shell Ikon Activate Cloud Shell di bagian atas Konsol Google Cloud.

  2. Klik jendela berikut:

    • Lanjutkan melalui jendela informasi Cloud Shell.
    • Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.

Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:

Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}

gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.

  1. (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
  1. Klik Authorize.

Output:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} Untuk menetapkan akun aktif, jalankan: $ gcloud config set account `ACCOUNT`
  1. (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project

Output:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Catatan: Untuk mendapatkan dokumentasi gcloud yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.

Sebelum memulai

  • Di Cloud Shell, siapkan project ID Anda:
gcloud config list project export PROJECT_ID=$(gcloud config get-value project) echo $PROJECT_ID gcloud config set project $PROJECT_ID

Tugas 1. Membuat jaringan VPC

  • Di Cloud Shell, masukkan perintah berikut untuk membuat jaringan VPC:
gcloud compute networks create {{{project_0.startup_script.network_name| Network Name}}} --subnet-mode custom Created NAME SUBNET_MODE BGP_ROUTING_MODE {{{project_0.startup_script.network_name| Network Name}}} CUSTOM REGIONAL

Membuat subnet

  • Di Cloud Shell, masukkan perintah berikut untuk membuat subnet:
gcloud compute networks subnets create {{{project_0.startup_script.subnet_name| Subnet Name}}} \ --network {{{project_0.startup_script.network_name| Network Name}}} --range 10.0.0.0/24 --region {{{project_0.startup_script.region_1| Region}}} Created NAME REGION NETWORK RANGE {{{project_0.startup_script.subnet_name| Subnet Name}}} {{{project_0.startup_script.region_1| Region}}} {{{project_0.startup_script.network_name| Network Name}}} 10.0.0.0/24

Membuat aturan firewall VPC

Setelah membuat VPC dan subnet, siapkan beberapa aturan firewall.

  • Aturan firewall pertama bernama allow-js-site yang mengizinkan semua IP mengakses IP eksternal situs aplikasi pengujian di port 3000.
  • Aturan firewall kedua bernama allow-health-check yang mengizinkan health-check dari IP sumber load balancer.
  1. Di Cloud Shell, masukkan perintah berikut untuk membuat aturan firewall yang mengizinkan semua IP mengakses aplikasi:
gcloud compute firewall-rules create {{{project_0.startup_script.firewall_rule| Firewall Name}}} --allow tcp:3000 --network {{{project_0.startup_script.network_name| Network Name}}}

Output:

Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED {{{project_0.startup_script.firewall_rule| Firewall Name}}} {{{project_0.startup_script.network_name| Network Name}}} INGRESS 1000 tcp:3000 False
  1. Di Cloud Shell, masukkan perintah berikut untuk membuat aturan firewall yang mengizinkan health-check dari rentang health-check Google:
gcloud compute firewall-rules create {{{project_0.startup_script.firewall_rule1| Firewall Name1}}} \ --network={{{project_0.startup_script.network_name| Network Name}}} \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-healthcheck \ --rules=tcp

Output:

Creating firewall...done. NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED {{{project_0.startup_script.firewall_rule1| Firewall_Name1}}} {{{project_0.startup_script.network_name| Network Name}}} INGRESS 1000 tcp False

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat jaringan VPC

Tugas 2. Menyiapkan aplikasi pengujian

Buat aplikasi pengujian, dalam kasus ini server web OWASP Juice Shop. Saat membuat instance komputasi, Anda menggunakan image container untuk memastikan server memiliki layanan yang sesuai. Anda men-deploy server ini di beserta dengan tag jaringan yang mengizinkan health check.

Membuat aplikasi OWASP Juice Shop

  • Gunakan aplikasi open source yang sudah dikenal luas, yaitu OWASP Juice Shop, sebagai aplikasi yang rentan. Anda juga dapat menggunakan aplikasi ini untuk melakukan verifikasi keamanan OWASP melalui situs OWASP.
gcloud compute instances create-with-container {{{project_0.startup_script.vm_instance| vm_instance}}} --container-image bkimminich/juice-shop \ --network {{{project_0.startup_script.network_name| Network Name}}} \ --subnet {{{project_0.startup_script.subnet_name| Subnet Name}}} \ --private-network-ip=10.0.0.3 \ --machine-type n1-standard-2 \ --zone {{{project_0.startup_script.zone| Zone}}} \ --tags allow-healthcheck

Output:

NAME ZONE MACHINE_TYPE PREEMPTIBLE {{{project_0.startup_script.vm_instance| vm_instance}}} {{{project_0.startup_script.zone| Zone}}} n1-standard-2 INTERNAL_IP EXTERNAL_IP STATUS 10.0.0.3 RUNNING

Klik Periksa progres saya untuk memverifikasi tujuan. Menyiapkan aplikasi pengujian

Menyiapkan komponen load balancer Cloud: grup instance

  1. Di Cloud Shell, masukkan perintah berikut untuk membuat grup instance yang tidak dikelola:
gcloud compute instance-groups unmanaged create {{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --zone={{{project_0.startup_script.zone| Zone}}}

Output:

NAME LOCATION SCOPE NETWORK MANAGED INSTANCES {{{project_0.startup_script.vm_instance_group| Instance Group}}} {{{project_0.startup_script.zone| Zone}}} zone 0
  1. Tambahkan instance Google Compute Engine (GCE) Juice Shop ke grup instance yang tidak dikelola:
gcloud compute instance-groups unmanaged add-instances {{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --zone={{{project_0.startup_script.zone| Zone}}} \ --instances={{{project_0.startup_script.vm_instance| VM Instance}}}

Output:

Updated [https://www.googleapis.com/compute/v1/projects//zones/{{{project_0.startup_script.zone| Zone}}}/instanceGroups/{{{project_0.startup_script.vm_instance_group| Instance_Group}}}].
  1. Tetapkan port bernama ke port aplikasi Juice Shop:
gcloud compute instance-groups unmanaged set-named-ports \ {{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --named-ports=http:3000 \ --zone={{{project_0.startup_script.zone| Zone}}}

Output:

Updated [https://www.googleapis.com/compute/v1/projects//zones/{{{project_0.startup_script.zone| Zone}}}/instanceGroups/{{{project_0.startup_script.vm_instance_group| Instance Group}}}].

Klik Periksa progres saya untuk memverifikasi tujuan. Menyiapkan komponen load balancer Cloud: grup instance

Menyiapkan komponen load balancer Cloud: health check

Setelah membuat grup instance yang tidak dikelola, buat health check, layanan backend, peta URL, proxy target, dan aturan penerusan.

  • Di Cloud Shell, masukkan perintah berikut guna membuat health-check untuk port layanan Juice Shop:
gcloud compute health-checks create tcp tcp-port-3000 \ --port 3000

Output:

Created NAME PROTOCOL tcp-port-3000 TCP

Menyiapkan komponen load balancer Cloud: layanan backend

  1. Di Cloud Shell, masukkan perintah berikut untuk membuat parameter layanan backend:
gcloud compute backend-services create juice-shop-backend \ --protocol HTTP \ --port-name http \ --health-checks tcp-port-3000 \ --enable-logging \ --global

Output:

NAME BACKENDS PROTOCOL juice-shop-backend HTTP
  1. Tambahkan grup instance Juice Shop ke layanan backend:
gcloud compute backend-services add-backend juice-shop-backend \ --instance-group={{{project_0.startup_script.vm_instance_group| Instance Group}}} \ --instance-group-zone={{{project_0.startup_script.zone| Zone}}} \ --global

Output:

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

Menyiapkan komponen load balancer Cloud: peta URL

  • Di Cloud Shell, masukkan perintah berikut untuk membuat peta URL guna mengirim permintaan masuk ke backend:
gcloud compute url-maps create juice-shop-loadbalancer \ --default-service juice-shop-backend

Output:

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

Menyiapkan komponen load balancer Cloud: proxy target

  • Di Cloud Shell, masukkan perintah berikut untuk membuat Proxy Target guna merutekan permintaan masuk ke peta URL:
gcloud compute target-http-proxies create juice-shop-proxy \ --url-map juice-shop-loadbalancer

Output:

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

Menyiapkan komponen load balancer Cloud: aturan penerusan

  • Di Cloud Shell, masukkan perintah berikut guna membuat aturan penerusan untuk Load Balancer:
gcloud compute forwarding-rules create juice-shop-rule \ --global \ --target-http-proxy=juice-shop-proxy \ --ports=80

Output:

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

Memastikan layanan Juice Shop online

  1. Dari Cloud Shell:
PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule --global --format="value(IPAddress)")" echo $PUBLIC_SVC_IP

Output:

<VIP publik layanan>

Tunggu beberapa menit sebelum melanjutkan, atau Anda mungkin akan mendapatkan respons HTTP/1.1 404 Not Found.

  1. Dari Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP

Output:

HTTP/1.1 200 OK <...>

Anda juga dapat membuka browser untuk melihat Juice Shop.

Halaman Welcome to OWASP Juice Shop

Sekarang Anda siap mempelajari kerentanan Juice Shop dan melindunginya dengan rangkaian aturan WAF Cloud Armor.

Klik Periksa progres saya untuk memverifikasi tujuan. Menyiapkan komponen load balancer Cloud: health check

Tugas 3. Mendemonstrasikan kerentanan yang diketahui

Di lab ini, Anda akan mendemonstrasikan keadaan sebelum dan sesudah aturan WAF Cloud Armor diterapkan dalam beberapa langkah singkat.

Mengamati kerentanan LFI: path traversal

Penyertaan File Lokal adalah proses untuk melihat file yang ada di server dengan mengeksploitasi lemahnya validasi input pada permintaan, yang berpotensi mengungkap data sensitif. Contoh berikut menunjukkan bahwa path traversal dapat dilakukan. Di browser Anda atau dengan curl, amati jalur yang disajikan oleh aplikasi.

  1. Dari Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP/ftp

Output:

HTTP/1.1 200 OK <...>

Perhatikan bahwa path traversal juga dapat dilakukan.

  1. Dari Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP/ftp/../

Output:

HTTP/1.1 200 OK <...>

Mengamati kerentanan RCE

Eksekusi Kode Jarak Jauh mencakup berbagai skenario injeksi perintah, baik dengan perintah UNIX maupun Windows, yang memungkinkan penyerang mengeksekusi perintah OS yang biasanya hanya dapat dijalankan oleh pengguna dengan hak istimewa. Contoh berikut menunjukkan eksekusi perintah ls sederhana yang diteruskan.

  • Dari Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Output:

HTTP/1.1 200 OK <...>

Hapus flag curl untuk mengamati output lengkapnya.

Mengamati akses pemindai yang sudah dikenal luas

Aplikasi pemindaian komersial dan open source digunakan untuk berbagai tujuan, termasuk menemukan kerentanan. Alat tersebut menggunakan User-Agent dan Header lainnya yang sudah dikenal luas. Perhatikan bahwa curl berjalan dengan baik menggunakan Header User-Agent yang sudah dikenal luas.

  • Dalam Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Output:

HTTP/1.1 200 OK <...>

Mengamati serangan protokol: pemisahan HTTP

Beberapa aplikasi web menggunakan input dari pengguna untuk menghasilkan header dalam respons. Jika aplikasi tidak memfilter input dengan benar, penyerang berpotensi memanipulasi parameter input dengan urutan %0d%0a (urutan CRLF yang digunakan untuk memisahkan baris berbeda).

Respons tersebut kemudian dapat diinterpretasikan sebagai dua respons oleh proses apa pun yang menguraikannya, seperti server proxy perantara, yang berpotensi menyajikan konten palsu dalam permintaan berikutnya. Sisipkan urutan %0d%0a ke parameter input, yang dapat menyebabkan disajikannya halaman menyesatkan.

  • Dari 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>"

Output:

HTTP/1.1 200 OK <...>

Mengamati fiksasi sesi

  • Dalam Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP -H session_id=X

Output:

HTTP/1.1 200 OK <...>

Tugas 4. Menentukan aturan WAF Cloud Armor

  1. Gunakan perintah berikut di Cloud Shell untuk membuat daftar aturan WAF yang telah dikonfigurasi sebelumnya:
gcloud compute security-policies list-preconfigured-expression-sets EXPRESSION_SET Sqli-canary RULE_ID owasp-crs-v030001-id942110-sqli owasp-crs-v030001-id942120-sqli <...>
  1. Buat kebijakan keamanan Cloud Armor menggunakan perintah berikut di Cloud Shell:
gcloud compute security-policies create {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "Block with OWASP ModSecurity CRS"
  1. Di Cloud Shell, perbarui aturan default kebijakan keamanan.
Catatan: Prioritas aturan default memiliki nilai numerik 2147483647. gcloud compute security-policies rules update 2147483647 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --action "deny-403"
  1. Karena aturan default dikonfigurasi dengan tindakan deny, Anda harus mengizinkan akses dari IP Anda. Temukan IP publik Anda (curl, ipmonkey, whatismyip, dll.):
MY_IP=$(curl ifconfig.me)
  1. Tambahkan aturan pertama untuk mengizinkan akses dari IP Anda (SISIPKAN IP ANDA DI BAWAH):
gcloud compute security-policies rules create 10000 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "allow traffic from my IP" \ --src-ip-ranges "$MY_IP/32" \ --action "allow"
  1. Di Cloud Shell, perbarui kebijakan keamanan untuk memblokir serangan LFI.

Terapkan OWASP ModSecurity Core Rule Set untuk mencegah path traversal yang tujuannya mengeksekusi penyertaan file lokal.

gcloud compute security-policies rules create 9000 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block local file inclusion" \ --expression "evaluatePreconfiguredExpr('lfi-stable')" \ --action deny-403
  1. Di Cloud Shell, perbarui kebijakan keamanan untuk memblokir Eksekusi Kode Jarak Jauh (RCE).

Berdasarkan OWASP ModSecurity Core Rule Set, terapkan aturan yang mencari RCE, termasuk injeksi perintah. Perintah OS umum akan terdeteksi dan diblokir.

gcloud compute security-policies rules create 9001 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block rce attacks" \ --expression "evaluatePreconfiguredExpr('rce-stable')" \ --action deny-403
  1. Perbarui kebijakan keamanan untuk memblokir pemindai keamanan.

Terapkan OWASP ModSecurity Core Rule Set untuk memblokir pemindai keamanan, klien HTTP untuk pembuatan skrip, dan web crawler yang sudah dikenal luas.

gcloud compute security-policies rules create 9002 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block scanners" \ --expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \ --action deny-403
  1. Di Cloud Shell, perbarui kebijakan keamanan untuk memblokir serangan protokol.

Berdasarkan OWASP ModSecurity Core Rule Set, terapkan aturan yang mencari karakter Enter (CR) %0d dan Linefeed (LF) %0a serta jenis serangan protokol lainnya seperti Penyelubungan Permintaan HTTP.

gcloud compute security-policies rules create 9003 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block protocol attacks" \ --expression "evaluatePreconfiguredExpr('protocolattack-stable')" \ --action deny-403
  1. Perbarui kebijakan keamanan untuk memblokir fiksasi sesi.

Berdasarkan OWASP ModSecurity Core Rule Set, terapkan aturan berikut menggunakan Cloud Shell:

gcloud compute security-policies rules create 9004 \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --description "block session fixation attacks" \ --expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \ --action deny-403
  1. Lampirkan kebijakan keamanan ke layanan backend:
gcloud compute backend-services update juice-shop-backend \ --security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \ --global

Penerapan aturan mungkin memerlukan waktu beberapa saat (tidak lebih dari 10 menit).

  1. Setelah menunggu beberapa saat, uji kerentanan yang sebelumnya didemonstrasikan untuk mengonfirmasi penerapan aturan WAF Cloud Armor pada langkah berikutnya.

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat kebijakan keamanan Cloud Armor

Mengamati perlindungan Cloud Armor dengan OWASP ModSecurity Core Rule Set

  1. Di Cloud Shell, pastikan kerentanan LFI dimitigasi:
curl -Ii http://$PUBLIC_SVC_IP/?a=../

Output:

HTTP/1.1 403 Forbidden <...>
  1. Di Cloud Shell, pastikan serangan RCE dimitigasi:
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls

Output:

HTTP/1.1 403 Forbidden <..>
  1. Di Cloud Shell, konfirmasi deteksi pemindai yang sudah dikenal luas.
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"

Output:

HTTP/1.1 403 Forbidden <..>
  1. Di Cloud Shell, pastikan serangan protokol dimitigasi.

Berdasarkan OWASP ModSecurity Core Rule Set ver.3.0.2, mitigasi serangan protokol dipastikan dengan:

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

Output:

HTTP/1.1 403 Forbidden <..>
  1. Di Cloud Shell, pastikan upaya fiksasi sesi diblokir:
curl -Ii http://$PUBLIC_SVC_IP/?session_id=a

Output:

HTTP/1.1 403 Forbidden <..>

Tugas 5. Meninjau aturan Keamanan Cloud Armor

Setelah membuat kebijakan keamanan, lihat aturan apa saja yang telah dikonfigurasi.

Halaman dengan tab Rules, yang menampilkan beberapa aturan beserta deskripsinya

Aturan dievaluasi berdasarkan prioritas: aturan dengan angka yang lebih rendah dievaluasi terlebih dahulu dan setelah aturan tersebut dipicu, pemrosesan tidak akan berlanjut ke aturan dengan angka prioritas yang lebih tinggi.

  • Prioritas 9000 - Blokir LFI (penyertaan file lokal)
  • Prioritas 9001 - Blokir RCE (eksekusi kode jarak jauh/injeksi perintah)
  • Prioritas 9002 - Blokir Pemindai yang Terdeteksi
  • Prioritas 9003 - Blokir Serangan Protokol seperti pemisahan HTTP dan penyelubungan HTTP
  • Prioritas 9004 - Blokir Serangan Fiksasi Sesi
  • Priority 10000 - Izinkan IP Anda mengakses Situs
  • Prioritas Default - Tolak.
Catatan: Perhatikan bahwa aturan "izinkan IP Anda" dikonfigurasi dengan angka prioritas tertinggi untuk mengizinkan akses ke situs, sekaligus tetap memblokir setiap serangan.

Tugas 6. Mengamati log kebijakan keamanan Cloud Armor

Dari halaman konsol Cloud Armor, lihat detail kebijakan keamanan dan klik tab Logs, lalu klik link View policy logs agar diarahkan ke halaman Cloud Logging. Log ini otomatis difilter berdasarkan kebijakan keamanan yang diinginkan, misalnya, resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:. Perhatikan kode respons error 403 dan perluas detail log untuk melihat nama kebijakan keamanan yang diterapkan, nilai kolom yang cocok, hingga ID ekspresi yang telah dikonfigurasi sebelumnya (atau ID tanda tangan).

Log ini otomatis difilter berdasarkan kebijakan keamanan yang diinginkan, misalnya, resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:().

  • Perhatikan kode respons error 403 dan perluas detail log untuk melihat nama kebijakan keamanan yang diterapkan, nilai kolom yang cocok, hingga ID ekspresi yang telah dikonfigurasi sebelumnya (atau ID tanda tangan).

Screenshot berikut menunjukkan contoh log untuk kebijakan keamanan yang diterapkan dan dikonfigurasi di lab ini.

Log LFI Log LFI

Log RCE Log RCE

Log deteksi pemindai Log deteksi pemindai

Log serangan protokol Log serangan protokol

Log fiksasi sesi Log fiksasi sesi

Selamat!

Anda berhasil memitigasi beberapa kerentanan umum menggunakan aturan WAF Google Cloud Armor.

Manual Terakhir Diperbarui pada 12 Mei 2025

Lab Terakhir Diuji pada 12 Mei 2025

Hak cipta 2026 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.

Sebelum memulai

  1. Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
  2. Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
  3. Di kiri atas layar, klik Start lab untuk memulai

Gunakan penjelajahan rahasia

  1. Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
  2. Klik Open console dalam mode pribadi

Login ke Konsol

  1. Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
  2. Setujui persyaratan, dan lewati halaman resource pemulihan
  3. Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project

Konten ini tidak tersedia untuk saat ini

Kami akan memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami akan menghubungi Anda melalui email saat konten tersedia

Satu lab dalam satu waktu

Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini

Gunakan penjelajahan rahasia untuk menjalankan lab

Menggunakan jendela Samaran atau browser pribadi adalah cara terbaik untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa, yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.

Selesaikan langkah cepat ini untuk memulai lab Anda.