1. Pengantar
Load balancing Google Cloud di-deploy di edge jaringan Google pada titik kehadiran (POP) Google di seluruh dunia. Traffic pengguna yang diarahkan ke load balancer Proxy TCP masuk ke POP yang terdekat dengan pengguna dan selanjutnya mengalami load balancing melalui jaringan global Google ke backend terdekat yang memiliki kapasitas memadai.
Cloud Armor adalah sistem deteksi distributed denial of service dan firewall aplikasi web (WAF) Google. Cloud Armor terintegrasi erat dengan Load Balancer Proxy TCP Google Cloud dan memungkinkan Anda menginterogasi traffic masuk untuk menemukan permintaan yang tidak diinginkan. Fitur pembatasan kapasitas layanan ini memungkinkan Anda membatasi traffic ke resource backend berdasarkan volume permintaan dan mencegah traffic yang tidak diinginkan menggunakan resource di jaringan Virtual Private Cloud (VPC) Anda.
Load balancer proxy TCP/SSL Google Cloud memungkinkan Anda melakukan proxy traffic jenis TCP/ SSL di antara layanan backend.
Di lab ini, Anda akan membuat load balancer TCP/SSL dengan layanan backend dan membatasi akses ke load balancer hanya untuk kumpulan klien pengguna tertentu.
Yang akan Anda pelajari
- Cara membuat load balancer proxy TCP/SSL
- Cara membuat kebijakan keamanan Cloud Armor
- Cara membuat aturan daftar tolak IP untuk load balancer proxy TCP/SSL di Cloud Armor
- Cara membuat aturan pembatasan kapasitas untuk load balancer proxy TCP di Cloud Armor
- Cara menambahkan kebijakan keamanan ke layanan backend load balancing TCP/SSL
Yang Anda butuhkan
- Pengetahuan dasar tentang Google Compute Engine ( codelab)
- Pengetahuan dasar mengenai networking dan TCP/IP
- Pengetahuan dasar mengenai command line Unix/Linux
- Sebaiknya selesaikan tur jaringan di GCP dengan Networking di Google Cloud
2. Persyaratan
Penyiapan lingkungan mandiri
- Login ke Cloud Console lalu buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.
Catatan: Anda dapat mengakses Cloud Console dengan mudah dengan mengingat URL-nya, yaitu console.cloud.google.com.
Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Di lab ini, ID Project nantinya disebut sebagai PROJECT_ID.
Catatan: Jika menggunakan akun Gmail, Anda dapat menyetel lokasi default ke Tidak ada organisasi. Jika Anda menggunakan akun Google Workspace, pilih lokasi yang sesuai untuk organisasi Anda.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.
Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai$300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:
Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:
Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.
Sebelum memulai
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
Mengaktifkan API
Mengaktifkan semua layanan yang diperlukan
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. Membuat layanan backend
Buat 2 instance sebagai berikut - Buat instance1-b1 di zona us-central1-b
gcloud compute instances create vm-1-b1 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>This is VM1-b1 in central1-b</h1></body></html>' | tee /var/www/html/index.html EOF"
Buat instance 1-b2 di zona us-central1-b
gcloud compute instances create vm-1-b2 \ --image-family debian-9 \ --image-project debian-cloud \ --tags tcp-lb \ --zone us-central1-b \ --metadata startup-script="#! /bin/bash sudo apt-get update sudo apt-get install apache2 -y sudo sed -i '/Listen 80/c\Listen 110' /etc/apache2/ports.conf sudo service apache2 restart echo '<!doctype html><html><body><h1>This is VM1-b2 in central1-b</h1></body></html>' | tee /var/www/html/index.html EOF"
Membuat grup instance vm-ig1
gcloud compute instance-groups unmanaged create vm-ig1 --zone us-central1-b
Buat port bernama untuk grup instance. Untuk lab ini, kita akan menggunakan port 110
gcloud compute instance-groups set-named-ports vm-ig1 \ --named-ports tcp 110:110 --zone us-central1-b
Menambahkan instance ke grup instance
gcloud compute instance-groups unmanaged add-instances vm-ig1 \ --instances vm-1-b1,vm-1-b2 --zone us-central1-b
4. Mengonfigurasi load balancer
Selanjutnya, kita akan membuat health check.
gcloud compute health-checks create tcp my-tcp-health-check --port 110
Buat layanan backend
gcloud compute backend-services create my-tcp-lb --global-health-checks --global \ --protocol TCP --health-checks my-tcp-health-check --timeout 5m --port-name tcp110
Menambahkan grup instance ke layanan backend
gcloud compute backend-services add-backend my-tcp-lb --global --instance-group \ vm-ig1 --instance-group-zone us-central1-b --balancing-mode UTILIZATION \ --max-utilization 0.8
Mengonfigurasi proxy TCP target
gcloud compute target-tcp-proxies create my-tcp-lb-target-proxy --backend-service \ my-tcp-lb --proxy-header NONE
Mencadangkan alamat IPv4 statis global
Anda akan menggunakan alamat IP ini untuk menjangkau layanan yang di-load balance.
gcloud compute addresses create tcp-lb-static-ipv4 --ip-version=IPV4 --global
Konfigurasikan aturan penerusan global untuk alamat IP LB.
gcloud compute forwarding-rules create my-tcp-lb-ipv4-forwarding-rule \ --global --target-tcp-proxy my-tcp-lb-target-proxy --address LB_STATIC_IPV4 \ --ports 110
5. Membuat aturan firewall untuk load balancer proxy TCP
gcloud compute firewall-rules create allow-tcplb-and-health \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --target-tags tcp-lb \ --allow tcp:110
Setelah load balancer dibuat, uji dengan perintah berikut
Curl LB_IP:110
Selanjutnya, buat VM untuk Validasi penolakan akses ke LB
Anda harus membuat 2 instance, masing-masing dengan alamat IP publik dan bernama test-server1 dan test-server2
6. Membuat Kebijakan Keamanan di Cloud Armor
Di bagian ini, Anda akan membuat kebijakan keamanan backend dan 2 aturan dalam kebijakan di Cloud Armor.
Aturan pertama akan menolak sekumpulan IP terbatas agar tidak mengakses Load Balancer TCP dengan menetapkan kebijakan keamanan untuk menolak IP tertentu dan aturan kedua akan melakukan pembatasan kapasitas.
- Di Cloud Shell(lihat "Memulai Cloud Shell" di bagian "Penyiapan dan Persyaratan" untuk mengetahui petunjuk cara menggunakan Cloud Shell), buat kebijakan keamanan layanan backend yang disebut rate-limit-and-deny-tcp sebagai berikut
gcloud compute security-policies create rate-limit-and-deny-tcp \ --description "policy for tcp proxy rate limiting and IP deny"
Menambahkan Aturan ke Kebijakan Keamanan
Selanjutnya, tambahkan aturan daftar tolak ke kebijakan Cloud Armor "rate-limit-and-deny-tcp".
gcloud compute security-policies rules create 1000 --action deny --security-policy \ rate-limit-and-deny-tcp --description "deny test-server1" --src-ip-ranges \ "enter-test-server-1ip-here"
Menambahkan aturan pembatasan kapasitas ke kebijakan keamanan Cloud Armor "rate-limit-and-deny-tcp"
gcloud compute security-policies rules create 3000 \ --security-policy=rate-limit-and-deny-tcp \ --expression="true" --action=rate-based-ban --rate-limit-threshold-count=5 \ --rate-limit-threshold-interval-sec=60 --ban-duration-sec=300 \ --conform-action=allow --exceed-action=deny-404 --enforce-on-key=IP
Lampirkan kebijakan ke layanan backend Proxy TCP:
Jalankan perintah berikut untuk memastikan bahwa kebijakan keamanan dilampirkan ke layanan backend TCP Proxy.
gcloud compute backend-services update my-tcp-lb --security-policy \ rate-limit-and-deny-tcp
Mengaktifkan logging di Load Balancer Proxy TCP
gcloud beta compute backend-services update my-tcp-lb \ --enable-logging --logging-sample-rate=1
7. Memvalidasi aturan daftar tolak
Validasi aturan daftar tolak dengan login ke server pengujian yang IP-nya ditentukan dalam aturan daftar tolak dan jalankan perintah berikut
Curl LB_IP:110
Permintaan langsung dapat memberikan respons dari LB, tetapi tunggu hingga permintaan curl ditolak atau dihapus, lalu lihat log di Cloud Logging untuk memverifikasi entri log untuk aturan tolak ip yang dipicu.
Buka Cloud Logging dan di bagian resource, pilih jenis resource sebagai "tcp_ssl_proxy_rule" dan tetapkan target backend sebagai "my-tcp-lb".
Dengan resource yang ditentukan untuk pemfilteran, kita dapat memvalidasi bahwa aturan penolakan IP berlaku dari nilai PRIORITY 1000 dalam entri log dan tindakan yang dikonfigurasi "DENY" berlaku karena keduanya diinstruksikan dari aturan penolakan dan IP ditolak seperti yang ditunjukkan di bawah
8. Memvalidasi aturan pembatasan kapasitas
Validasi aturan batas kapasitas yang berlaku dengan mengirimkan banyak permintaan dalam jangka waktu singkat yang melebihi nilai minimum yang ditentukan (5 permintaan per menit).
Setelah selesai, klik lihat log di layanan cloud armor dan Anda akan diarahkan ke cloud logging tempat Anda dapat memfilter log menurut load balancer untuk melihat log cloud armor saat masuk.
Entri pembatasan kapasitas harus sesuai dengan screenshot di bawah. Kita dapat memvalidasi bahwa aturan pembatasan kapasitas berlaku dari nilai PRIORITY 3000 dalam entri log dan dari tindakan yang dikonfigurasi, tindakan "RATE BASED BAN" berlaku seperti yang diinstruksikan dari aturan pembatasan kapasitas.
9. Pembersihan Lingkungan
Pastikan untuk mengosongkan infrastruktur yang dibuat untuk menghindari biaya operasional infrastruktur yang tidak digunakan.
Cara tercepat adalah menghapus seluruh Project di GCP untuk memastikan tidak ada resource yang tertinggal dan tidak terurus.Namun, hapus resource satu per satu dengan perintah berikut
Load balancer Proxy TCP
gcloud compute target-tcp-proxies delete my-tcp-lb
Grup instance
gcloud compute instance-groups unmanaged delete vm-ig1
2 instance VM pengujian yang dibuat
gcloud compute instances delete Instance_name --zone=instance_zone
Layanan backend
gcloud compute backend-services delete BACKEND_SERVICE_NAME
Aturan Cloud Armor dalam kebijakan
gcloud compute security-policies rules delete 1000 \ --security-policy=rate-limit-and-deny-tcp && gcloud compute security-policies rules delete 3000 \ --security-policy=rate-limit-and-deny-tcp
Kebijakan keamanan Cloud Armor
gcloud compute security-policies delete rate-limit-and-deny-tcp