Implementasi Sistem Keamanan Berbasis Web dengan Protokol SSL Antoni Zainal Muttaqin (1137050038)1 Entik Insnuddin2 Program Studi Teknik Informatika Fakultas Sains Dan Teknologi Universitas Islam Negeri Sunan Gunung Djati Bandung
Abstrak :
website adalah kumpulan dari berbagai macam halaman situs, yang terangkum didalam sebuah domain atau juga subdomain, yang lebih tempatnya berada di dalam WWW (World Wide Web) yang tentunya terdapat di dalam Internet. Halaman website biasanya berupa dokumen yang ditulis dalam format Hyper Text Markup Language (HTML), yang bisa diakses melalui HTTP, HTTP adalah suatu protokol yang menyampaikan berbagai informasi dari server website untuk ditampilkan kepada para user atau pemakai melalui web browser. SSL atau Secure Socket Layer adalah cara sebuah situs web membuat sambungan aman dengan browser web pengguna. Setiap kali seorang surfer web mengunjungi situs yang aman yang menggunakan teknologi SSL, menciptakan sebuah link yang terenkripsi antara sesi browser mereka dan web server. SSL adalah standar industri untuk komunikasi web yang aman dan digunakan untuk melindungi jutaan transaksi online setiap hari.
1.
Pendahuluan: SSL telah menjadi
Pembahasan tentang operasi SSL pada bab
standar de facto pada komunitas untuk
ini
mengamankan komunikasi antara client dan
penggunaan
server. Kepanjangan dari SSL adalah secure
mengamankan komunikasi antara server
socket layer, SSL adalah sebuah layer
dengan client.
protocol yang berbeda antara layer tcp/ip
bertujuan
Alasan
utama
agar
kita
teknologi
mengapa
mengetahui ini
website
untuk
harus
standar dengan protocol di atasnya yaitu
menggunakan SSL adalah untuk menjaga informasi
application level protocol seperti HTTP. SSL
sensitif selama dalam proses pengiriman melalui
mengijinkan
melakukan
Internet dengan cara dienkripsi, sehingga hanya
autentikasi dengan client dan selanjutnya
penerima pesan yang dapat memahami dari hasil
mengenkripsi komunikasi.
enkripsi tersebut. Hal ini sangat penting, karena
server
untuk
informasi
yang
kita
kirimkan
di
Internet
membutuhkan proses perjalanan dari komputer ke
komputer
sampai
mencapai
server
tujuan.
Komputer lain yang ada diantara Anda dan server
mirip seperti serfitikat agar tidak dapat dipalsukan.
dapat melihat nomor Kartu Kredit Anda, username dan passwords, dan informasi sensitive lainnya bila
Sampai saat ini sudah banyak Certification
hal ini tidak dienkripsi dengan Sertifikat SSL.
Authorities yang cukup terkenal, salah
Ketika sertifikat SSL digunakan, informasi menjadi
satunya adalah Verisign. Menentukan sebuah
tidak dapat terbaca oleh siapapun kecuali ke server
serfitikat keamanan yang berlaku pada
yang memang dituju saat mengirim informasi
server.
tersebut. Hal ini melindungi informasi tersebut dari
Apabila pada suatu kasus ditemukan tidak
hackers dan pencuri identitas.
1.
Mengaktifkan SSL Pada Aplikasi
adanya certificate dari CA, sebuah certificate temporer
(sementara)
dapat
dibuat
Untuk mengetahui keuntungan SSL pada
menggunakan tools dari java 1.4 SDK. Perlu
aplikasi, kita perlu melakukan konfigurasi
anda catat bahwa client biasanya tidak
server untuk menerima koneksi SSL. Pada
melanjutkan transaksi yang memerlukan
servlet container yang berbeda akan berbeda
tingkat
pula cara untuk melakukannya. Disini kita
menemukan
akan belajar tentang melakukan konfigurasi
digunakan adalah cerfiticate yang kita buat.
keamanan bahwa
yang
tinggi
certificate
dan yang
sun application server 8.1
3. Membuat Certicate Private Key 2. Certificates Untuk menyederhanakan permasalahan ini, Salah satu bagian yang perlu kita konfigurasi
kita lebih mudah bila dengan melakukan
untuk membangun komunikasi SSL pada
operasi dimana certificate disimpan. Hal ini
server adalah sebuah security certificate.
dapat
Bisa kita bayangkan sebuah certificate dalam
%APP_SERVER_HOME%/domains/domai
hal ini seperti sebuah pasport : dimana
n1/config.
memiliki
informasi-informasi
ditemukan
di
direktori
penting
pemilik yang bisa diketahui oleh orang lain. Sertificate tersebut biasanya disebarkan oleh Certification Authorities (CA). Sebuah CA
Buka directory menggunakan command line. Selanjutnya panggil command berikut ini : keytool -genkey -alias keyAlias -keyalg RSA -keypass keypassword -storepass storepassword -keystore keystore.jks
keytool -keystore keystore.jks storepass newPassword
keyAlis-adalah alias atau id dimana certificate ini menunjukkan siapa.
Keypassword-adalah
password
4. Membuat certificate Setelah kita selesai membuat key yang akan
untuk
private key yang digunakan dalam proses
digunakan oleh certificate sekarang kita dapat membuat file certificate itu sendiri :
enkripsi.
Storepassword-adalah password yang digunakan untuk keystore
Dalam
hal
ini
mungkin
sedikit
membingungkan dimana dibutuhkan dua password untuk membuat sebuah certificate. Untuk mengatasinya, bisa kita ingat bahwa
keytool -export -alias keyAlias -storepass storepassword -file certificateFileName -keystore keystore.jks
Pada baris diatas dijelaskan bahwa keytool digunakan untuk membuat certificate file menggunakan private key yang disebut keyAlias yang berada pada keystore.
key yang dimasukkan disebut juga keystore. Keystore
dapat
menyimpan
satu
atau
beberapa key. Keypassword merupakan password dari private key yang akan digunakan
pada
certificate,
sedangkan
storepassword merupakan password dari key yang ada di dalam keystore. Pada direktori yang sedang kita operasikan sudah memiliki sebuah kestore file dengan sebuah password, sehingga kita perlu menset nilai storepass menjadi : changeit.
5. Mengatur certificate Agar
aplikasi
server
dapat
certificate yang sudah kita buat, kita perlu menambahkannya pada daftar dari trusted cerfiticates. Server memiliki file bernama cacerts. Jks yang di dalamnya terdapat certificates.
Kita
dapat
menambahkan
certificate kita dengan menggunakan keytool berikut ini :
Password ini dapat diganti menggunakan keytool seperti ini :
mengenali
keytool -import -v -trustcacerts -alias keyAlias -file certificateFileName -keystore cacerts.jks -keypass keypassword
memanipulai bagian-bagian pada request
6. Membuat secure HTTP listener Setelah
kita
sudah
berhasil
membuat
certificate dan meregiternya untuk aplikasi
(query string, cookie information, header) untuk membypass mekanisme keamanan.
server, sekarang kita akan membuat sebuah
Berikut ini tiga jenis penyerangan yang
HTTP listener yang dapat digunakan untuk
berhubungan dengan masalah ini :
membuat komunikasi yang aman.
a. Cross site scripting
Untuk dapat menggunakan komunikasi yang aman antara client dan server, lakukan redirect pada user ke secure listener port ketika mengakses aplikasi anda.
web
aplikation
security
project
(OWASP) adalah project open secure yang dibangun untuk menemukan penyebab dari tidak
amannya
sebuah
software
dan
menemukan cara menanganinya. Ada 10 celah
keamanan
aplikasi
web
yang
ditemukan dan rekomendasi mereka tentang menanganinya
sebagai
c. Injection flaws Ada beberapa hal yang dapat dicatat
7. Celah Keamanan Pada Aplikasi Web Open
b. Buffer overflows
sebuah
standart
ketika menangani validasi pada aplikasi kita. Pertama, adalah tidak baik pada aplikasi web untuk dipercaya pada client side scripting. Script tersebut biasanya menghentikan form submission apabila terdapat sebuah input yang salah. Akan tetapi, script tersebut tidak dapat mencegah hacker untuk membuat HTTP requestnya sendiri yang terbebas dari form. Menggunakan client side validation masih bisa membuat aplikasi web yang
keamanan minimal dari aplikasi web.
mudah diserang. Berikut ini adalah 10 celah tersebut dan cara agar kita dapat mengatasi masalah tersebut.
Kedua, beberapa aplikasi menggunakan pendekatan “negative” (negative approach) pada
Semua aplikasi web menammpilkan data dari HTTP request yang dibuat oleh user dan menggunakan data tersebut untuk opersinya.
:
Aplikasi
mencoba
mendeteksi jika terdapat elemen yang
I. Unvalidated input
melakukan
validasinya
Hacker
dapat
berbahaya pada request parameter. Masalah ini jenis pendekatan ini adalah hanya bisa melindungi dari beberapa serangan yaitu : hanya serangan yang dikenali oleh validation code yang dicegah. Ada banyak cara dimana
hacker dapat membypass keamanan dari
menjalankan pengecekan dari checkpoint
unvalidated input; masih ada kemungkinan
sebelumnya : dimana apabila user berhasil
dimana cara yang baru tidak dikenali oleh
melewati halaman login, mereka dapat bebas
aplikasi dapat membypass dan melakukan
menjalankan opersi.
perusakan. Adalah cara yang paling baik untuk menggunakan pendekatan “positive”
Masalah lain yang berhubungan dengan access control adalah :
(positeve approach) yaitu : membatasi sebuah format atau pola untuk nilai yang
a. Insecure ids-beberapa site menggunakan
diijinkan dan memastikan input tersebut
id atau kunci yang menunjuk kepada user
sesuai dengan format tersebut.
atau fungsi. ID dapat juga ditebak, dan jika hacker dapat dengan mudah menebak ID dari user yang terautorisai maka site
II. Broken Access Control Banyak
akan mudah diserang.
aplikasi
yang
b. File permissions-kebanyakan web dan
mengategorikan user-usernya kedalam role
aplikasi server percaya kepada external
yang berbeda dan level yang berbeda untuk
file yang menyimpan daftar dari user
berinteraksi dengan content yang dibedakan
yang terotorisasi dan resources mana saja
dari kategori-kategori tersebut. Salah satu
yang dapat dan/atau tidak dapat diakses.
contohnya, baik aplikasi yang terdapat user
Apabila file ini dapat dibaca dari luar
role dan admin role : hanya admin role yang
maka hacker dapat memodifikasi dengan
diijinkan untuk mengakses halaman khusus
mudah untuk menambahkan dirinya pada
atau melakukan action administration.
daftar user yang diijinkan.
Masalah adalah beberapa aplikasi
Langkah-langkah apa saja yang dapat
tidak efektif untuk memaksa agar otoritas ini
dilakukan untuk mengatasinay? Pada contoh-
bekerja. Contohnya, beberapa program hanya
contoh tadi, kita dapat mengembangkan filter
menggunakan sebuah checkpoint dimana
atau komponen yang dapat dijalankan pada
hanya user yang terpilih yang dapat
sensitive resources. Filter atau komponen
mengakses : untuk proses lebih lanjut, user
tadi dapat menjamin hanya user yang
harus
terotorisasi
terotorisasi
name
melindungi dari insecure ids, kita harus
dengan
membuktikan menggunakan
password.
Akan
dirinya user
tetapi,
mereka
dan tidak
dapat
mengakses.
Untuk
mengembangkan aplikasi kita agar tidak
menyerang berulang kali untuk berhasil
percaya pada kerahasiaan dari ids yang dapat
login ke system. Selain itu, log in yang
member access oleh web browser dan hanya
gagal sebaiknya dicatat sebagai informasi
role tertentu saja yang dapat mengaksesnya.
kepada
administrator
untuk
mengindikasikan kemungkinan serangan yang terjadi. III. Broken Authentication dan Session c. Password storage-password tidak boleh
Management
disimpan didalam aplikasi. Password Authentication dan session management menunjuk
kepada
pengaturan
semua
user
aspek
authentikasi
dari dan
management of active session. Berikut ini beberapa hal yang perlu diperhatikan :
level
minimal
dan disimpan di file lain seperti file database atau file password. Hal ini dapat memastikan sensitive
a. Password strength-Aplikasi kita harus memberikan
harus disimpan dalam format terenkripssi
dari
keamanan sebuah password, dimana dapat dilihat dengan cara melihat panjang
bahwa seperti
informasi password
yang tidak
disebarkan ke dalam aplikasi. Issue lain yang berhubungan : password tidak boleh dalam bentuk hardcoded di dalam source code.
dari password dan kompleksititasnya. Contohnya
sebuah
aplikasi
dimana
a. Session ID Protection-server biasanya
terdapat user baru yang akan mendaftar :
menggunakan
session
id
untuk
aplikasi tidak mengijinkan password
mengidentifikasi user yang masuk ke
dengan panjang 3-4 karakter atau kata-
dalam session. Akan tetapi jika session
kata simple yang dapat mudah ditebak
ID ini dapat dilihat oleh seseorang pada
oleh hacker.
jaringan yang sama, orang tersebut dapat menjadi seorang client.
b. Password
use-Aplikasi
kita
harus
membatasi user yang mengakses aplikasi
Salah satu cara yang dapat digunakan
melakukan login kembali ke sistem pada
untuk mencegah terlihatnya session ID oleh
tenggang waktu tertentu. Dengan cara ini
seseorang pada suatu jaringan yang sama
aplikasi dapat dilindungi dari serangan
adalah menghubungkan komunikasi antara
brute
force
dimana
hacker
bisa
server dan client pada sebuah SSL-protected
request yang membuat server menjalankan
channel.
kode-kode yang dikirimkan oleh penyerang. Kelemahan buffer overflow biasanya sulit dideteksi dan sulit dilakukan oleh hacker.
IV. Cross site scripting
Akan tetapi penyerang masih bisa mencari Cross site scripting terjadi ketika seseorang
kelemahan
membuat aplikasi web melalui script ke user
overflow pada bagian aplikasi web.
ini
dan
melakukan
buffer
lain. Hal ini dilakukan oleh penyerang dengan menambahkan content (seperti java script, activex, flash) pada request yang dapat membuat HTML output yang dapat dilihat
Terima
kasih
atas
desain
dari
java
environment, dimana aplikasi yang berjalan pada j2ee server aman dari jenis serangan ini.
oleh user lain. Apabila ada user lain yang
Untuk memastikan keamanan, cara yang
mengakses content tersebut, browser tidak
paling baik adalah melakukan pengawasan
mengetahui bahwa halaman tersebut tidak
apabila terdapat patch atau bug report dari
dapat dipercaya.
produk server yang digunakan.
Cara yang biasa digunakan untuk mencegah serangan cross site scripting adalah dengan
VI. Innjection flaws
melakukan validasi data masuk dari user request
(seperti
hesder,
cookies,
user
Salah satu kelemahan yang popular adalah
parameter,…). Cara negative approach tidak
injection
flaw,
dimana
hacker
dapaat
digunakan : mencoba untuk memfilter active
mengirimkan atau menginject request ke
content merupakan cara yang tidak efektif.
operating system atau ke external sumber seperti database. Salah satu bentuknya adalah SQL injection. Berikut ini salah satu dari SQL injection :
V. Buffer overflows Penyerang
dapat
menggunakan
buffer
http://someServer/someApp/someAction ?searchString=jedi
overflows untuk merusak aplikasi web. Hal ini dilakukan karena penyerang mengirimkan
URL diatas akan memproses pencarian dengan kata kunci 'jedi'. Implementasi
dimana tidak ada validasi input adalah seperti
yang
bisa
SQL code berikut ini :
serangan ini yaitu : a. Dari
select * from someTable where someField='value'
dilakukan
pada
untuk
mencegah
menggunakan
statement
SELECT, insert, update dan delete statement. Bisa dibuat fungsi yang melakukan
hal
serupa.
Dengan
Dimana value adalah nilai dari parameter
menggunakan fungsi diharapkan ada
search string yang ada pada HTTP request.
pengamanan terhadap parameter, Selain itu dengan adanya fungsi, parameter yang
Bagaimana jika, hacker melakukan input dari URL seperti ini :
http://someServer/someApp/someAction ?searchString=jedi'%20AND%20true; %20DROP%20DATABASE;'
masuk harus sama dengan tipe data dari parameter yang dideklarasikan. b. Hak akses dalam aplikasi juga harus dibatasi. Contohnya, jika aplikasi hanya bertujuan untuk melihat data, tidak perlu diberikan hak akses untuk melakukan insert,
SQL quey yang terbentuk adalah seperti ini :
update
menggunakan
atau account
delete. admin
Jangan pada
aplikasi web untuk mengakses database. Hal select * from someTable where someField='jedi' AND true; DROP DATABASE;''
ini
juga
dapat
meminimalkan
serangan dari hacker.
VIII. Insecure storage Statement awal pasti akan diterima dimana terdapat klausa AND TRUE. Dan statement selanjutnya yaitu DROP DATABASE juga akan dieksekusi yang akan memberikan kerusakan pada aplikasi. Serangan ini bisa mungkin terjadi karena input yang tidak divalidasi. Ada dua cara
Aplikasi web biasanya perlu menyimpan informasi yang sensitive seperti password, informasi kartu kredit dan yang lain. Dikarenakan item-item tersebut bersifat sensitif item-item tersebut perlu dienkripsi untuk
menghindari
pengaksesan
secara
langsung. Akan tetapi beberapa metode enkripsi masih lemah dan msih bisa diserang.
Salah satu cara yang dilakukan untuk menghindari
kesalahan
penyimpanan
informasi yang sensitive adalah : tidak membuat password sebagai atribut dari kelas Berikut ini beberapa kesalahan yang sering
yang mewakili informasi user. Dari pada
terjadi :
mengenkripsi nomor kartu kredit dari user,
a. Kesalahan untuk mengenkripsi data
akan lebih baik untuk menanyakannya setiap kali dibutuhkan.
penting b. Tidak amannya kunci, certificate dan
Selain itu, menggunakan algoritma enkripsi yang sudah ada akan lebih baik dari pada
password
membuat algoritma sendiri. Anada cukup c. Kurang amannya lokasi penyimpanan data d. Kurangnya
memastikan algoritma yang akan digunakan telah diakui oleh public dan benar-benar
penghitungan
dari
randomisasi e. Kesalahan pemilihan algoritma f. Mencoba untuk menciptakan algoritma enkripsi yang baru
dapat diandalkan. IX. denial of service Denial of service merupakan serangan yang dibuat oleh hacker yang mengirimkan request dalam jumlah yang sangat besar dan dalam waktu yang bersamaan. Dikarenakan requestrequest tersebut, server menjadi kelebihan
Berdasarkan scenario berikut ini : terdapat
beban dan tidak bisa melayani user lainnya.
sebuah aplikasi, dimana terdapat password
Serangan
pada user object. Akan tetapi, aplikasi
bandwidth yang ada pada server. Selain iyu
menyimpan user object ke dalam session
dapat juga menghabiskan memory, koneksi
setelah user login. Permasalahan yang akan
database dan sumber yang lain.
muncul pada scenario ini adalah password dapat dilihat oleh seseorang yang dapat melihat session dari user tersebut.
Dos
mampu
menghabiskan
Pada umumnya sangat sulit untuk melindungi aplikasi dari serangan ini. Akan tetapi masih ada cara yang dapat dilakukan seperti membatasi resource yang dapat diakses user
dalam jumlah yang minimal. Merupakan
konfigurasi server dapat melewati aspek
idde/cara yang bagus untuk membuat load
keamanan dari segi aplikasi.
quota yang membatasi jumlah load data yang diakses user dari system. Berikut ini adalah kesalahan konfigurasi Salah satu contoh adalah pada implementasi
server yang bisa menimbulkan masalah :
bulletin board : adanya pembatasan user pada saat melakukan search, dimana operasi ini
a. Celah keamanan yang belum dispatch
hanya dapat dilakukan setiap 20 detik.
dari software yang ada pada server-
Dengan cara ini dapat dipastikan bahwa user
administrator tidak melakukan patch
tidak bisa menghabiskan koneksi dari
software yang ada pada server.
database.
b. Celah keamanan server dimana bisa
Solusi yang lain adalah mendesain aplikasi
menampilkan list dari direktori atau juga
web dimana user yang belum terotorisasi
serangan berupa directory tranversal.
hanya memiliki akses yang sangat sedikit atau tidak memiliki akses ke content web berhubungan dengan database.
c. File-file backup atau file contoh (sampel file), file-file script, file konfigurasi yang tertinggaal/tidak perlu. d. Hak akses direktori atau filr yang salah. e. Adanya service yang seperti remote administration dan content management yang msih aktif.
X. Insecure configurasi management Biasanya
kelompok
(group)
yang
mengembangkan aplikasi berbeda dengan kelompok yang mengatur hosting dari aplikasi. Hal ini bisa menjadi berbahaya
f. Penggunaan default account dan default password. g. Fungsi administrative atau fungsi debug yang bisa diakses.
dikarenakan kemanan yang diandalkan hanya dari segi aplikasi : sedangkan dari segi server juga memiliki aspek keamanan yang perlu diperhatikan.
Adanya
kesalahan
dari
h. Adanya pesan error yang informatif dari segi teknis.
i. Kesalahan konfirgurasi SSL certificate dan setting enkripsi.
itu akan merasa terlindungi dari seorang cracker.
j. Penggunaan self-signet certificate untuk melakukan autentikasi
Daftar pustaka:
k. Penggunaan default certificates.
REFERENCES [1] Spesifikasi SSL
l. Kesalahan autentifikasi dengansistem http://www.mozilla.org/projects/security/pki/nss/ssl/draft02.html
eksternal.
[2] Spesifikasi SSL 3.0 http://www.freesoft.org/CIE/Topics/ssldraft/3SPEC.HTM
KESIMPULAN
[3] Free SSL Certificate Trial http://www.verisign.com/ssl/buysslcertificates/free-ssl-certificate-trial
Ketika sebuah website dirancang untuk memudahkan para user sebaiknya dirancang juga
dengan
keamanannya
yang
bisa
[4]
SSL
versus
What's
the
difference?
[5] mod_ssl: The Apache Interface to OpenSSL www.modssl.org [6]
mod_ssl
-
Apache
HTTP
Server
http://httpd.apache.org/docs/2.0/mod/mod_ssl.html
mengurangi terjadinya peluang bagi cracker
[7] OpenSSL
maupun hacker untuk selalu melakukan hal-
http://www.openssl.org [8]
hal yang tidak diinginkan seperti halnya
TLS
http://luxsci.com/blog/sslversus-tls-whats-the-difference.html
Generating
an
SSL
Certificate
with
Apache+mod_ssl,
Slacksite.com
melakukan pemblokiran apalagi sampai
[9]
Transport
[10]
Munir,
Layer
memanipulasi database yang telah dirancang.
[11] Secure Sockets Layer (SSL) technology protects your Web site and
Rinaldi,
Security “Kriptografi”,
http://www.topbits.com Informatika
ITB.
makes it easy for customers to trust you.
Tidak bisa dipungkiri juga seorang cracker http://securesocketslayercertificates.com/securesocketslayercertific
dapat mengetahui isi dari password ataupun hal yang penting bagi kita. Dengan
ditingkatkan
keamanan
dalam
sebuah website tersebut kita sebagai user yang tergabung dalam forum maupun group
ates-english-eu.html