Implementasi Web Application Firewall (SafeLine) Menggunakan Docker
- Durasi: 1 Pertemuan (3 x 50 menit)
- Tingkat: Menengah
Capaian Pembelajaran
Setelah menyelesaikan praktikum ini mahasiswa mampu:
- Menjelaskan konsep Web Application Firewall (WAF).
- Menggunakan Docker untuk menjalankan aplikasi keamanan.
- Mendeploy DVWA menggunakan Docker Compose.
- Mendeploy SafeLine Community Edition menggunakan Automatic Deploy.
- Mengkonfigurasi Reverse Proxy.
- Melakukan pengujian serangan web sederhana.
- 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 --versiondocker 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 $USERLogout dan login kembali agar perubahan group membership berlaku. Perintah berikut juga dapat digunakan agar perubahan langsung berlaku tanpa perlu melakukan login ulang:
newgrp docker
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 psPastikan 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 versionPeriksa Docker Compose
docker compose versionPeriksa memori
free -hPeriksa ruang penyimpanan
df -hDokumentasi 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)" -- --enMetode ini merupakan metode deployment yang direkomendasikan pada dokumentasi resmi SafeLine. Setelah menjalankan perintah di atas, tekan
1untuk instalasi. Jika terjadi error akibat kekurangan ukuran media penyimpanan, jalankan perintah berikut:sudo lvextend -l +100%FREE -r /dev/ubuntu-vg/ubuntu-lvSetelah instalasi selesai, catat password admin.
-
Login Dashboard
Port default Web UI adalah 9443. Di web browser, buka:
https://192.168.56.10:9443Jika lupa password, reset akun administrator dengan perintah:
docker exec safeline-mgt resetadminPerintah 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:
| Kolom | Nilai |
|---|---|
| Domain | dvwa.lab |
| Listening Port | 80 |
| Protocol | HTTP |
| Metode | Reverse Proxy |
| Upstream | http://127.0.0.1:4280 |
| Website Name | DVWA |
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:
| Action | URL | Jenis Serangan | Client IP | Waktu |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
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:
- Informasi apa saja pada dashboard yang perlu dianalisis terlebih dahulu?
- Bagaimana membedakan antara serangan yang valid dan false positive?
- 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:
- Tujuan praktikum.
- Topologi.
- Instalasi Docker.
- Instalasi DVWA.
- Instalasi SafeLine.
- Konfigurasi Reverse Proxy.
- Hasil pengujian serangan.
- Analisis Event.
- Jawaban tugas.
- Kesimpulan.
Rubrik Penilaian
| Komponen | Bobot |
|---|---|
| Instalasi Docker | 10% |
| Deploy DVWA | 15% |
| Deploy SafeLine | 20% |
| Konfigurasi Reverse Proxy | 20% |
| Pengujian serangan | 20% |
| Analisis log | 10% |
| Laporan | 5% |