88032023006 | ZICO

...

Praktik Minggu 9 DevSecOps

Monitoring & Logging

1. Monitoring dan Logging dalam DevSecOps

Dalam pendekatan DevSecOps, monitoring dan logging berperan sebagai mekanisme observasi berkelanjutan untuk memastikan keamanan, ketersediaan, dan performa sistem. Monitoring tidak hanya berfokus pada uptime layanan, tetapi juga pada deteksi dini terhadap anomali, kegagalan aplikasi, serta potensi serangan keamanan.

Artikel ini membahas implementasi monitoring dan logging menggunakan ELK Stack (Elasticsearch dan Kibana) serta Prometheus dan Grafana pada lingkungan Windows 11 dengan PowerShell.

2. Arsitektur Monitoring dan Logging

Arsitektur sistem monitoring yang digunakan terdiri dari beberapa komponen utama:

  • Aplikasi sederhana berbasis Flask sebagai sumber log
  • Elasticsearch sebagai media penyimpanan dan indexing log
  • Kibana sebagai alat visualisasi dan analisis log
  • Prometheus sebagai pengumpul metrics sistem
  • Grafana sebagai dashboard pemantauan performa

Aplikasi menghasilkan log aktivitas yang dikirim ke Elasticsearch dan dianalisis melalui Kibana, sementara Prometheus memantau metrics sistem seperti CPU dan RAM melalui Node Exporter yang kemudian divisualisasikan pada Grafana.

3. Implementasi Lingkungan Sistem

Seluruh layanan dijalankan menggunakan Docker pada sistem operasi Windows 11. Manajemen container dilakukan melalui PowerShell dengan menggunakan Docker Compose.

ELK Stack digunakan untuk centralized logging, sedangkan Prometheus dan Grafana digunakan untuk metrics monitoring. Aplikasi Flask dijalankan untuk menghasilkan log aktivitas sistem yang relevan dengan kebutuhan analisis keamanan.

4.1 Flow Praktik 1 : Tahap Persiapan

Pada tahap awal, dilakukan persiapan lingkungan kerja untuk implementasi centralized logging menggunakan ELK Stack (Elasticsearch, Logstash/Filebeat, dan Kibana) yang dijalankan menggunakan Docker.

Langkah pertama adalah membuat direktori baru sebagai workspace monitoring:

Direktori ini digunakan untuk menyimpan seluruh konfigurasi Docker, aplikasi simulasi, dan log aplikasi.

4.2 Flow Praktik 1 : Buat File Docker Compose ELK

Membuat File Dockerfile

Dockerfile digunakan untuk membangun image aplikasi Flask sederhana yang akan menghasilkan log.

Membuat File docker-compose.yml

File docker-compose.yml digunakan untuk menjalankan Elasticsearch, Kibana, dan aplikasi Flask secara terintegrasi.

File docker-compose.yml digunakan untuk menjalankan Elasticsearch, Kibana, dan aplikasi Flask secara terintegrasi.

Image1

Setelah service berjalan, dilakukan pengujian akses:

Elasticsearch: http://localhost:9200

Image1

Kibana: http://localhost:5601

Image1

Hal ini memastikan bahwa ELK Stack telah berjalan dengan baik.

4.3 Flow Praktik 1 : Buat File Simulasi Log Aplikasi

Aplikasi Flask dibuat untuk menghasilkan berbagai jenis log yang akan dianalisis pada Kibana.

Membuat File app.py

Endpoint /login digunakan untuk mensimulasikan login gagal berulang (brute force).

Image1

4.4 Flow Praktik 1 : Analisis di Kibana

Log yang masuk ke Elasticsearch dianalisis melalui Kibana Discover dengan melakukan pencarian log bertipe Failed login attempt. Selain itu, visualisasi log dibuat dalam bentuk dashboard untuk memudahkan analisis pola serangan.

Cari log Failed login attempt

Image1

Buat dashboard

Image1

5.1 Flow Praktik 2 : Tahap Persiapan

File prometheus.yml dibuat untuk mengatur proses pengambilan metrik sistem.

Membuat file prometheus.yml

Edit dan tambahkan pada docker-compose.yml

Konfigurasi ini kemudian ditambahkan ke dalam docker-compose.yml untuk menjalankan Prometheus, Node Exporter, dan Grafana.

5.2 Flow Praktik 2 : Jalankan Semua Service

Seluruh container dijalankan ulang agar konfigurasi terbaru aktif

Image1

Status container diverifikasi menggunakan

Image1

5.3 Flow Praktik 2 : Cek Prometheus

Prometheus diakses melalui browser: http://localhost:9090

Menu Status → Targets

Image1

Menu Status → Targets digunakan untuk memastikan bahwa Node Exporter berada dalam status UP.

5.4 Flow Praktik 2 : Cek Grafana

Grafana diakses melalui: http://localhost:3000

Login menggunakan akun default

Image1

5.5 Flow Praktik 2 : Tambahkan Data Source Prometheus

Buka browser: http://localhost:3000

Pada Grafana, dilakukan penambahan data source Prometheus melalui menu:

  1. Connections → Data Sources
  2. Add new data source
  3. Pilih Prometheus
  4. URL:
  5. Kemudian dilakukan Save & Test untuk memastikan koneksi berhasil.
Image1

5.6 Flow Praktik 2 : Import Dashboard CPU & RAM

  1. Menu Dashboards → Import
  2. Dashboard ID: (Node Exporter Full)
  3. Klik tombol Load (biru di kanan)
  4. Import
Image1

Dashboard ini digunakan untuk memonitor penggunaan CPU dan RAM secara real-time.

6.1 Simulasi Skenario Keamanan: Error aplikasi

Simulasi error dilakukan dengan menambahkan endpoint /error pada aplikasi Flask yang memicu exception.

1. Tambahkan endpoint error di app.py

Edit app.py, tambahkan route ini:

Sehingga app.py lengkap seperti ini:

2. Jalankan ulang Flask (Docker)

Image1

3. Trigger

Image1

4. Hasil

Simulasi Login Gagal (Brute Force)

Simulasi Error Aplikasi

Kibana

Image1

6.2. Simulasi Skenario Keamanan: Login gagal berulang

Untuk menguji efektivitas monitoring dan logging, dilakukan beberapa simulasi sebagai berikut:

1. Jalankan ini di PowerShell:

Artinya:
30 request login gagal
Dalam waktu singkat
Sangat mirip brute force attack

2. Hasil:

Simulasi Login gagal berulang

Image1

Kibana

Image1

6.3. Simulasi Skenario Keamanan: Beban sistem tinggi (CPU)

1. Jalankan di PowerShell:

Artinya:
Membuat 8 job
Mengunci 8 core CPU

2. Hasil:

Grafana: Sebelum

Image1

Grafana: Sesudah

Image1

Hentikan semua Job

7. Hasil Observasi Monitoring

Berdasarkan hasil pengamatan:

  • Kibana menampilkan peningkatan log Failed login attempt dalam waktu singkat
  • Terjadi pola log berulang yang mengindikasikan aktivitas mencurigakan
  • Grafana menunjukkan lonjakan CPU usage saat simulasi beban tinggi dilakukan
  • Penggunaan memory meningkat ketika error aplikasi terjadi secara berulang

Dashboard pada Kibana dan Grafana mempermudah analisis berbasis waktu (time-series) dan membantu memahami hubungan antara log aplikasi dan metrics sistem.

8. Analisis Keamanan Sistem

Pada praktik monitoring DevSecOps ini, dilakukan tiga skenario simulasi keamanan untuk menguji kemampuan sistem monitoring dalam mendeteksi potensi ancaman, yaitu error aplikasi, login gagal berulang, dan beban sistem tinggi. Seluruh aktivitas dipantau menggunakan ELK Stack untuk log dan Prometheus–Grafana untuk metrik sistem.

1. Simulasi Error Aplikasi
Simulasi error dilakukan dengan memicu exception pada aplikasi Flask melalui endpoint /error. Aktivitas ini menghasilkan log dengan level ERROR yang tercatat di sistem logging dan dikirim ke Elasticsearch.

    Indikasi ancaman:
  • Munculnya log error secara tiba-tiba dan berulang
  • Indikasi bug aplikasi atau input tidak tervalidasi
  • Potensi eksploitasi celah aplikasi (error-based attack>
    Dampak ke sistem:
  • Aplikasi dapat crash atau berhenti merespons
  • Penurunan keandalan layanan
  • Informasi error berpotensi membocorkan detail sistem jika tidak ditangani dengan baik

2. Simulasi Login Gagal Berulang (Brute Force)

Simulasi brute force dilakukan dengan mengakses endpoint /login secara berulang dalam waktu singkat. Setiap percobaan login gagal menghasilkan log dengan level WARNING yang menunjukkan pola kegagalan autentikasi.

    Indikasi ancaman:
  • Banyak event login gagal dalam waktu singkat
  • Pola akses tidak wajar dari sisi aplikasi
  • Karakteristik serangan brute force terhadap kredensial
    Dampak ke sistem:
  • Risiko pengambilalihan akun (account takeover)
  • Peningkatan beban aplikasi akibat request berulang
  • Penurunan keamanan autentikasi jika tidak ada mekanisme pembatasan

3. Simulasi Beban Sistem Tinggi (High CPU & RAM)

Beban sistem disimulasikan dengan menghasilkan konsumsi CPU dan memori yang tinggi secara bersamaan. Hasilnya terlihat jelas pada dashboard Grafana melalui lonjakan CPU usage dan penggunaan memori.

    Indikasi ancaman:
  • Lonjakan penggunaan resource secara tiba-tiba
  • Pola yang menyerupai serangan denial of service (DoS)
  • Ketidakwajaran aktivitas sistem dibanding kondisi normal
    Dampak ke sistem:
  • Aplikasi menjadi lambat atau tidak responsif
  • Potensi downtime layanan
  • Resource starvation yang memengaruhi service lain

9. Dokumentasi dan Bukti Implementasi

Sebagai bukti implementasi, disertakan:

  1. Screenshot dashboard log pada Kibana
  2. Image1
  3. Screenshot dashboard metrics CPU dan RAM pada Grafana
  4. Image1
  5. Repository GitHub berisi konfigurasi Docker dan dokumentasi
  6. Image1

    Dokumentasi ini menunjukkan bahwa sistem monitoring dan logging telah berjalan sesuai dengan skenario tugas yang diberikan.

10. Kesimpulan

Implementasi ELK Stack serta Prometheus dan Grafana membuktikan bahwa monitoring dan logging merupakan komponen penting dalam DevSecOps. Dengan visibilitas yang baik terhadap log dan metrics sistem, potensi ancaman keamanan dan gangguan performa dapat terdeteksi lebih awal.

Pendekatan ini mendukung prinsip continuous security monitoring dan membantu tim dalam melakukan respons insiden secara cepat dan terukur.