1bab iii analisis dan perancangan...
TRANSCRIPT
15
1 BAB III
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem
Sistem Server Config merupakan sebuah metode yang memisahkan
konfigurasi basis data sebuah website kedalam server terpisah yang dihubungkan
menggunakan mekanisme representational state transfer (REST) dan JSON Web
Token (JWT) sebagai autentikasinya. Penelitian ini bertujuan untuk membuat
sistem keamanan yang mengimplementasikan Server Config menggunakan token
JWT terhadap konfigurasi website. Sehingga sistem keamanan yang dibuat untuk
melindungi konfigurasi website dari serangan symlink.
3.1.1 Analisis Masalah
Shared web hosting bekerja dengan menempatkan banyak aplikasi web
kedalam sebuah server tunggal, namun tidak semua aplikasi web memiliki
keamanan yang kuat. Sebagian besar aplikasi web merupakan content
managemenet system (CMS) yang telah disediakan oleh penyedia layanan web
hosting, tetapi ketika salah satu aplikasi web berhasil disusupi oleh penyerang,
maka konfigurasi basis data pada aplikasi lain pada server yang sama mudah
dibaca. Hal ini memungkinkan penyerang menggunakan informasi username dan
password yang terdapat didalam konfigurasi tersebut untuk membaca, merubah
atau menghapus basis data sehingga dapat mengambil alih aplikasi web yang lain
atau mengambil informasi berharga didalam basis data.
Permasalahan tersebut mendasari hipotesa pada penelitian ini, jika
konfigurasi aplikasi web dalam sebuah web dipisah dengan aplikasi didalam
server yang berbeda, memungkinkan penyerang tidak dapat membaca atau
memanfaatkan informasi username dan password yang terdapat pada konfigurasi
aplikasi web.
Berdasarkan hipotesa tersebut, dalam penelitian ini diajukan mekanisme
pemisahan file konfigurasi dengan aplikasi web kedalam server yang berbeda,
konsep ini berdasarkan mekanisme Demilitarized Zone (DMZ) yaitu untuk
melindungi sistem dengan cara memisahkan beberapa jaringan kedalam zona yang
mempunyai Firewall antar zona [24]. Konsep DMZ tersebut seperti tertera pada
Gambar 3.1.
16
Proses autentikasi terhadap token website client mempunyai tujuan untuk
memastikan apakah sesuatu yang datang (request) sesuai dengan yang diakui.
Dalam mekanisme ini Server Config akan memverifikasi apakah yang melakukan
request benar-benar pengguna yang berhak. Dalam melakukan proses autentikasi,
standar JWT digunakan untuk memverifikasi sebuah request. Pada tahapan
mekanisme diatas, aplikasi web mempunyai konfigurasi tersendiri yang disebut
token, dibuat untuk mengakses konfigurasi basis data yang terletak didalam server
berbeda sebagai penghubung untuk bisa mengakses kedalam basis data.
Peletakkan konfigurasi website kedalam server yang berbeda diharapkan
dapat membuat penyerang tidak bisa langsung membaca konfigurasi yang terdapat
dalam sebuah file konfigurasi web. File konfigurasi website hanya memuat token
untuk membuat permintaan konfigurasi basis data yang telah terenkripsi dengan
key yang hanya bisa didapatkan oleh pengguna yang sah. Penyerang yang
mendapatkan token dengan user berbeda mendapatkan key yang tidak bisa
digunakan untuk membuka konfigurasi basis data dari server[25].
3.1.2 Analisa Kebutuhan non Fungsional
1. Sistem Operasi
Sistem operasi yang digunakan adalah Ubuntu yang merupakan salah satu
distro Linux berbasiskan Debian. Versi Ubuntu yang digunakan adalah Ubuntu
14.04 Server dan Ubuntu 14.04 Desktop yang menggunakan Kernel Linux 4.4.
Gambar 3.1 Sistem yang berbeda level keamanannya diletakkan kedalam zona keamanan yang
terpisah
17
2. Web Server Dan Basis Data
Aplikasi web server yang digunakan adalah Apache. Sedangkan
manajemen server yang digunakan adalah VestaCP. VestaCP merupakan open
source web hosting control panel yang digunakan untuk mengatur website, EMail,
basis data dan DNS yang sudah terintegrasi didalamnya. Basis data yang
digunakan adalah MySQL dan PHPMyadmin sebagai managemen basis datanya.
3. Bahasa Pemrograman
Bahasa pemrograman yang digunakan adalah PHP. PHP adalah bahasa
pemrograman server-side untuk aplikasi Web. Keunggulan bahasa pemrograman
PHP adalah bisa membuat web menjadi dinamis serta tidak membutuhkan
kompilasi. Sedangkan PHP framework yang digunakan adalah Codeigniter.
Framework digunakan untuk mempercepat pembuatan aplikasi dan memberikan
keamanan yang lebih daripada menulis ulang aplikasi dari awal.
3.2 Perancangan Sistem
Perancangan sistem terbagi menjadi 2 rancangan sistem, yaitu rancangan
sistem pengamanan konfigurasi website menggunakan JSON Web Token dan
rancangan aplikasi Server Config. Rancangan antarmuka merupakan bagian dari
rancangan sistem aplikasi Server Config yang digunakan untuk memanajemen
aplikasi dan pengguna.
3.2.1 Rancangan Sistem
Rancangan sistem pengamanan konfigurasi website menggunakan JSON
Web Token dari serangan symlink terbagi menjadi 3 sub sistem, yaitu Sistem
Pengamanan Konfigurasi, Sistem REST API, dan Sistem Autentikasi. Gambar
3.2 menunjukkan rancangan sistem yang dibuat. Berikut merupakan penjelasan 3
sub sistem yang digunakan.
1. Sistem Pengamanan Konfigurasi
File konfigurasi website merupakan file yang berisi informasi konfigurasi
basis data yang digunakan oleh Content Management System untuk memperoleh
akses kedalam basis data. Informasi tersebut berupa database host, database
username, database password, dan database name. Informasi sensitif tersebut
diletakkan kedalam server terpisah yang dinamakan Server Config, kemudian
18
digantikan oleh token JWT pada file konfigurasi website tersebut.
Standar JSON Web Token pada dasarnya digunakan untuk memvalidasi
sebuah request tertentu yang dikirim oleh pengguna yang sah. Token yang dicuri
dapat dipakai oleh penyerang juga, sehingga perlu mekanisme yang mengenkripsi
data konfigurasi sebelum dikirim dan mekanisme dekripsi agar konfigurasi yang
diterima tidak dapat dibaca oleh penyerang. Proses validasi token dan enkripsi
konfigurasi basis data dilakukan oleh Server Config yang akan dibahas pada
sistem REST API.
Sistem enkripsi token menggunakan library libsodium yang bekerja
dengan berbagai algoritma tertentu untuk menghasilkan teks terenkripsi yang
selalu berubah-ubah nilainya. Pada konfigurasi website, proses enkripsi dilakukan
saat instalasi yaitu untuk mengamankan pengiriman key dari website menuju
Gambar 3.2 Rancangan Sistem
19
Server Config, sedangkan proses dekripsi dilakukan setiap user mengakses web
untuk mendekripsi nilai konfigurasi yang diberikan oleh Server Config. Sebelum
token didapatkan, terlebih dahulu dilakukan instalasi pada aplikasi Server Config.
Instalasi diperlukan agar Server Config memiliki key untuk melakukan enkripsi
maupun dekripsi. Seperti pada Gambar 3.3 yangmerupakan diagram alir instalasi
Server Config dan Gambar 3.4 merupakan diagram alir dari proses mendapatkan
konfigurasi website dari Server Config.
Kunci atau key yang digunakan pada proses enkripsi dan dekripsi
didapatkan dari aplikasi Statickey. Statickey merupakan aplikasi yang dibuat dari
bahasa C untuk menghasilkan keluaran berupa angka acak yang nilainya tetap
apabila diakses oleh user dan direktori tertentu. Cara kerjanya adalah dengan
menjalankan pseudo random dengan nilai seed yang statis sehingga nilainya akan
Gambar 3.3 Diagram alir instalasi Server Config
20
tetap sama selama seed tidak berubah seperti yang tertera pada Gambar 3.5.
Gambar 3.5 Diagram pseduo random generator
Gambar 3.4 Diagram alir get Server Config
21
2. Sistem REST API
Sistem REST API digunakan website untuk berkomunikasi dengan aplikasi
Server Config. Sistem REST API melakukan dekripsi token dan enkripsi data
konfigurasi website serta melakukan dekripsi key pada saat instalasi. Fungsi
config_post melakukan dekripsi token dan enkripsi data konfigurasi web,
sedangkan fungsi install_post melakukan dekripsi key dan memasukannya
kedalam basis data. Gambar 3.6 menunjukkan diagram alir pada fungsi
install_post dan Gambar 3.7 merupakan digram alir pada fungsi config_post.
Gambar 3.6 Diagram alir fungsi install_post pada REST API
22
3. Sistem Autentikasi
Sistem autentikasi menggunakan standar JWT untuk melakukan validasi
terhadap token yang dikirim, ekstraksi konten didalam JWT, serta memeriksa
Gambar 3.7 Diagram alir config_post pada REST API
23
payload token berdasarkan signature token. Gambar 3.8 merupakan diagram alir
dari sistem autentikasi JWT.
3.2.2 Rancangan Aplikasi
1. Use Case Diagram
Pengguna biasa hanya dapat melakukan manajemen aplikasi yaitu
menambahkan aplikasi, menambahkan token, mengubah token, serta menghapus
token. Pengguna juga dapat menonaktifkan token serta mengubah profil pengguna
seperti username dan password. Gambar 3.9 merupakan use case diagram
aplikasi Server Config.
Gambar 3.8 Sistem autentikasi pada standar JWT
24
2. Diagram Alir Insert App
Pada insert app data yang dimasukkan adalah nama aplikasi dan CMS yang
akan digunakan. Kemudian sistem melakukan generate random app_key dan
menampilkan konfigurasi website untuk melakukan instalasi pada website
kedalam sistem. Gambar 3.10 merupakan diagram alir proses insert app pada
aplikasi Server Config.
Gambar 3.9 Use Case diagram aplikasi Server Config
Gambar 3.10 Diagram alir insert app
25
3. Diagram Alir Add Token
Form Add token memasukkan konfigurasi basis data website yaitu
database host, database name, database username dan database password yang
digunakan oleh website tersebut untuk berkomunikasi dengan basis data server.
Gambar 3.11 merupakan diagram alir proses add token pada aplikasi Server
Config.
4. Diagram Alir Edit Token
Pengubahan token dilakukan dengan mengubah konfigurasi website
sebelumnya dengan variabel baru konfigurasi basis data. Kemudian dilakukan
generate token JWT baru dan membuat ulang konfigurasi website. Gambar 3.12
merupakan diagram alir proses edit token pada aplikasi Server Config.
Gambar 3.11 Diagram alir add token
26
5. Diagram Alir Tambah User
Menambahkan pengguna atau user hanya dapat dilakukan oleh pengguna
berlevel admin. Data yang harus dimasukkan adalah nama pengguna, username,
password, Email, level pengguna dan terakhir admin bisa langsung mengaktifkan
pengguna tersebut atau tidak. Gambar 3.13 merupakan diagram alir proses
tambah user pada aplikasi Server Config.
Gambar 3.13 Diagram alir tambah user
Gambar 3.12 Diagram alir edit token
27
3.2.3 Rancangan Antarmuka
Berikut merupakan rancangan antarmuka aplikasi Server Config yang
digunakan untuk memanajemen aplikasi dan pengguna.
1. Dashboard
Halaman utama atau dashboard memuat informasi list aplikasi terdaftar,
informasi jumlah aplikasi terdaftar dan aplikasi belum aktif. Gambar 3.14
merupakan rancangan antarmuka dari halaman utama aplikasi Server Config.
2. App
Halaman app memuat daftar aplikasi yang terdaftar, menambah,
mengubah, menghapus, dan menonaktifkan aplikasi serta melihat konfigurasi
token untuk web. Gambar 3.15 adalah rancangan antarmuka dari halaman App
yang akan dibuat.
3. User
Halaman user digunakan oleh administrator untuk manajemen pengguna
aplikasi yaitu menambah, menonaktifkan dan menghapus pengguna dari daftar.
Sedangkan pengguna biasa digunakan untuk mengubah profil dan password
pengguna. Rancangan antarmuka dari halaman User aplikasi seperti tertera pada
Gambar 3.16.
Gambar 3.14 Rancangan antarmuka halaman utama aplikasi
28
3.3 Metode Pengujian dan Analisis Hasil Uji Coba
Pengujian dilakukan untuk menganalisis keamanan dan performa dari
metode yang diimplementasikan kedalam sistem.
3.3.1 Pengujian Performa
Pengujian performa dilakukan untuk mengetahui performa web sebelum
Gambar 3.15 Rancangan antarmuka halaman App
Gambar 3.16 Rancangan antarmuka halaman User
29
dan sesudah implementasi dari metode diterapkan. Sebagai perbandingan,
pengujian juga dilakukan setelah menggunakan PHP file cache yang menyimpan
konfigurasi dari Server Config kedalam lokal file dan menggunakan PHP
memcached yang menyimpan konfigurasi kedalam cache memori. Adapun
pengujian yang dilakukan adalah sebagai berikut:
Pengujian penggunaan sumber daya memori dan CPU.
Pengukuran throuhput yaitu bandwidth aktual yang diterima oleh klien .
Pengukuran rata-rata latency ketika diakses berkala.
Pengujian performa dilakukan dengan menggunakan aplikasi JMeter.
Untuk mendapatkan informasi CPU dan memori pada server yang sedang diuji
coba diperlukan plugin Servers Performance Monitoring pada JMeter. Plugin
tersebut berkerja dengan menempatkan aplikasi server agent pada server yang
memberikan informasi CPU load dan memori server kepada aplikasi JMeter.
Skenario uji coba dilakukan untuk mengetahui seberapa besar beban memori,
CPU, dan throughput saat menerima request dari beberapa kondisi dengan
membuat thread yang merepresentasikan jumlah user ketika mengakses website,
seperti tertera pada Tabel 3.1, Tabel 3.2, Tabel 3.3, dan Tabel 3.4.
Tabel 3.1 Tabel uji coba resource CPU
User After Before Cache Memory 10 20 30 40 50 60 70 80 90 100
30
Tabel 3.2 Tabel uji coba resource memori
User After Before Cache Memory 10 20 30 40 50 60 70 80 90 100
Tabel 3.3 Tabel uji coba throughput
User After Before Cache Memory 10 20 30 40 50 60 70 80 90 100
3.3.2 Pengujian Keamanan
Pengujian keamanan dilakukan untuk menguji keamanan dari
implementasi Server Config. Pada pengujian keamanan, penulis melakukan
instalasi sistem operasi Ubuntu server 14.04 pada Oracle VirtualBox. Kemudian
instalasi VestaCP sebagai web hosting control panel untuk membuat shared web
hosting. Dalam hal pengujian keamanan ini penulis berperan sebagai penyerang
website, yang menggambarkan kemungkinan penyerang untuk mendapatkan
konfigurasi website.
31
Tabel 3.4 Tabel uji coba latency
User After Before Cache Memory
10 20 30 40 50 60 70 80 90 100
Pengujian dilakukan dengan menggunakan teknik bypass konfigurasi
dengan metode symlink attack. Teknik ini dilakukan dengan membuat symbolic
link atau symlink yang merupakan file khusus yang berisi referensi menuju file lain
atau folder. File atau folder yang dituju terletak pada aplikasi web lain yang
berbeda pengguna dengan penyerang. Dalam hal ini, penulis menggunakan CMS
Wordpress sebagai aplikasi web dimana letak konfigurasi basis datanya pada file
wp-config.php. Sebelum pengujian keamanan, dilakukan beberapa tahapan
sebagai berikut:
Menyiapkan website didalam hosting yang terdapat user target.
Memasang backdoor pada website yang digunakan untuk melakukan symlink
attack dengan cara mengunggah phpshell kedalam direktori pada website
tersebut.
Membuat backdoor dengan aplikasi Weevely yang digunakan untuk
mengakses direktori symlink, kemudian mengunggahnya kedalam website
tersebut dengan mambuat file baru pada phpshell kemudian menyimpannya.
Mengakses backdoor tersebut untuk mengakses remote server website.
Didalam backdoor tersebut penulis menggunakan perintah Linux terminal
untuk membaca file wp-config.php dari website target dengan perintah “cat
/home/usertarget/public_html/wordpress/wp-config.php”.
Gambar 3.17 menunjukan tahapan sebelum pengujian keamanan terhadap
32
konfigurasi website.
Adapun skenario pengujian keamanan konfigurasi setelah file wp-
config.php tersebut berhasil didapatkan adalah sebagai berikut:
1. Pengujian Dekripsi Token Dari Direktori Penyerang
File wp-config.php berisi token yang dienkripsi menggunakan library
libsodium, untuk membukanya dibutuhkan sebuah key. Key tersebut didapatkan
dengan perintah “statickey” pada terminal linux. Tahap pertama skenario ujicoba
adalah dengan membuat file PHP baru didalam website penyerang. Didalam file
PHP tersebut penulis menjalankan fungsi sebagai berikut untuk melakukan
dekripsi token.
safeDecrypt($token, statickey)
Variabel $token merupakan nilai token yang ada didalam file wp-config.php.
Dengan perintah var_dump maka akan menampilkan hasil dari proses dekripsi
Gambar 3.17 Tahapan sebelum pengujian keamanan konfigurasi
33
tersebut. Pengujian keamanan gagal jika token berhasil didekripsi sehingga
terlihat token JWT.
2. Pengujian Token Mengakses Konfigurasi Basis Data Dari Server Config
Skenario pengujian ini dilakukan untuk mencoba mengakses konfigurasi
website target yang terdapat pada Server Config dengan menggunakan token yang
didapatkan. Tahap pertama adalah dengan instalasi CMS Wordpress pada website
penyerang. Kemudian mengubah file wp-config.php Wordpress penyerang dengan
konfigurasi berisi token dari website target serta menambahkan perintah
var_dump untuk menampilkan output response dari Server Config lalu
menyimpannya. Terakhir adalah mengakses website penyerang dengan
menggunakan web browser untuk melihat hasil keluaran dari konfigurasi basis
data yang sudah diubah tersebut. Pengujian keamanan gagal jika keluaran
konfigurasi dapat dibaca oleh penyerang.
3. Pengujian Token Diakses Dari Direktori Penyerang
Skenario pengujian ini hampir sama dengan skenario kedua, perbedaannya
adalah konfigurasi website penyerang merupakan symbolic link dari konfigurasi
website target. Dengan menggunakan backdoor yang sudah ditanam sebelumnya,
penulis melakukan symlink dari website target dengan perintah
Kemudian langkah terakhir adalah mengakses website penyerang dengan
menggunakan web browser. Jika pengujian keamanan gagal maka website
penyerang akan berisi konten yang sama dengan website target.
ln -s /home/usertarget/public_html/wordpress/wp-config.php wp-
config.php