pengembangan model single sign-on untuk

advertisement
5
web di IPB tersimpan dalam banyak server
dengan spesifikasi dan sistem operasi yang
beragam. Topologi jaringan IPB dapat dilihat
pada Lampiran 2.
IPB
telah
menggunakan
media
penyimpanan data tunggal untuk user berupa
LDAP. LDAP telah digunakan untuk
autentikasi pada beberapa aplikasi di IPB,
seperti autentikasi penggunaan layanan
internet, KRS-Online, blog, email, dan
repository. Pemanfaatan LDAP pada sistem
autentikasi IPB dapat dilihat pada Lampiran 3.
Pada awalnya, autentikasi akses internet
IPB menggunakan Squid dengan mekanisme
autentikasi
basic.
Autentikasi
basic
mengirimkan pasangan username dan
password dari client ke server dalam bentuk
plaintext. Pesan yang dikirimkan dalam
bentuk plaintext dapat dengan mudah dibaca
oleh orang lain dengan perangkat lunak untuk
sniffing seperti Wireshark.
Pada awal tahun 2010, autentikasi akses
internet IPB diganti dengan mekanisme
autentikasi digest. Dalam mekanisme ini,
username dan password dikirimkan dari client
ke server berupa nilai hash sehingga tidak
terbaca jika paket data ditangkap dengan
sniffer. Penggunaan mekanisme digest ini
memunculkan masalah baru. Load balancer
meneruskan request user ke empat proxy yang
berbeda sesuai algoritme round-robin,
sementara mekanisme digest mengirimkan
nonce (rangkaian karakter yang hanya dipakai
sekali). Nonce yang dikirim oleh setiap proxy
selalu berbeda. Akibatnya, ketika algoritme
round-robin meneruskan request user ke
proxy yang berlainan, user harus kembali
memasukkan username dan password proxy
karena nonce yang dikirimkan dari server ke
client berbeda.
Berdasarkan permasalahan di atas, IPB
memerlukan aplikasi SSO yang mendukung
aplikasi web dan proxy yang dapat diakses
dari dalam maupun luar IPB. Selanjutnya,
aplikasi ini disebut sebagai SSO IPB.
Perancangan
Pada tahap perancangan, dilakukan
pembuatan desain sistem SSO IPB.
Perancangan terdiri atas perancangan jaringan,
proses, media penyimpanan, dan antarmuka
sistem.
Rancangan Arsitektur Jaringan.
Perancangan
jaringan
SSO
IPB
disesuaikan dengan arsitektur jaringan yang
ada di IPB yang menggunakan dua buah load
balancer dengan aplikasi Haproxy, sejumlah
server proxy dengan aplikasi Squid 3.0, dan
beberapa server website. Selain itu, juga
terdapat server LDAP yang menyimpan data
personal user di IPB. Sistem SSO IPB
memerlukan komputer-komputer server dan
komputer client yang mengakses serverserver di IPB. Komputer server tambahan
yang diperlukan selain yang sudah ada di
jaringan sebelumnya adalah server SSO.
Rancangan arsitektur aliran data pada sistem
SSO IPB dapat dilihat pada Lampiran 4.
Server SSO merupakan sebuah server
yang digunakan untuk semua autentikasi
aplikasi yang terintegrasi dengan SSO IPB.
Dalam server ini, terdapat web server dan
database MySQL. Server ini memunculkan
permintaan credential (username dan
password) serta menyimpan data user yang
telah melakukan login ke dalam database.
Jika user melakukan akses internet dari
dalam jaringan internet IPB, request akan
melewati salah satu load balancer dengan
alamat IP 172.17.0.11 atau 172.17.0.18 sesuai
konfigurasi proxy pada browser yang
digunakan untuk mengakses internet. Load
balancer tersebut membagi request ke empat
buah proxy. Pada empat buah proxy dengan
aplikasi Squid 3.0 inilah terdapat aturanaturan yang menolak atau meneruskan
permintaan user. Sebagian permintaan user
akan diteruskan ke internet atau server yang
berada di IPB. Request yang ditolak karena
user belum melakukan login akan di-redirect
ke halaman login yang tersimpan di server
SSO IPB.
User dapat mengakses website yang
tersimpan di server IPB dari luar jaringan
internet IPB. Perbedaannya, request user dari
luar jaringan IPB tidak melewati load
balancer dan proxy seperti yang terjadi pada
request dari dalam jaringan internet IPB,
tetapi user dapat langsung melakukan akses
terhadap server IPB yang memiliki IP publik.
Rancangan Proses
Proses yang terjadi dalam sistem SSO IPB
dapat dibagi menjadi beberapa bagian. Proses
tersebut adalah proses login, logout, proses
autentikasi website, dan autentikasi proxy.
a Rancangan Proses Login
Semua proses login yang berada dalam
sistem SSO IPB (login untuk proxy, maupun
login untuk website) dilakukan melalui sebuah
portal. Diagram alir rancangan proses login
6
dapat dilihat pada Lampiran 5. Seperti proses
login pada umumnya, seorang user harus
memasukkan pasangan username dan
password yang benar. Selanjutnya, sistem
memeriksa jumlah UID yang ditemukan pada
LDAP untuk mengetahui apabila ada UID
yang kembar. Apabila UID tidak kembar,
proses login dilanjutkan dengan validasi
username dan password pada LDAP.
Jika pasangan username dan password
sesuai dengan data yang tersimpan di LDAP,
session baru dibuat dan disimpan ke dalam
database untuk keperluan login selanjutnya.
Apabila sudah terdapat session yang sama
dalam database, dengan kata lain username
yang sama telah melakukan login di lokasi
yang berbeda, session yang lama dihapus dan
diganti dengan session yang baru. Untuk
mempermudah proses login dari aplikasi, data
yang telah diperoleh dari LDAP juga
disimpan ke dalam database MySQL.
b Rancangan Proses Autentikasi Proxy
Autentikasi proxy diperlukan ketika user
mengakses dari dalam jaringan internet IPB.
Aplikasi proxy yang digunakan adalah Squid.
Diagram alir proses autentikasi pada proxy
dapat dilihat pada Gambar 3.
Squid dapat menerima alamat IP dari
komputer user jika Squid langsung
berhubungan dengan komputer user. Pada
arsitektur jaringan IPB, terdapat load balancer
(Haproxy) yang berada di antara komputer
client dan Squid sehingga alamat IP yang
diterima Squid adalah alamat IP load
balancer. Secara default, konfigurasi Haproxy
hanya meneruskan alamat IP-nya sendiri,
sedangkan alamat IP dari user tidak
diteruskan ke tujuan berikutnya (dalam kasus
ini, tujuan berikutnya adalah Squid). Untuk
memperoleh alamat IP user, diperlukan
perubahan konfigurasi pada Haproxy untuk
menambahkan header X-Forwarded-For yang
meneruskan alamat IP user untuk diterima
Squid.
Penambahan header X-Forwarded-For
juga diperlukan pada setiap server Squid. Jika
penambahan header X-Forwarded-For tidak
dilakukan, alamat IP yang akan diterima
portal SSO IPB ketika terjadi proses login
adalah alamat IP proxy itu sendiri, bukan
alamat IP client. Akibatnya, jika salah satu
request dari salah satu Squid berhasil
terautentikasi, semua request berikutnya dari
server yang sama akan dianggap telah
terautentikasi, meskipun dari user yang
berbeda. Tentu saja hal ini tidak diinginkan.
Squid menyediakan fasilitas untuk
melakukan autentikasi dengan program
eksternal. Program ini harus memberikan
output berupa string OK jika autentikasi
berhasil dan ERR jika autentikasi gagal. Di
belakang output OK atau ERR dapat
ditambahkan parameter lain seperti user,
password, message, dan log. Pada sistem SSO
IPB, program eksternal Squid digunakan
untuk memeriksa keberadaan IP pada server
SSO IPB.
Proxy dapat memeriksa keberadaan IP user
pada server SSO dengan beberapa cara.
Ilustrasi ketiga cara tersebut dapat dilihat pada
Gambar 4, Gambar 5, dan Gambar 6.
 Cara 1: Program eksternal proxy memeriksa
keberadaan session di database MySQL
secara langsung setiap menerima request
dari user.
Gambar 3 Rancangan proses autentikasi
proxy.
7
 Cara 2: Server SSO membuat file berisi
pasangan IP dan user. File tersebut
dikirimkan ke proxy server secara berkala
dengan bantuan aplikasi rsync. Selanjutnya,
program eksternal proxy memeriksa
keberadaan IP dan user secara lokal
berdasarkan file yang telah diterima dari
server SSO IPB.
SERVER PROXY
SERVER SSO IPB
Squid
Program
eksternal
Squid
Database
Gambar 4 Mekanisme pembacaan session
proxy dengan database.
SERVER PROXY
Squid
SERVER SSO IPB
Database
Program
eksternal
Squid
File
File
Gambar 5 Mekanisme pembacaan session
proxy dengan file lokal.
SERVER PROXY
Squid
SERVER SSO IPB
Database
File
Program
eksternal
Squid
Web service
Gambar 6 Mekanisme pembacaan session
proxy dengan web service.
 Cara 3: Program eksternal proxy memeriksa
keberadaan session melalui web service
yang disediakan oleh server SSO IPB. Web
service tersebut memberikan output berupa
pasangan IP dan user.
c Rancangan Proses Autentikasi Website
Autentikasi Website SSO IPB merupakan
proses autentikasi yang terjadi pada setiap
website yang terintegrasi dengan sistem SSO
IPB. Proses autentikasi web pada SSO IPB
dapat dilihat pada Lampiran 6. Untuk
mengintegrasikan website dengan sistem SSO
IPB, diperlukan sebuah modul yang terpasang
pada setiap website. Modul tersebut
memeriksa apakah end user sudah melakukan
login atau telah logout dari sistem.
Proses login diawali ketika seorang user
membuka halaman aplikasi yang terintegrasi
dengan SSO IPB. Pada halaman tersebut,
telah disisipkan sebuah script yang membaca
keberadaan user session untuk memperoleh
token di server SSO IPB. Apabila session
ditemukan dan token berhasil diperoleh, client
(aplikasi) melakukan permintaan data user ke
SSO IPB dengan menggunakan token.
Selanjutnya, client dapat menggunakan data
tersebut untuk melakukan sebuah mekanisme
login pada aplikasi tersebut.
Apabila token gagal diperoleh, halaman
aplikasi dalam kondisi tidak login. Pada
halaman tersebut, terdapat sebuah tombol
login yang mengarahkan user ke halaman
login SSO IPB. Pada halaman tersebut, user
dapat mengizinkan maupun melarang client
memperoleh data yang tersimpan dalam
resource server. Server SSO IPB akan
memberikan token kepada client apabila user
mengizinkan client memperoleh data di dalam
resource server. Token tersebut dapat
dimanfaatkan untuk mengambil data user
untuk keperluan login pada client.
d Rancangan Proses Logout
Proses logout dapat dilihat pada Gambar 7.
User dapat melakukan logout dengan
menekan tombol logout pada halaman SSO
IPB. Ketika tombol logout ditekan, halaman
SSO IPB terbuka dan script untuk logout
dijalankan. Script logout menghapus session
yang tersimpan di MySQL dan session pada
server SSO IPB. User dianggap telah
melakukan logout setelah kedua session
dihapus.
Rancangan Media Penyimpanan
SSO IPB memerlukan tiga jenis media
penyimpanan yang berupa file, LDAP, dan
8
MySQL. Media penyimpanan lain dapat
digunakan pada setiap aplikasi yang
terintegrasi dengan SSO IPB sesuai kebutuhan
masing-masing aplikasi.
a LDAP
LDAP digunakan untuk autentikasi user ke
aplikasi-aplikasi yang terintegrasi dengan
SSO IPB. DIT pada LDAP di IPB memiliki
root dc=ipb,dc=ac,dc=id. DIT IPB dalam
aplikasi PHP LDAP Admin dapat dilihat pada
Lampiran 7.
Root IPB memiliki beberapa cabang OU
(organizational unit) seperti alumni, staff_ipb,
dan student. Setiap cabang yang terdapat di
LDAP digunakan untuk membatasi hak akses
user terhadap aplikasi tertentu. Sebagai
contoh,
aplikasi
Blog
Student
(http://student.ipb.ac.id) hanya dapat diakses
oleh user yang berada di bawah DN student
(ou=student, dc=ipb ,dc=ac, dc=id) dan tidak
dapat diakses oleh user yang berada di luar
DN tersebut. Sebaliknya, aplikasi lain seperti
Mail Staff hanya dapat diakses oleh user yang
berada di bawah DN staff_ipb (ou=staff_ipb,
dc=ipb ,dc=ac, dc=id) dan tidak dapat diakses
oleh user di luar DN tersebut.
b MySQL
Fungsi utama MySQL pada sistem SSO
IPB adalah menyimpan session yang
menentukan apakah seorang user telah
melakukan login atau belum. Session ini
tersimpan dalam sebuah tabel. Session yang
digunakan dalam SSO IPB menggunakan
tabel user_session bawaan framework
Codeigniter dengan menambahkan kolom
user_id, proxy_permission, ldap_json, dan ip.
Tabel session dapat dilihat pada Tabel 1.
Gambar 7 Rancangan proses logout SSO
IPB.
MySQL dalam sistem SSO IPB selain
menyimpan data session, juga berfungsi untuk
menyimpan aplikasi-aplikasi yang telah
terdaftar dalam SSO IPB, menyimpan status
keterhubungan antara user dan aplikasi
tertentu (client), serta menyimpan token yang
dapat digunakan aplikasi untuk memperoleh
resource milik user yang tersimpan dalam
resource server. Masing-masing fungsi
tersebut ditangani oleh tabel application,
Tabel 1 Struktur tabel user_session
Field
Tipe
Keterangan
session_id
Varchar(60)
ID session
ip_address
Varchar(16)
Alamat IP dari header REMOTE_ ADDR
user_agent
Varchar(120)
User agent yang digunakan user
last_activity
Int(10)
Timestamp ketika session terakhir di-update
user_data
Text
Data session
ip
Varchar(16)
Alamat IP user dari header
HTTP_X_FORWARDED_FOR
ldap_json
Text
Data dari LDAP yang disimpan dalam format json
user_id
Varchar(40)
Username atau user ID
proxy_permission
Int(1)
Berisi 1 jika user berhak menggunakan akses
internet melalui proxy atau 0 jika user tidak berhak
melakukan akses internet melalui proxy
9
application_user, dan token yang dapat dilihat
pada Lampiran 8, Lampiran 9, dan Lampiran
10.
c File
File teks digunakan untuk menyimpan data
pasangan IP dan username yang dapat
digunakan untuk autentikasi pada proxy.
Server SSO IPB membuat file teks secara
berkala
berdasarkan
user_session.
Selanjutnya, server SSO IPB melakukan
sinkronisasi terhadap file yang telah dibuat ke
seluruh proxy. Pembuatan file teks dan
sinkronisasi dilakukan terus menerus dalam
selang waktu yang pendek untuk menjaga
kontinuitas koneksi internet melalui proxy.
Rancangan Antarmuka
Rancangan antarmuka yang dibuat terdiri
atas halaman login SSO IPB dan tombol login
SSO IPB.
a Halaman Login SSO IPB
Halaman login SSO IPB, seperti pada
Gambar 8, memiliki satu login form untuk
memasukkan username dan password. Pada
halaman tersebut, terdapat fasilitas untuk
melihat username berdasarkan NRP atau NIP
yang dapat dimanfaatkan ketika user lupa
username tetapi masih mengingat NIP atau
NRP.
b Tombol Login SSO IPB
Tombol login merupakan sebuah tombol
yang dapat dipasang pada setiap aplikasi web
yang terintegrasi dengan SSO IPB. Ketika
tombol login ditekan, akan terbuka sebuah
halaman baru untuk melakukan login melalui
SSO IPB atau apabila sebelumnya user telah
menyetujui login otomatis oleh client,
halaman aplikasi client akan langsung
terautentikasi. Tombol login dapat dilihat
pada Gambar 9.
Pengembangan Sistem dan Implementasi
Sistem SSO IPB diimplementasikan pada
lingkungan dummy yang terdiri atas beberapa
komputer untuk load balancer, proxy, server
Gambar 8 Rancangan antarmuka login form.
SSO IPB, dan aplikasi web.
Konfigurasi Haproxy
Konfigurasi yang perlu ditambahkan pada
load balancer (Haproxy) untuk meneruskan
alamat IP client adalah penambahan header
X-Forwarded-For dan penutupan koneksi
HTTP (httpclose). Pada konfigurasi default,
kedua konfigurasi tersebut belum aktif.
Header X-Forwarded-For pada request HTTP
berfungsi untuk menambahkan IP client pada
header HTTP sehingga alamat IP client dapat
terbaca oleh Squid dan Server SSO IPB.
Penutupan
koneksi
HTTP
(httpclose)
diaktifkan supaya Haproxy selalu meneruskan
alamat IP user untuk setiap request yang
melewati load balancer, bukan hanya
meneruskan alamat IP user pada request
pertama.
Konfigurasi Squid
Fungsi Squid pada sistem SSO IPB antara
lain untuk menerima request yang berasal dari
load balancer (Haproxy), melakukan filter
request yang telah diterima, dan meneruskan
request. Konfigurasi Squid dibuat sedemikian
rupa sehingga dapat menerima alamat IP user,
kemudian memeriksa apakah IP tersebut telah
terautentikasi atau belum. IP user yang dibaca
adalah IP yang berada pada header XForwarded-For, bukan IP yang tersimpan pada
variabel REMOTE_ADDR (Remote Address)
maupun IP Haproxy. Pembacaan pasangan IP
dan username terdiri atas tiga mekanisme
yang telah dijelaskan pada rancangan proses
autentikasi proxy.
Instalasi Server SSO IPB
Pada server ini, diperlukan sebuah web
dan media penyimpanan berupa MySQL. Web
server diperlukan karena autentikasi user
dilakukan pada halaman website SSO IPB.
Website
SSO
IPB
diberi
domain
http://sso.ipb.ac.id.
Pembuatan Modul SSO
Modul SSO diperlukan oleh setiap aplikasi
web dan proxy yang akan diintegrasikan
dengan SSO IPB. Modul untuk aplikasi web
dibuat dalam bahasa PHP karena sebagian
besar server di IPB telah mendukung bahasa
pemrograman ini dan banyak aplikasi yang
Gambar 9 Rancangan antarmuka tombol
login.
10
dibuat dengan menggunakan PHP. Tugas
yang perlu dilakukan modul pada setiap
aplikasi adalah melakukan permintaan akses
terhadap resource kepada server SSO IPB dan
menerima respons berupa token dari server
SSO IPB yang dapat digunakan untuk
memperoleh resource pada resource server.
Modul SSO ini dapat dimodifikasi oleh
developer aplikasi client sesuai kebutuhan
client.
Modul untuk proxy dibuat dengan bahasa
pemrograman PHP dan shell script. PHP
digunakan apabila proxy membaca session
pada database server SSO IPB secara
langsung, sedangkan shell script digunakan
apabila proxy perlu melakukan akses terhadap
web service pada server SSO IPB atau
membaca file lokal pada proxy server.
Cron
Cron dalam sistem SSO IPB diperlukan
untuk melakukan proses rutin dalam server
SSO IPB. Proses yang dilakukan secara rutin
yaitu penghapusan session yang kadaluarsa
dan pengiriman data user dan IP ke setiap
proxy dalam selang waktu yang pendek
(misalnya setiap satu menit).
OAuth 2.0
Grant type OAuth yang digunakan dalam
penelitian ini adalah Implicit Grant yang
dirancang untuk digunakan pada aplikasi yang
dibuka
pada
browser.
Token
dari
Authorization Server (server SSO IPB)
dikirimkan sekaligus bersama respons
permintaan akses terhadap protected resource.
Token tersebut digunakan untuk memperoleh
data user yang berasal dari server SSO.
Empat entitas yang terlibat dalam dalam
OAuth adalah end user sebagai resource
owner, server SSO IPB sebagai authorization
server, aplikasi web sebagai client, dan server
data sebagai web hosted client resource.
Client merupakan aplikasi-aplikasi web yang
dihubungkan dengan SSO IPB, sedangkan
client resource berupa media penyimpanan
data user.
Pengujian
disisipkan pada setiap aplikasi dan
dimodifikasi sesuai mekanisme login yang
digunakan.
Masing-masing aplikasi dibuka pada satu
browser pada tab yang berbeda dalam kondisi
belum login. Selanjutnya, user melakukan
login pada halaman SSO IPB dengan alamat
sso.ipb.ac.id. Ketiga aplikasi yang semula
belum berada dalam status login mengalami
perubahan status menjadi login setelah user
melakukan refresh pada masing-masing
aplikasi. Dengan demikian, penerapan SSO
IPB pada tiga aplikasi web di IPB dinyatakan
berhasil.
b Autentikasi Proxy SSO IPB
Pengujian autentikasi proxy dilakukan
pada tiga mekanisme pembacaan session yang
telah dirancang. Sebelum melakukan akses
internet, user perlu melakukan perubahan
konfigurasi proxy pada browser sesuai dengan
alamat IP load balancer yang terintegrasi
dengan SSO IPB. Mula-mula, user yang
membuka
website
http://google.com
diarahkan oleh sistem SSO ke halaman login
SSO IPB. Setelah user melakukan login, user
dapat melanjutkan akses internet sesuai
dengan alamat yang diinginkan. Hasil pada
ketiga mekanisme pembacaan session dapat
dilihat pada Tabel 2.
c Penggunaan SSO IPB dari Luar Jaringan
Internet IPB
Dalam pengujian ini, tiga aplikasi yang
telah terintegrasi dengan sistem SSO IPB
(Penjadwalan Video Conference, Blog Staff,
dan Blog Student) dibuka dari luar jaringan
IPB. Berdasarkan percobaan yang telah
dilakukan, autentikasi SSO pada ketiga
aplikasi tersebut dapat berjalan dengan baik.
Autentikasi aplikasi web pada sistem SSO
IPB dapat dilakukan dari dalam maupun dari
luar jaringan SSO IPB.
d Idle User
Pengujian ini diawali ketika user telah
melakukan login pada halaman login SSO.
Sebelum pengujian dilakukan, ditentukan
Tabel 2 Hasil pengujian login proxy SSO IPB
Pengujian Keberhasilan Sign-on
Mekanisme
Hasil
a Penerapan SSO untuk Aplikasi Web
SSO IPB dilakukan pada tiga aplikasi web
yang ada di IPB. Ketiga aplikasi tersebut
adalah Penjadwalan Video Conference
(jadwalvicon.ipb.ac.id), Blog Mahasiswa IPB
(student.ipb.ac.id), dan Blog Staff IPB
(staff.ipb.ac.id).
Sebuah
modul
SSO
Proxy membaca database
berhasil
Proxy membaca file lokal
berhasil
Proxy membaca web service
berhasil
11
waktu penghapusan session yang kadaluarsa
setiap satu menit. Pengujian idle user
dilakukan dengan dua cara. Pada cara
pertama, user menutup halaman SSO IPB dan
menunggu beberapa saat hingga terjadi logout
secara otomatis. Pada cara kedua, user
menutup browser kemudian membuka
halaman browser kembali untuk melihat
kondisi login SSO IPB. Logout otomatis
dapat terjadi pada kedua cara. Akan tetapi,
user perlu menunggu kurang dari satu menit
untuk menunggu logout otomatis dari proxy.
e Pengujian SSO pada Browser
Pengujian SSO IPB dilakukan pada lima
buah browser yang banyak digunakan oleh
user. Kelima browser tersebut adalah Mozilla
Firefox, Google Chrome, Internet Explorer,
Opera, dan Safari. SSO dapat berjalan dengan
baik pada Mozilla Firefox, Google Chrome,
Opera, dan Safari, namun tidak dapat berjalan
dengan baik pada Internet Explorer karena
header
X-Forwarded-For
tidak
dapat
diteruskan ketika user menggunakan Internet
Explorer.
Keamanan SSO IPB
a IP Spoofing Attack
Uji coba IP spoofing attack dilakukan pada
autentikasi proxy dengan sebuah komputer
sebagai korban dan satu komputer lain sebagai
pelaku IP spoofing. Mula-mula, korban
melakukan autentikasi proxy melalui sistem
SSO IPB, kemudian dilakukan pemutusan
koneksi internet sebelum korban melakukan
logout. Pelaku IP spoofing memanfaatkan IP
korban dengan mengganti alamat IP-nya
menjadi alamat IP korban dengan tujuan
memperoleh akses internet tanpa melakukan
autentikasi terlebih dahulu.
Pada mulanya, pelaku memperoleh akses
internet tanpa melakukan autentikasi, tetapi
beberapa saat kemudian sistem SSO IPB
melakukan logout otomatis terhadap alamat IP
korban. Hal ini terjadi karena user perlu
memperbarui session pada server SSO IPB
dengan cara tetap membuka halaman SSO
IPB selama melakukan akses internet untuk
menjaga session tetap valid.
b Packet Sniffing
Packet sniffing terjadi ketika seorang
hacker mengamati paket TCP/IP yang
melewati jaringan dan mencuri informasi di
dalamnya. Hal ini dapat terjadi apabila paket
yang melewati jaringan tidak terenkripsi. Oleh
karena itu, pencegahan terhadap serangan ini
dilakukan dengan mengirimkan data rahasia
seperti username,
melalui HTTPS.
password,
dan
token
c Passwords Attacks
Seorang hacker dapat menemukan
password menggunakan program tertentu atau
dengan hanya menebak-nebak password yang
mungkin digunakan korban.
Menurut
Scarfonce dan Souppaya (2009), password
yang kuat dapat mencegah pembobolan
password. Kekuatan password ditentukan oleh
panjang password dan kompleksitas yang
sangat bergantung pada karakter-karakter
yang sulit diprediksi. Untuk mencegah
password
attack,
user
disarankan
menggunakan password yang terdiri atas
minimal tiga dari empat grup berikut:
lowercase letters, uppercase letters, digits,
dan symbols.
d Session Hi-jacking
Pencegahan terhadap session hi-jacking
dilakukan dengan cara menerapkan token
yang berlaku hanya dalam jangka waktu
tertentu dan penghapusan session yang
kadaluarsa secara berkala.
e Penggunaan Network Address Translation
(NAT)
NAT dapat digunakan oleh user ketika
user membuat jaringan kecil sendiri di dalam
jaringan internet IPB. Alamat IP yang terbaca
oleh load balancer, proxy, dan server SSO
IPB adalah alamat IP komputer yang menjadi
gateway pada jaringan NAT tersebut.
Akibatnya, ketika satu komputer yang berada
dalam jaringan NAT telah terautentikasi pada
proxy IPB, semua komputer yang berada
dalam jaringan tersebut dapat melakukan
akses internet tanpa harus terautentikasi satu
per satu. Masalah ini masih belum teratasi
oleh sistem SSO IPB karena session pada
proxy ditentukan berdasarkan alamat IP user.
f
Cross Site Request Forgery (CSRF)
CSRF terjadi ketika seorang penyerang
memberikan sebuah Uniform Resource
Identifier (URI) berbahaya melalui email atau
image yang telah disisipi sebuah script
berbahaya. URI tersebut mengarahkan korban
untuk meminta token kepada server SSO dan
memberikannya kepada pelaku CSRF melalui
URI yang telah ditentukan pelaku. CSRF
dapat diatasi pada penggunaan protokol
OAuth 2.0 karena protokol ini mewajibkan
adanya state yang bernilai unik untuk setiap
permintaan token .
12
g Cross Site Scripting (XSS)
XSS merupakan penyisipan script dari
pihak ketiga melalui URI, form, maupun input
user lainnya. XSS dapat diatasi dengan
mengaktifkan modul XSS yang telah ada pada
framework Codeigniter. Modul ini berfungsi
memfilter semua input dari user sebelum
input tersebut diproses atau dijalankan.
Perbandingan Penggunaan MySQL, File
Lokal, dan Web Service Sebagai Aplikasi
Eksternal pada Proxy
Dalam
pengujian
ini,
dilakukan
pengamatan terhadap kecepatan permintaan
status login dari proxy ke server SSO IPB.
Permintaan status login yang dicoba terdiri
atas tiga cara, yaitu:
 Program eksternal proxy langsung
mengakses database pada server SSO.
 Program eksternal proxy mengakses file
lokal yang disinkronisasi dengan file
session di server SSO IPB.
 Program eksternal proxy mengakses web
service pada server SSO IPB.
Sebagai data pengujian, ditentukan jumlah
user yang tersimpan dalam session: 10, 20,
30, 40, dan 50. Pada masing-masing jumlah
session tersebut, diambil seratus permintaan
status login dari proxy ke server SSO IPB.
Hasil pengamatan terhadap kelima data dapat
dilihat pada Tabel 3 sehingga diperoleh grafik
pada Gambar 10.
Pada grafik tersebut, dapat dilihat bahwa
perubahan jumlah session yang tersimpan
pada server SSO IPB tidak memengaruhi
perubahan waktu yang dibutuhkan untuk
memperoleh status login user. Akan tetapi,
apabila dilihat secara keseluruhan, urutan
kecepatan antara penggunaan database, file
lokal, dan web service tetap konsisten.
Penggunaan file lokal memerlukan waktu
paling cepat, diikuti pembacaan database
secara langsung, dan yang paling lambat
adalah penggunaan web service.
Pada pengujian berikutnya, dilakukan
pengamatan kecepatan permintaan status login
dengan jumlah session yang tersimpan 1, 10,
100, dan 1000 dengan tujuan untuk melihat
perubahan kecepatan permintaan status login
apabila terjadi penambahan jumlah session
yang besar. Pada pengujian ini, diambil
seratus permintaan status login untuk masingmasing jumlah session. Hasil pengamatan
dapat dilihat pada Tabel 4 sehingga diperoleh
grafik pada Gambar 11.
Tabel 3 Kecepatan permintaan status login antara proxy dan server SSO (dalam detik)
Jumlah session yang tersimpan
Media
10
20
30
40
50
Database
0.03897
0.04020
0.03570
0.03800
0.03850
File lokal
0.03194
0.03008
0.03195
0.02578
0.03257
Web service
0.07608
0.06640
0.06772
0.11417
0.08187
Gambar 10 Grafik kecepatan permintaan status login antara proxy dan server SSO.
13
Hasil pada percobaan kedua tidak jauh
berbeda dengan hasil percobaan pertama.
Jumlah session yang tersimpan tidak
memengaruhi kecepatan permintaan status
login dari proxy ke server SSO IPB. Akan
tetapi, urutan kecepatan permintaan status
login masih tetap sama, yaitu penggunakan
file lokal yang paling cepat, diikuti
penggunaan database, dan web service. Nilai
kecepatan yang diperoleh pada penggunaan
database dan file lokal hampir sama sehingga
grafik yang dihasilkan pada Gambar 11
tampak tumpang tindih.
dibutuhkan cepat, namun user perlu
menunggu beberapa saat untuk dapat
melanjutkan akses internet hingga program
Cron pada server SSO IPB melakukan
sinkronisasi file session dengan seluruh proxy
server. Pada pembacaan database secara
langsung dan penggunaan web service, user
dapat langsung melanjutkan akses internet
seketika setelah melakukan autentikasi pada
halaman login SSO IPB. Namun, apabila
aliran data yang melalui proxy sangat besar,
user akan merasakan akses internet yang
lambat karena proxy harus membaca database
atau web service setiap menerima request dari
user. Dengan demikian, untuk memperoleh
kecepatan akses internet yang optimal melalui
proxy, perlu digunakan file lokal maupun
penggunaan database. File lokal digunakan
setelah terjadi sinkronisasi file, sedangkan
database atau web service digunakan sebelum
terjadinya sinkronisasi file antara proxy dan
server SSO IPB.
Berdasarkan
kedua
percobaan
pengukuran kecepatan permintaan status
login, diperoleh kesimpulan bahwa program
eksternal yang paling cepat berjalan adalah
penggunaan file lokal, diikuti database dan
web
service.
Akan
tetapi,
perlu
dipertimbangkan bahwa ketiga mekanisme
tersebut memiliki kelebihan dan kekurangan
lain. Pada penggunaan file lokal, waktu yang
Tabel 4 Kecepatan permintaan status login antara proxy dan server SSO (dalam detik)
Jumlah session yang tersimpan
Media
1
10
100
1000
Database
0.03742
0.03897
0.04574
0.04418
File lokal
0.03136
0.03129
0.04574
0.03440
Web service
0.47729
0.44847
0.53407
0.46038
Gambar 11 Grafik kecepatan permintaan status login antara proxy dan server SSO.
Download