Skip to main content

Implementasi Web Application Firewall (SafeLine) Menggunakan Docker

  • Durasi: 1 Pertemuan (3 x 50 menit)
  • Tingkat: Menengah

Capaian Pembelajaran

Setelah menyelesaikan praktikum ini mahasiswa mampu:

  1. Menjelaskan konsep Web Application Firewall (WAF).
  2. Menggunakan Docker untuk menjalankan aplikasi keamanan.
  3. Mendeploy DVWA menggunakan Docker Compose.
  4. Mendeploy SafeLine Community Edition menggunakan Automatic Deploy.
  5. Mengkonfigurasi Reverse Proxy.
  6. Melakukan pengujian serangan web sederhana.
  7. Menganalisis log keamanan yang dihasilkan SafeLine.

Tujuan Praktikum

Mahasiswa mampu mengimplementasikan Web Application Firewall (SafeLine) sebagai lapisan perlindungan aplikasi web dan menganalisis aktivitas serangan berdasarkan log yang dihasilkan.


Dasar Teori

1. Docker

Docker merupakan platform container yang memungkinkan aplikasi dijalankan secara terisolasi tanpa harus membuat Virtual Machine baru. Keuntungan:

  • ringan
  • cepat
  • mudah dipindahkan
  • mudah direplikasi

2. DVWA

DVWA (Damn Vulnerable Web Application) adalah aplikasi web yang sengaja dibuat rentan untuk pembelajaran keamanan aplikasi web. Mahasiswa akan menggunakan DVWA untuk melakukan simulasi:

  • SQL Injection
  • XSS
  • Brute Force
  • Command Injection

3. SafeLine

SafeLine merupakan Web Application Firewall (WAF) yang bekerja sebagai Reverse Proxy. Semua request HTTP akan melewati SafeLine terlebih dahulu sebelum diteruskan ke DVWA.

Browser → SafeLine → DVWA

Peralatan

VM dari Praktikum 1:

  • Windows Host
  • Ubuntu Server (VM)

Software:

  • Docker Engine
  • Docker Compose Plugin
  • Git
  • SafeLine CE
  • DVWA

Topologi

Praktikum ini menggunakan topologi yang telah disiapkan pada Praktium 1.

Internet

VirtualBox NAT Network

┌──────────────────┴──────────────────┐
│ │
Ubuntu Server Kali
192.168.56.10 192.168.56.20
│ │
└──────────────────┬──────────────────┘

VirtualBox Host-Only Network

Windows Host
192.168.56.1

Langkah Praktikum

A. Instalasi Docker

  • Instal Docker menggunakan repository Ubuntu.

    sudo apt install -y docker.io docker-compose-v2
  • Enable docker

    sudo systemctl enable --now docker
  • Verifikasi instalasi

    docker --version
    docker compose version
  • Pastikan Docker Service aktif

    sudo systemctl status docker
  • Menambahkan user student ke group docker (opsional tapi direkomendasikan) Langkah ini penting agar setiap perintah docker tidak perlu diawali dengan sudo.

    sudo usermod -aG docker $USER

    Logout dan login kembali agar perubahan group membership berlaku. Perintah berikut juga dapat digunakan agar perubahan langsung berlaku tanpa perlu melakukan login ulang:

    newgrp docker
warning

Docker hanya kompatibel dengan firewall iptables-nft dan iptables-legacy. Aturan firewall yang dibuat menggunakan UFW tidak didukung pada Docker. Oleh sebab itu, saat port kontainer diekspos menggunakan Docker, port-port tersebut akan melewati aturan firewall UFW.


B. Deploy DVWA Menggunakan Docker

  • Clone repository

    git clone https://github.com/digininja/DVWA.git
  • Masuk ke folder DVWA

    cd DVWA
  • Edit konfigurasi DVWA

    nano compose.yml
  • Cari bagian

    ports:
    - "127.0.0.1:4280:80"
  • Ubah menjadi

    ports:
    - "0.0.0.0:4280:80"

    Perubahan IP ini diperlukan agar DVWA dapat diakses melalui host lain yang ada di jaringan Host-Only VirtualBox.

  • Jalankan container

    docker compose up -d
  • Lihat container

    docker ps

    Pastikan container DVWA dan database berhasil berjalan.


C. Menambahkan DNS lokal

Di Windows Host, edit file

C:\Windows\System32\drivers\etc\hosts

Tambahkan

192.168.56.10 dvwa.lab

D. Deploy SafeLine Community Edition

  • Periksa Persyaratan

    Periksa Docker

    docker version

    Periksa Docker Compose

    docker compose version

    Periksa memori

    free -h

    Periksa ruang penyimpanan

    df -h

    Dokumentasi resmi merekomendasikan Docker ≥20.10.14, Docker Compose ≥2.0.0, serta sumber daya minimum 1 vCPU, RAM 1 GB, dan ruang disk 5 GB.

  • Instalasi SafeLine

    Jalankan script berikut:

    sudo bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en

    Metode ini merupakan metode deployment yang direkomendasikan pada dokumentasi resmi SafeLine. Setelah menjalankan perintah di atas, tekan 1 untuk instalasi. Jika terjadi error akibat kekurangan ukuran media penyimpanan, jalankan perintah berikut:

    sudo lvextend -l +100%FREE -r /dev/ubuntu-vg/ubuntu-lv

    Setelah instalasi selesai, catat password admin.

  • Login Dashboard

    Port default Web UI adalah 9443. Di web browser, buka:

    https://192.168.56.10:9443

    Jika lupa password, reset akun administrator dengan perintah:

    docker exec safeline-mgt resetadmin

    Perintah tersebut akan menampilkan username dan password administrator. Gunakan username dan password tersebut untuk login di dashboard SafeLine.


E. Menambahkan Website

Masuk ke Dashboard SafeLine. Di sidebar kiri, klik Applications, kemudian klik tombol Add Application. Isi data berikut:

KolomNilai
Domaindvwa.lab
Listening Port80
ProtocolHTTP
MetodeReverse Proxy
Upstreamhttp://127.0.0.1:4280
Website NameDVWA
warning

Pastikan konfigurasi yang dimasukkan sesuai dengan alamat container DVWA pada hasil inspeksi Docker: docker ps.


F. Pengujian Normal

Akses

http://dvwa.lab

Pastikan

  • Login berhasil
  • Database dapat diakses
  • Semua menu berjalan

G. Monitoring

Amati Dashboard SafeLine. Perhatikan:

  • Request
  • Client IP
  • URL
  • Status
  • Action

H. Pengujian SQL Injection

Masuk ke menu SQL Injection. Masukkan:

' OR '1'='1

Amati

  • Request diblokir?
  • Alert muncul?
  • Rule apa yang aktif?

I. Pengujian XSS

Masukkan

<script>alert(1)</script>

Amati

  • Status Request
  • Alert
  • Log

J. Pengujian Command Injection

Masuk ke menu DVWA. Masukkan payload sederhana sesuai fitur yang tersedia, misalnya:

127.0.0.1 && id

Amati apakah SafeLine:

  • mengizinkan request,
  • memberikan peringatan,
  • atau memblokir request.

K. Analisis Event

Di dashboard SafeLine, klik menu Attacks di sidebar kiri, kemudian klik Logs. Berdasarkan informasi yang ditampilkan, lengkapi tabel berikut:

ActionURLJenis SeranganClient IPWaktu
...............

Studi Kasus

Sebuah organisasi telah memasang SafeLine di depan aplikasi web internal. Selama satu jam terakhir, dashboard menunjukkan peningkatan jumlah request yang diblokir dengan pola SQL Injection dan XSS. Jawablah:

  1. Informasi apa saja pada dashboard yang perlu dianalisis terlebih dahulu?
  2. Bagaimana membedakan antara serangan yang valid dan false positive?
  3. Tindakan apa yang sebaiknya dilakukan administrator apabila serangan berasal dari alamat IP yang sama secara berulang?

Tugas Praktikum

Tugas 1

Buat diagram komunikasi:

  • Sebelum menggunakan SafeLine
  • Setelah menggunakan SafeLine

Tugas 2

Lakukan pengujian:

  • SQL Injection
  • XSS
  • Command Injection

Sertakan:

  • Payload
  • Screenshot
  • Event SafeLine
  • Analisis hasil

Laporan Praktikum

Laporan memuat:

  1. Tujuan praktikum.
  2. Topologi.
  3. Instalasi Docker.
  4. Instalasi DVWA.
  5. Instalasi SafeLine.
  6. Konfigurasi Reverse Proxy.
  7. Hasil pengujian serangan.
  8. Analisis Event.
  9. Jawaban tugas.
  10. Kesimpulan.

Rubrik Penilaian

KomponenBobot
Instalasi Docker10%
Deploy DVWA15%
Deploy SafeLine20%
Konfigurasi Reverse Proxy20%
Pengujian serangan20%
Analisis log10%
Laporan5%