GSP474

Ringkasan
Duplikasi Traffic adalah fitur utama dalam jaringan Google Cloud untuk keamanan dan analisis jaringan. Fungsinya mirip dengan fungsi network tap atau sesi span dalam jaringan tradisional. Singkatnya, Duplikasi Paket menangkap traffic jaringan (ingress dan egress) dari "sumber yang diduplikasi" tertentu, menyalin traffic, dan meneruskan salinan ke "collector".
Penting untuk diperhatikan bahwa Duplikasi Paket menangkap payload lengkap setiap paket dan dengan demikian menggunakan bandwidth tambahan. Karena tidak didasarkan pada periode pengambilan sampel, Duplikasi Paket dapat digunakan untuk pemecahan masalah dan solusi keamanan yang lebih baik, serta analisis berbasis aplikasi lapisan yang lebih tinggi.
Duplikasi Paket didasarkan pada "Kebijakan Duplikasi Paket", yang berisi atribut berikut:
- Region
- Jaringan VPC
- Sumber yang Diduplikasi
- Collector (tujuan)
- Traffic yang diduplikasi (filter)
Berikut beberapa poin penting yang juga perlu dipertimbangkan:
- Hanya traffic TCP, UDP, dan ICMP yang dapat diduplikasi. Namun, hal ini akan memenuhi sebagian besar kasus penggunaan.
- "Sumber yang Diduplikasi" dan "Collector" harus berada di Region yang SAMA, tetapi dapat berada di zona yang berbeda dan bahkan VPC yang berbeda, selama VPC tersebut di-Peering dengan benar.
- Biaya bandwidth tambahan berlaku, terutama antar-zona. Untuk membatasi traffic yang diduplikasi, filter dapat digunakan.
Salah satu kasus penggunaan utama "Duplikasi Paket" adalah menggunakannya dalam solusi Intrusion Detection System (IDS). Beberapa solusi IDS berbasis cloud memerlukan layanan khusus untuk dijalankan di setiap VM sumber, atau untuk menempatkan perangkat virtual IDS secara inline antara sumber dan tujuan jaringan. Kedua hal ini memiliki implikasi yang signifikan. Misalnya, solusi berbasis layanan, meskipun didistribusikan sepenuhnya, mengharuskan sistem operasi tamu mendukung software tersebut. Solusi "in-line" dapat menyebabkan bottleneck jaringan karena semua traffic harus disalurkan melalui perangkat IDS. Solusi in-line juga tidak akan dapat menangkap traffic "timur-barat" dalam VM di VPC yang sama.
Duplikasi Paket Google Cloud tidak memerlukan software tambahan apa pun di VM dan didistribusikan sepenuhnya di setiap virtual machine yang diduplikasi. IDS "Collector" ditempatkan di luar jalur menggunakan Internal Network Load Balancer (ILB) dan akan menerima traffic "utara-selatan" dan traffic "timur-barat".
Deskripsi lab Duplikasi Paket
Untuk menunjukkan cara Duplikasi Paket dapat digunakan dengan IDS, pertimbangkan contoh ini menggunakan OpenSource IDS Suricata.
- Satu VPC dengan 2 subnet, satu untuk sumber yang diduplikasi dan satu untuk collector
- 2 Server web yang dibuat dengan alamat IP publik
- 1 Server collector (IDS) yang dibuat TANPA IP publik karena alasan keamanan
- CloudNAT diaktifkan untuk akses Internet sesuai kebutuhan
- Semua VM yang dibuat di region dan zona yang sama, untuk alasan kemudahan dan biaya
Di lab ini, Anda akan membuat lingkungan Google Cloud, mengonfigurasi ILB "Collector", mengonfigurasi Kebijakan Duplikasi Paket, serta menginstal dan mengonfigurasi [Suricata] (https://suricata-ids.org/) di instance virtual untuk bertindak sebagai IDS. Setelah selesai, pengujian jaringan akan dilakukan untuk memvalidasi konfigurasi dan penggunaan Duplikasi Paket dengan Open Source IDS. Set aturan dan konfigurasi Suricata yang sangat sederhana digunakan untuk menyederhanakan demonstrasi.

Tujuan:
- Membangun lingkungan Jaringan Google Cloud seperti yang ditunjukkan pada diagram di atas
- Membuat 2 virtual machine dengan perintah
gcloud
untuk bertindak sebagai SERVER WEB
- Membuat satu virtual machine dengan perintah
gcloud
untuk bertindak sebagai IDS
- Membuat Internal LoadBalancer (ILB) untuk bertindak sebagai "collector" untuk Duplikasi Paket
- Menginstal dan mengonfigurasi Open Source IDS (Suricata) di VM IDS
- Meninjau beberapa aturan pemberitahuan IDS dasar
- Membuat Kebijakan Duplikasi Paket
- Menguji Duplikasi Paket dengan membuat traffic jaringan ke subnet yang "diduplikasi"
- Menguji Suricata IDS dengan membuat traffic jaringan untuk menyimulasikan peristiwa IDS dan meninjau logging IDS
Penyiapan dan persyaratan
Sebelum mengklik tombol Start Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer yang dimulai saat Anda mengklik Start Lab akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab interaktif ini dapat Anda gunakan untuk melakukan aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, dialog akan terbuka untuk memilih metode pembayaran.
Di sebelah kiri ada panel Lab Details yang berisi hal-hal berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
-
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}}
Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}}
Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda.
Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
-
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Catatan: Untuk mengakses produk dan layanan Google Cloud, klik Navigation menu atau ketik nama layanan atau produk di kolom Search.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
-
Klik Activate Cloud Shell
di bagian atas Konsol Google Cloud.
-
Klik jendela berikut:
- Lanjutkan melalui jendela informasi Cloud Shell.
- Beri otorisasi ke Cloud Shell untuk menggunakan kredensial Anda guna melakukan panggilan Google Cloud API.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke Project_ID, . Output berisi baris yang mendeklarasikan Project_ID untuk sesi ini:
Project Cloud Platform Anda dalam sesi ini disetel ke {{{project_0.project_id | "PROJECT_ID"}}}
gcloud
adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list
- Klik Authorize.
Output:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
Untuk menetapkan akun aktif, jalankan:
$ gcloud config set account `ACCOUNT`
- (Opsional) Anda dapat menampilkan daftar ID project dengan perintah ini:
gcloud config list project
Output:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Catatan: Untuk mendapatkan dokumentasi gcloud
yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Tugas 1. Membuat jejak jaringan
Di bagian ini, Anda akan membuat VPC dan membuat 2 subnet di dalam VPC tersebut. Semua ini akan dilakukan menggunakan perintah CLI gcloud
di dalam Google Cloud Shell.
- Jalankan perintah berikut untuk membuat virtual private network:
gcloud compute networks create dm-stamford \
--subnet-mode=custom
- Tambahkan subnet ke VPC untuk traffic yang diduplikasi di :
gcloud compute networks subnets create dm-stamford-{{{project_0.default_region | REGION}}} \
--range=172.21.0.0/24 \
--network=dm-stamford \
--region={{{project_0.default_region | REGION}}}
- Tambahkan subnet ke VPC untuk collector di :
gcloud compute networks subnets create dm-stamford-{{{project_0.default_region | REGION}}}-ids \
--range=172.21.1.0/24 \
--network=dm-stamford \
--region={{{project_0.default_region | REGION}}}
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat jejak jaringan
Tugas 2. Membuat aturan firewall dan Cloud NAT
Sebanyak tiga aturan firewall akan diperlukan untuk menyelesaikan lab ini.
- Aturan 1 mengizinkan port http standar (TCP 80) dan protokol ICMP ke semua VM dari semua sumber.
- Aturan 2 memungkinkan IDS menerima SEMUA traffic dari SEMUA sumber. Berhati-hatilah agar TIDAK memberikan IP publik ke VM IDS di bagian selanjutnya.
- Aturan 3 mengizinkan port TCP 22 rentang IP "Proxy Google Cloud IAP" ke SEMUA VM, sehingga Anda dapat menghubungkan ssh ke VM melalui Konsol Cloud
Jalankan perintah berikut untuk membuat aturan firewall:
gcloud compute firewall-rules create fw-dm-stamford-allow-any-web \
--direction=INGRESS \
--priority=1000 \
--network=dm-stamford \
--action=ALLOW \
--rules=tcp:80,icmp \
--source-ranges=0.0.0.0/0
gcloud compute firewall-rules create fw-dm-stamford-ids-any-any \
--direction=INGRESS \
--priority=1000 \
--network=dm-stamford \
--action=ALLOW \
--rules=all \
--source-ranges=0.0.0.0/0 \
--target-tags=ids
gcloud compute firewall-rules create fw-dm-stamford-iapproxy \
--direction=INGRESS \
--priority=1000 \
--network=dm-stamford \
--action=ALLOW \
--rules=tcp:22,icmp \
--source-ranges=35.235.240.0/20
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat Aturan Firewall Cloud dan CloudNAT
Membuat Cloud Router
- Sebagai prasyarat untuk Cloud NAT, Cloud Router harus dikonfigurasi terlebih dahulu di region masing-masing:
gcloud compute routers create router-stamford-nat-{{{project_0.default_region | REGION}}} \
--region={{{project_0.default_region | REGION}}} \
--network=dm-stamford
Mengonfigurasi Cloud NAT
- Untuk menyediakan akses Internet ke VM tanpa IP publik, Cloud NAT harus dibuat di region masing-masing:
gcloud compute routers nats create nat-gw-dm-stamford-{{{project_0.default_region | REGION}}} \
--router=router-stamford-nat-{{{project_0.default_region | REGION}}} \
--router-region={{{project_0.default_region | REGION}}} \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges
VM IDS akan dibuat tanpa IP publik untuk memastikan bahwa VM tidak dapat diakses dari Internet. Namun, perangkat ini memerlukan akses internet untuk mendownload update dan menginstal paket Suricata.
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat CloudRouter dan Mengonfigurasi CloudNAT
Tugas 3. Membuat virtual machine
Membuat template instance untuk server web
- Template ini menyiapkan server Ubuntu di dan menginstal layanan web sederhana:
gcloud compute instance-templates create template-dm-stamford-web-{{{project_0.default_region | REGION}}} \
--region={{{project_0.default_region | REGION}}} \
--network=dm-stamford \
--subnet=dm-stamford-{{{project_0.default_region | REGION}}} \
--machine-type=e2-small \
--image=ubuntu-1604-xenial-v20200807 \
--image-project=ubuntu-os-cloud \
--tags=webserver \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
systemctl restart apache2'
Membuat grup instance terkelola untuk server web
- Perintah ini menggunakan Template Instance pada langkah sebelumnya untuk membuat 2 server web:
gcloud compute instance-groups managed create mig-dm-stamford-web-{{{project_0.default_region | REGION}}} \
--template=template-dm-stamford-web-{{{project_0.default_region | REGION}}} \
--size=2 \
--zone={{{project_0.default_zone | "ZONE"}}}
Membuat Template Instance untuk VM IDS
- Template ini menyiapkan server Ubuntu di dan tanpa IP publik:
gcloud compute instance-templates create template-dm-stamford-ids-{{{project_0.default_region | REGION}}} \
--region={{{project_0.default_region | REGION}}} \
--network=dm-stamford \
--no-address \
--subnet=dm-stamford-{{{project_0.default_region | REGION}}}-ids \
--image=ubuntu-1604-xenial-v20200807 \
--image-project=ubuntu-os-cloud \
--tags=ids,webserver \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
systemctl restart apache2'
Membuat grup instance terkelola untuk VM IDS
- Perintah ini menggunakan Template Instance pada langkah sebelumnya untuk membuat 1 VM yang akan dikonfigurasi sebagai IDS Anda. Penginstalan Suricata akan dibahas di bagian selanjutnya.
gcloud compute instance-groups managed create mig-dm-stamford-ids-{{{project_0.default_region | REGION}}} \
--template=template-dm-stamford-ids-{{{project_0.default_region | REGION}}} \
--size=1 \
--zone={{{project_0.default_zone | "ZONE"}}}
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat Virtual Machine
Tugas 4. Membuat internal load balancer
Duplikasi Paket menggunakan internal load balancer (ILB) untuk meneruskan traffic yang diduplikasi ke grup collector. Dalam hal ini, grup collector berisi satu VM.
- Buat health check dasar untuk layanan backend:
gcloud compute health-checks create tcp hc-tcp-80 --port 80
- Buat grup layanan backend yang akan digunakan untuk ILB:
gcloud compute backend-services create be-dm-stamford-suricata-{{{project_0.default_region | REGION}}} \
--load-balancing-scheme=INTERNAL \
--health-checks=hc-tcp-80 \
--network=dm-stamford \
--protocol=TCP \
--region={{{project_0.default_region | REGION}}}
- Tambahkan grup instance terkelola IDS yang dibuat ke dalam grup layanan backend yang dibuat pada langkah sebelumnya:
gcloud compute backend-services add-backend be-dm-stamford-suricata-{{{project_0.default_region | REGION}}} \
--instance-group=mig-dm-stamford-ids-{{{project_0.default_region | REGION}}} \
--instance-group-zone={{{project_0.default_zone | "ZONE"}}} \
--region={{{project_0.default_region | REGION}}}
- Buat aturan penerusan frontend untuk bertindak sebagai endpoint pengumpulan:
gcloud compute forwarding-rules create ilb-dm-stamford-suricata-ilb-{{{project_0.default_region | REGION}}} \
--load-balancing-scheme=INTERNAL \
--backend-service be-dm-stamford-suricata-{{{project_0.default_region | REGION}}} \
--is-mirroring-collector \
--network=dm-stamford \
--region={{{project_0.default_region | REGION}}} \
--subnet=dm-stamford-{{{project_0.default_region | REGION}}}-ids \
--ip-protocol=TCP \
--ports=all
Catatan: Meskipun TCP tercantum sebagai protokol, jenis traffic yang diduplikasi sebenarnya akan dikonfigurasi dalam Kebijakan Duplikasi Paket di bagian berikutnya. Selain itu, perhatikan bahwa flag --is-mirroring-collector,
telah ditetapkan.
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat Internal LoadBalancer
Tugas 5. Menginstal open source IDS - Suricata
Catatan: Untuk 2 bagian berikutnya, Anda akan menghubungkan SSH ke VM IDS dan menjalankan perintah di shell-nya. Berhati-hatilah agar tidak menjalankan perintah di Cloud Shell.
Menghubungkan SSH ke VM IDS
-
Dengan menggunakan Konsol Cloud, dari Navigation menu, buka Compute Engine > VM Instances.
-
Klik tombol SSH di VM IDS Anda.

Tindakan ini akan membuka jendela baru yang memungkinkan Anda menjalankan perintah di dalam VM IDS.
- Perbarui VM IDS:
sudo apt-get update -y
- Instal dependensi Suricata:
sudo apt-get install libpcre3-dbg libpcre3-dev autoconf automake libtool libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev libmagic-dev libjansson-dev libjansson4 -y
sudo apt-get install libnspr4-dev -y
sudo apt-get install libnss3-dev -y
sudo apt-get install liblz4-dev -y
sudo apt install rustc cargo -y
- Instal Suricata:
sudo add-apt-repository ppa:oisf/suricata-stable -y
sudo apt-get update -y
sudo apt-get install suricata -y
Catatan: Jika Anda menerima error selama penginstalan, lanjutkan dengan langkah verifikasi berikut.
Memverifikasi penginstalan
- Gunakan perintah berikut untuk memverifikasi penginstalan dan memeriksa versi Suricata yang diinstal:
suricata -V
Output-nya akan terlihat seperti ini:
This is Suricata version 5.0.3 RELEASE
Tugas 6. Mengonfigurasi dan meninjau Suricata
Perintah dan langkah-langkah untuk bagian berikut juga harus dilakukan di dalam SSH VM IDS/Suricata.
- Hentikan layanan Suricata dan cadangkan file konfigurasi default:
sudo systemctl stop suricata
sudo cp /etc/suricata/suricata.yaml /etc/suricata/suricata.backup
Mendownload dan mengganti file konfigurasi Suricata baru dan file aturan ringkas
File konfigurasi baru akan memperbarui antarmuka collector serta hanya memberikan pemberitahuan pada kumpulan traffic yang sangat kecil seperti yang dikonfigurasi dalam file my.rules
dan file suricata.yaml
. Setelan default untuk pemberitahuan dan set aturan Suricata cukup luas dan tidak diperlukan untuk lab ini.
- Jalankan perintah berikut untuk menyalin file.
wget https://storage.googleapis.com/tech-academy-enablement/GCP-Packet-Mirroring-with-OpenSource-IDS/suricata.yaml
wget https://storage.googleapis.com/tech-academy-enablement/GCP-Packet-Mirroring-with-OpenSource-IDS/my.rules
sudo mkdir /etc/suricata/poc-rules
sudo cp my.rules /etc/suricata/poc-rules/my.rules
sudo cp suricata.yaml /etc/suricata/suricata.yaml
Memulai layanan Suricata
Terkadang, layanan perlu dimulai ulang. Perintah restart
disertakan dalam langkah ini untuk memperhitungkan kemungkinan tersebut:
sudo systemctl start suricata
sudo systemctl restart suricata
Meninjau aturan Suricata sederhana untuk pengujian
Untuk lab ini, set aturan untuk Suricata telah dipangkas menjadi 4. Namun, penginstalan Suricata default memiliki set aturan yang luas dan lengkap.
- Memadatkan pemberitahuan menjadi daftar yang ringkas dan sederhana lebih baik untuk latihan lab ini sehingga setiap pemberitahuan dapat diuji dengan mudah.
cat /etc/suricata/poc-rules/my.rules
Output akan menampilkan total 4 aturan dan deskripsi setiap aturan.
####RULES#####
#UDP ALERTS
alert udp $HOME_NET any -> 8.8.8.8 53 (msg:"BAD UDP DNS REQUEST"; sid:99996; rev:1;)
#HTTP ALERTS
alert http any any -> $HOME_NET 80 (msg:"BAD HTTP PHP REQUEST"; http.uri; content:"index.php"; sid:99997; rev:1;)
#ICMP ALERTS
alert icmp any any -> $HOME_NET any (msg:"BAD ICMP"; sid:99998; rev:1;)
#TCP ALERTS
alert tcp $HOME_NET any -> any 6667 (msg:"BAD TCP 6667 REQUEST"; sid:99999; rev:1;)
Catatan: File aturan standar biasanya dapat ditemukan di /etc/suricata/rules/
atau /var/lib/suricata/rules
. Ini telah dikonfigurasi ulang untuk lokasi yang berbeda untuk lab ini di Langkah 2.
Tugas 7. Mengonfigurasi kebijakan Duplikasi Paket
Untuk bagian lab ini, kembali ke Cloud Shell
Penyiapan kebijakan Duplikasi Paket dapat diselesaikan dalam satu perintah sederhana (atau dengan membuka "wizard" di GUI). Dalam perintah ini, Anda menentukan ke-5 atribut yang disebutkan di bagian Deskripsi Duplikasi Paket.
- Region
- Jaringan VPC
- Sumber yang Diduplikasi
- Collector (tujuan)
- Traffic yang diduplikasi (filter)
Anda mungkin melihat bahwa tidak ada penyebutan "traffic yang diduplikasi". Hal ini karena kebijakan akan dikonfigurasi untuk mencerminkan "SEMUA" traffic dan tidak memerlukan filter. Kebijakan ini akan menduplikasi traffic ingress dan egress, lalu meneruskannya ke perangkat Suricata IDS, yang merupakan bagian dari ILB collector.
- Konfigurasi Kebijakan Duplikasi Paket dengan menjalankan perintah berikut di Cloud Shell:
gcloud compute packet-mirrorings create mirror-dm-stamford-web \
--collector-ilb=ilb-dm-stamford-suricata-ilb-{{{project_0.default_region | REGION}}} \
--network=dm-stamford \
--mirrored-subnets=dm-stamford-{{{project_0.default_region | REGION}}} \
--region={{{project_0.default_region | REGION}}}
Pada tahap ini, konfigurasi Duplikasi Paket dan Suricata akan selesai. Bagian berikut akan menguji keduanya.
Klik Periksa progres saya untuk memverifikasi tujuan.
Mengonfigurasi Kebijakan Duplikasi Paket
Tugas 8. Menguji Duplikasi Paket
Di bagian ini, Anda harus mengakses shell VM IDS. Jika jendela shell masih terbuka, gunakan jendela tersebut. Jika jendela shell telah ditutup, hubungkan kembali.
Anda juga akan menggunakan Cloud Shell untuk bertindak sebagai "Klien Internet".
Luangkan beberapa menit untuk menemukan IP Eksternal untuk kedua VM WEB.
Di Konsol Cloud, dari Navigation menu, klik Compute Engine > VM Instances dan catat External IPs dari kedua VM WEB. Keduanya masing-masing disebut sebagai [PUBLIC_IP_WEB1] dan [PUBLIC_IP_WEB2].
Anda juga dapat mengumpulkan informasi yang sama melalui perintah gcloud
dari Cloud Shell:
gcloud compute instances list
Kembali ke shell VM IDS
Menguji Duplikasi Paket
- Jalankan penangkapan paket (tcpdump) di VM IDS/Suricata dengan filter berikut:
sudo tcpdump -i ens4 -nn -n "(icmp or port 80) and net 172.21.0.0/24"
Catatan: Jaringan 172.21.0.0/24 adalah subnet yang DIDUPLIKASI; dan VM IDS bukan bagian dari subnet tersebut. Jika Duplikasi Paket dikonfigurasi dengan benar, VM IDS akan menerima traffic yang diduplikasi untuk subnet tersebut.
Membuat traffic ke subnet yang "diduplikasi"
- Menggunakan terminal Cloud Shell, lakukan ping ke alamat publik yang ditetapkan ke WEB1, dengan mengganti [PUBLIC_IP_WEB1] dengan alamat IP publik "WEB1" yang dapat dilihat di Konsol Cloud:
sudo apt install iputils-ping
ping -c 4 [PUBLIC_IP_WEB1]
Duplikasi Paket akan menduplikasi dan meneruskan traffic tersebut ke VM IDS dan Anda akan dapat melihatnya dalam penangkapan paket pada Langkah 1. Output di VM IDS akan mirip dengan ini, dengan X.X.X.X adalah alamat IP sumber permintaan ICMP. Di output tcpdump, Anda akan melihat IP pribadi WEBSERVER. Google Cloud melakukan penafsiran jaringan di edge.
00:55:32.980666 IP X.X.X.X > 172.21.0.2: ICMP echo request, id 3399, seq 0, length 64
00:55:32.980801 IP 172.21.0.2 > X.X.X.X: ICMP echo reply, id 3399, seq 0, length 64
00:55:33.968920 IP X.X.X.X > 172.21.0.2: ICMP echo request, id 3399, seq 1, length 64
00:55:33.968965 IP 172.21.0.2 > X.X.X.X: ICMP echo reply, id 3399, seq 1, length 64
00:55:34.980472 IP X.X.X.X > 172.21.0.2: ICMP echo request, id 3399, seq 2, length 64
00:55:34.980521 IP 172.21.0.2 > X.X.X.X: ICMP echo reply, id 3399, seq 2, length 64
00:55:35.986354 IP X.X.X.X > 172.21.0.2: ICMP echo request, id 3399, seq 3, length 64
00:55:35.986445 IP 172.21.0.2 > X.X.X.X: ICMP echo reply, id 3399, seq 3, length 64
Hal yang sama berlaku jika Anda melakukan ping ke alamat publik WEB2.
- Lakukan ping ke alamat publik yang ditetapkan ke WEB2, dengan mengganti [PUBLIC_IP_WEB2] dengan alamat IP publik "WEB2".
ping -c 4 [PUBLIC_IP_WEB2]
Duplikasi Paket akan meneruskan traffic tersebut ke VM IDS dan Anda akan dapat melihatnya dalam penangkapan paket pada Langkah 1. Output di VM IDS akan terlihat seperti ini. Perhatikan bahwa dalam output tcpdump, Anda akan melihat IP pribadi WEBSERVER. Google Cloud melakukan penafsiran jaringan di edge.
00:00:45.309407 IP X.X.X.X > 172.21.0.3: ICMP echo request, id 25159, seq 0, length 64
00:00:45.309736 IP 172.21.0.3 > X.X.X.X: ICMP echo reply, id 25159, seq 0, length 64
00:00:46.309406 IP X.X.X.X > 172.21.0.3: ICMP echo request, id 25159, seq 1, length 64
00:00:46.309602 IP 172.21.0.3 > X.X.X.X: ICMP echo reply, id 25159, seq 1, length 64
00:00:47.306278 IP X.X.X.X > 172.21.0.3: ICMP echo request, id 25159, seq 2, length 64
00:00:47.306406 IP 172.21.0.3 > X.X.X.X: ICMP echo reply, id 25159, seq 2, length 64
00:00:48.314506 IP X.X.X.X > 172.21.0.3: ICMP echo request, id 25159, seq 3, length 64
00:00:48.314698 IP 172.21.0.3 > X.X.X.X: ICMP echo reply, id 25159, seq 3, length 64
Untuk menunjukkan dengan lebih baik bahwa Duplikasi Paket menampilkan lebih dari sekadar header Layer 3, pengujian berikut akan menampilkan HTTP GET standar ke salah satu server WEB, termasuk handshake 3 arah TCP awal.
-
Buka tab baru di browser Anda dan buka alamat publik yang ditetapkan ke WEB1 dengan protokol http. Utilitas "curl" dari Konsol Cloud juga dapat digunakan, jika diinginkan.
-
Ganti [PUBLIC_IP_WEB1] dengan alamat IP publik "WEB1"
http://[PUBLIC_IP_WEB1]/
Duplikasi Paket akan meneruskan traffic tersebut ke VM IDS dan Anda akan dapat melihatnya dalam penangkapan paket pada Langkah 1.
Output di VM IDS akan terlihat seperti ini:
00:00:46.761748 IP X.X.X.60835 > 172.21.0.2.80: Flags [S]...
00:00:46.763037 IP 172.21.0.2.80 > X.X.X.60835: Flags [S.], ... ack ...
00:00:46.816407 IP X.X.X.60835 > 172.21.0.2.80: Flags [.], ack ...
00:00:46.823624 IP X.X.X.60835 > 172.21.0.2.80: Flags [P.], ... HTTP: GET / HTTP/1.1
00:00:46.823832 IP 172.21.0.2.80 > X.X.X.60835: Flags [.], ack ...
00:00:46.824549 IP 172.21.0.2.80 > X.X.X.60835: Flags [P.], ... HTTP: HTTP/1.1 200 OK
00:00:46.879214 IP X.X.X.60835 > 172.21.0.2.80: Flags [.], ack ...
00:00:46.888477 IP X.X.X.60835 > 172.21.0.2.80: Flags [F.], ...
00:00:46.888662 IP 172.21.0.2.80 > X.X.X.60835: Flags [F.], ... ack...
00:00:46.943915 IP X.X.X.60835 > 172.21.0.2.80: Flags [.], ack ...
- Hal yang sama akan berlaku jika Anda menjelajahi alamat publik WEB2. Ganti [PUBLIC_IP_WEB2] dengan alamat IP publik "WEB2"
http://[PUBLIC_IP_WEB2]/
Duplikasi Paket akan meneruskan traffic tersebut ke VM IDS dan Anda akan dapat melihatnya dalam penangkapan paket pada Langkah 1.
Output di VM IDS akan terlihat seperti ini.
00:00:58.819740 IP X.X.X.X.62335 > 172.21.0.3.80: Flags [S]...
00:00:58.820027 IP 172.21.0.3.80 > X.X.X.X.62335: Flags [S.], ... ack ...
00:00:58.875301 IP X.X.X.X.62335 > 172.21.0.3.80: Flags [.], ack ...
00:00:58.875329 IP X.X.X.X.62335 > 172.21.0.3.80: Flags [P.], ... HTTP: GET / HTTP/1.1
00:00:58.875448 IP 172.21.0.3.80 > X.X.X.X.62335: Flags [.], ack ...
00:00:58.876204 IP 172.21.0.3.80 > X.X.X.X.62335: Flags [P.], ... HTTP: HTTP/1.1 200 OK
00:00:58.929015 IP X.X.X.X.62335 > 172.21.0.3.80: Flags [.], ack ...
00:00:58.929047 IP X.X.X.X.62335 > 172.21.0.3.80: Flags [F.], ...
00:00:58.929244 IP 172.21.0.3.80 > X.X.X.X.62335: Flags [F.], ... ack...
00:00:58.993844 IP X.X.X.X.62335 > 172.21.0.3.80: Flags [.], ack ...
Ketik ctrl+c
di dalam VM IDS untuk keluar dari tcpdump.
Tugas 9. Menguji pemeriksaan dan pemberitahuan Suricata IDS
Bagian terakhir dari lab ini adalah menguji integrasi Duplikasi Paket dengan Open Source IDS Suricata. Luangkan waktu untuk meninjau ke-4 aturan Suricata yang ditetapkan untuk pemberitahuan dari Langkah 4 di bagian "Mengonfigurasi dan Meninjau Suricata":
####RULES#####
#UDP ALERTS
alert udp $HOME_NET any -> 8.8.8.8 53 (msg:"BAD UDP DNS REQUEST"; sid:99996; rev:1;)
#HTTP ALERTS
alert http any any -> $HOME_NET 80 (msg:"BAD HTTP PHP REQUEST"; http.uri; content:"index.php"; sid:99997; rev:1;)
#ICMP ALERTS
alert icmp any any -> $HOME_NET any (msg:"BAD ICMP"; sid:99998; rev:1;)
#TCP ALERTS
alert tcp $HOME_NET any -> any 6667 (msg:"BAD TCP 6667 REQUEST"; sid:99999; rev:1;)
4 langkah berikut akan memandu Anda menghasilkan traffic jaringan yang memicu setiap aturan ini. Pemberitahuan untuk setiap aturan tersebut akan terlihat di file log peristiwa Suricata.
Catatan: Pastikan Anda telah membuka jendela ssh untuk VM IDS dan VM server WEB. Anda harus melihat KEDUANYA secara bersamaan untuk menyelesaikan bagian ini.
TEST1 dan TEST2 akan dimulai dari WEBSERVER dan menguji traffic egress.
TEST3 dan TEST4 akan dimulai di Cloud Shell dan menguji traffic ingress.
TEST 1: Menguji aturan/pemberitahuan UDP egress.
- Jalankan perintah berikut dari salah satu server WEB untuk menghasilkan traffic DNS egress:
dig @8.8.8.8 example.com
- Sekarang, lihat pemberitahuan di file log peristiwa Suricata pada VM IDS.
Beralih ke jendela ssh untuk VM IDS
- Jalankan perintah berikut di jendela SSH untuk VM IDS:
egrep "BAD UDP DNS" /var/log/suricata/eve.json
Entri log akan terlihat seperti ini:
@GCP: {"timestamp":"2020-08-14T01:23:14.903210+0000","flow_id":412864167987242,"in_iface":"ens4","event_type":"alert","src_ip":"172.21.0.2","src_port":47020,"dest_ip":"8.8.8.8","dest_port":53,"proto":"UDP","alert":{"action":"allowed","gid":1,"signature_id":99996,"rev":1,"signature":"BAD UDP DNS REQUEST","category":"","severity":3},"dns":{"query":[{"type":"query","id":17268,"rrname":"EXAMPLE.COM","rrtype":"A","tx_id":0}]},"app_proto":"dns","flow":{"pkts_toserver":1,"pkts_toclient":0,"bytes_toserver":82,"bytes_toclient":0,"start":"2020-08-19T18:23:14.903210+0000"}}
TEST 2: Menguji aturan/pemberitahuan "TCP" egress
- Jalankan perintah berikut dari salah satu server WEB untuk menghasilkan traffic TCP Egress, dengan mengganti [PUBLIC_IP_WEB2] dengan alamat IP publik "WEB2":
telnet [PUBLIC_IP_WEB2] 6667
-
ketik ctrl+c
untuk keluar.
-
Sekarang, lihat pemberitahuan di file log peristiwa Suricata pada VM IDS.
Beralih ke jendela ssh untuk VM IDS
- Jalankan perintah berikut dari jendela SSH VM IDS:
egrep "BAD TCP" /var/log/suricata/eve.json
Entri log akan terlihat seperti ini:
@GCP: {"timestamp":"2020-08-14T01:27:45.058526+0000","flow_id":479376049300638,"in_iface":"ens4","event_type":"alert","src_ip":"172.21.0.2","src_port":36168,"dest_ip":"100.64.1.1","dest_port":6667,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":99999,"rev":1,"signature":"BAD TCP 6667 REQUEST","category":"","severity":3},"flow":{"pkts_toserver":1,"pkts_toclient":0,"bytes_toserver":74,"bytes_toclient":0,"start":"2020-08-19T18:27:45.058526+0000"}}
TEST 3: Menguji aturan/pemberitahuan "ICMP" ingress
-
Jalankan perintah berikut dari Cloud Shell untuk menghasilkan traffic ICMP INGRESS.
-
Ganti [PUBLIC_IP_WEB1] dengan alamat IP publik "WEB1".
ping -c 3 [PUBLIC_IP_WEB1]
- Sekarang, lihat pemberitahuan di file log peristiwa Suricata di VM IDS:
egrep "BAD ICMP" /var/log/suricata/eve.json
Entri log akan terlihat seperti ini:
@GCP: {"timestamp":"2020-08-14T01:24:46.065250+0000","flow_id":1114966772874978,"in_iface":"ens4","event_type":"alert","src_ip":"X.X.X.X","dest_ip":"172.21.0.2","proto":"ICMP","icmp_type":8,"icmp_code":0,"alert":{"action":"allowed","gid":1,"signature_id":99998,"rev":1,"signature":"BAD ICMP","category":"","severity":3},"flow":{"pkts_toserver":1,"pkts_toclient":0,"bytes_toserver":98,"bytes_toclient":0,"start":"2020-08-19T18:24:46.065250+0000"}}
TEST 4: Menguji aturan/pemberitahuan "HTTP" ingress.
Dengan menggunakan browser web di workstation lokal atau curl
di Cloud Shell, jelajahi alamat publik yang ditetapkan ke WEB1 untuk halaman index.php, menggunakan protokol http.
- Ganti [PUBLIC_IP_WEB1] dengan alamat IP publik "WEB1".
http://[PUBLIC_IP_WEB1]/index.php
- Sekarang, lihat pemberitahuan di file log peristiwa Suricata di VM IDS:
egrep "BAD HTTP" /var/log/suricata/eve.json
Entri log akan terlihat seperti ini:
@GCP: {"timestamp":"2020-08-14T01:26:36.794124+0000","flow_id":1901424684045611,"in_iface":"ens4","event_type":"alert","src_ip":"X.X.X.X","src_port":61132,"dest_ip":"172.21.0.3","dest_port":80,"proto":"TCP","tx_id":0,"alert":{"action":"allowed","gid":1,"signature_id":99997,"rev":1,"signature":"BAD HTTP PHP REQUEST","category":"","severity":3},"http":{"hostname":"PUBLIC_IP_WEB1","url":"\/index.php","http_user_agent":"curl\/7.64.1","http_content_type":"text\/html","http_method":"GET","protocol":"HTTP\/1.1","status":404,"length":275},"app_proto":"http","flow":{"pkts_toserver":7,"pkts_toclient":6,"bytes_toserver":658,"bytes_toclient":1284,"start":"2020-08-19T18:26:36.660779+0000"}}
Selamat!
Dengan demikian, lab untuk penggunaan Duplikasi Paket Google Cloud dengan Open Source IDS Suricata telah selesai.
Langkah Berikutnya/Pelajari Lebih Lanjut
Untuk mengetahui informasi tambahan terkait Duplikasi Paket, lihat:
Untuk mengetahui informasi selengkapnya tentang Suricata, lihat https://suricata-ids.org/
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui pada 18 November 2024
Lab Terakhir Diuji pada 6 September 2023
Hak cipta 2025 Google LLC. Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.