BAB I
PENDAHULUAN
1.1 Latar
Belakang
Dalam
era teknologi seperti sekarang ini perkembangan teknologi telekomunikasi dan
penyimpanan data yang menggunakan komputer memungkinkan pengiriman data jarak
jauh merupakan salah satu metode cepat
dan relatif murah. Namun pengiriman data jarak jauh seperti ini yang bisa
menggunakan sarana internet ataupun berupa gelombang radio dan media lain,
tidak menjamin keamanan pada data tersebut. Akan sangat memungkinkan adanya
pihak lain yang dapat menyadap dan mengubah data yang dikirim. Sehingga data
yang diterima akan merubah atau bahkan akan hilang, tidak diterima oleh
sipenerima.
Memasuki
era teknologi informasi sekarang ini, berbagai ilmuan dalam bidang ilmu
teknologi telah mengembangkan berbagai cara dalam mengatasi permasalahan sistem
keamanan suatu dalam suatu data. Mereka mengembangkan berbagai cara untuk
menangkal serangan – serangan yang bisa mengancam keamanan data. Salah satu
cara yang ditempuh untuk mengatasi permasalahan ini adalah dengan menggunakan
metode penyandian pesan yang disebut sebagai ilmu kriptografi yang menggunakan
transformasi data sehingga data yang dihasilkan tidak dapat dimengerti oleh
pihak ketiga.
Transformasi
ini memberikan solusi pada dua masalah keamanan data, yaitu masalah privasi (privacy) dan keautentikan (authentication). Privasi mengandung arti
bahwa data yang dikirim hanya dapat dimengerti oleh penerima yang sah.
Sedangkan keautentikan mencegah pihak ketiga untuk mengirimkan data yang salah
atau mengubah data yang dikirimkan. Sehingga pengiriman data akan menjadi lebih
secure terhadap serangan dari pihak
ketiga yang tidak berhak merubah semua informasi pada data – data tersebut.
1.2 Tujuan Penulis
Masalah
keamanan dan kerahasiaan data merupakan salah satu aspek yang sangat penting
dari suatu sistem informasi. Hal ini sangat berhubungan dengan betapa
pentingnya informasi tersebut dikirim dan diterima oleh orang yang berkepentingan
terhadap data. Informasi tidak akan berguna lagi apabila ditengah jalan
pengiriman data dibajak atau disadap oleh orang yang tidak berhak. Informasi
pada data akan hilang keasliannya sehingga pihak penerima akan mendapatkan
informasi yang beda.
Keamanan
dan kerahasiaan data terkait pada sistem jaringan komputer yang menjadi isu
sangat penting dan terus berkembang. Pada garis besarnya, masalah kemanan
jaringan dapat dibagi menjadi empat bagian yang saling berhubungan satu sama
lain, yakni, kerahasisaan, keaslian, pengakuan, dan kontrol integritas.
Kerahasiaan harus dilakukan dengan menjauhkan informasi dari orang – orang yang
tidak berhak , keaslian berkaitan dengan
menentukan dengan siapa anda berbicara sebelum memberikan informasi yang
sensitif atau memasuki perjanjian bisnis, sedangkan pengakuan berkaitan dengan
tanda tangan.
Selain keamanan
dan kerahasiaan pada jaringan komputer, konsep ini juga berlaku untuk keamanan
dan kerahasiaan data pada internet. Dikarenakan internet akan dapat diakses
oleh semua kalangan, maka keamanan dan kerahasiaan data akan menjadi hal yang
terpenting demi kenyaman antara kedua pihak. Informasi yang terkandung didalam
jaringan internet tersebut juga semakin lengkap, akurat, dan penting yang perlu
mendapat perlakuan yang lebih spesifik.
Pada
perkembangannya, dunia komputer selalu mengupdate sistem operasi pada komputer
dan utilitas sehingga tingkat performansi, kehandalan, dan fleksibilitas sistem
software akan menjadi hal yang utama dalam proses perngembangan software.
Dengan semakin penting dan berharganya sebuah informasi tersebut dan ditunjang
oleh kemajuan pengembangan software, tentunya menambah daya tarik bagi para
pembobol (hacker) dan penyusup untuk terus melakukan eksperimennya guna
menemukan dan mempergunakan setiap kelemahan yang ada dari konfigurasi sistem
informasi yang telah ditetapkan.
Dari
masalah yang terjadi diatas muncullah ide penulis untuk dapat membuat suatu
makalah yang nantinya dapat membantu dalam menyelesaikan permasalahan diatas.
Adapun maksud tujuan dari penulisan makalah ini adalah memberikan suatu metode
yang dapat memberikan pengamanan data melalui jalur internet sehingga akan
dapat mempermudah dan memberikan kenyamanan dalam menggunakan fasilitas
internet untuk dunia usaha. Penulis juga bermaksud untuk menjadikan makalah ini
sebagai bahan pembelajaran dalam dunia informatika sehingga dapat melahirkan
orang – orang yang berkompeten dalam mengembangkan teknologi di Indonesia.
1.3 Metode Penelitian
Agar
dapat memperoleh kenyaman dan kemudahan dalam melakukan transfer data, perlu
dibuat suatu sistem yang dapat menjaga keamanan dan kerahasiaan data pada suatu
sistem jaringan komputer. Sistem yang diperlukan melingkupi beberapa jenis
enkripsi agar informasi tidak dapat
dibaca atau dimengerti oleh sembarang orang kecuali oleh penerima yang berhak.
Dunia
internet merupakan dunia maya yang setiap orang bisa masuk kedalamnya sehingga
banyak sekali media yang tersedia sebagai alat komunikasi yang dapat membantu
para pengguna komunikasi. Berbagai macam alat komunikasi yang tersedia,
diantaranya adalah web, mail, milis dan sebagainya. Semakin banyak orang memanfaatkan
layanan komunikasi didalam media internet tersebut maka semakin banyak juga
muncul permasalahan, apalagi ditambah dengan adanya hacker dan cracker. Lalu
orang – orang pun berusaha mencari cara agar dapat mengamankan informasi yang
dikirimkannya, atau menyiasati bagaimana cara mendeteksi keaslian dari
informasi yang diterimanya.
Melihat
dari situasi diatas demi terwujudnya suatu sistem keamanan, penulis mencoba
melihat permasalahannya dengan meneliti semua sistem yang behubungan dengan
informasi yang berada didalam dunia maya. Adapun penelitian yang digunakan oleh
penulis dalam membuat makalah ini adalah melalui literatur dari beberapa bahan
– bahan situs internet dan buku yang berhubungan dengan sistem keamanan E-mail
dan juga dengan berpegang prinsip pada sistem Kriptografi yang merupakan suatu
seni atau ilmu penulisan rahasia informasi. Penulis juga melakukan observasi
atau pengamatan terhadap makalah – makalah yang ada didalam situs internet yang
membahas masalah Keamanan web.
BAB II
LANDASAN TEORI
2.1 Web services
Web services menjadi sangat populer di
enterprise karena kemampuannya dalam mengintegrasikan aplikasi-aplikasi yang
berbeda platform dengan menggunakan dokumen XML. XML (eXtensible Markup
Language) adalah sebuah standar untuk mendefinisikan data dalam format yang
sederhana dan fleksibel. Dimana web
service mendukung komunikasi antar aplikasi dan integrasi aplikasi dengan
menggunakan XML dan Web. Secara umum
sistem yang akan dibangun dalam penelitian ini adalah keamanan data pada web
service dengan memanfaatkan XML Encryption dan kriptografi RSA. Pada kriptografi RSA memanfaatkan library XMLSEC
untuk pembuatan sepasang kunci publik.
Pada penelitian ini, terdapat dua analisa kebutuhan sistem yang akan
diterapkan, yaitu:
1. Kebutuhan Fungsional Dalam
implementasinya, web service akan dibagi menjadi dua bagian, yaitu:
a. Client menghasilkan web service request Tahap ini berkaintan dengan
proses-proses yang dilakukan oleh client untuk melakukan request kepada web
service.
b. Server mengotentikasi client dan mengembalikan response Tahap ini
menjelaskan beberapa proses yang dilakukan oleh web service setelah menerima
SOAP Request dari client. Proses yang terjadi antara lain memastkan integritas
pesan, mengotentikasi pengguna, mengenkripsi data xml, dan mendekripsi data
xml.
2. Kebutuhan Non Fungsional Pada analisis kebutuhan non fungsional ini,
proses sistem akan diperhatikan melalui dua aspek, yaitu:
a. Faktor waktu respon dari site internal maupun eksternal melalui web
service yang tidak bisa diprediksi.
b. Proses enkripsi dan dekripsi pesan SOAP yang membutukan waktu yang
tidak bisa diprediksi.
2.1.1 Perancangan Sistem
Sistem aplikasi yang akan dibangun memiliki arsitektur keamanan secara
umum seperti pada Gambar 1, dimana setiap request dari client akan dilakukan
otentikasi dan konfidensialitas. Otentikasi dilakukan ketika client berhasil
melakukan login dan akan diberikan akses
ke sumber daya sesuai dengan hak aksesnya, sedangkan konfidensialitas di
gunakan pada proses enkripsi dan dekripsi.
Gambar
1. Model Keamanan Antara Client service dan Service Server dari Web Service
pada
tahap ini data akan dienkripsi menggunakan private key milik masing-masing user
dan public key, kemudian data xml yang mengalir selanjutnya dalam keadaan aman
(terenkripsi) pada komunikasi antara client service dengan server service dari
web service. Selanjutnya adalah data hasil enkripsi tadi akan disimpan dalam
secure database dengan format data xml. Proses dekripsi sendiri akan akan dilakukan
ketika data diminta oleh user lainnya dengan menggunakan private key milik user
masing- masing dan public key. Enkripsi
terjadi antara client service dan server service dimana bertujuan untuk
mengamanakan jalur transmisi pada web service sendiri. Rancangan ini dapat
diperlihatkan pada Gambar 2.
Gambar 2. Rancangan Mekanisme Kerahasiaan Data User Pada Web
Service3.3
2.1.2 Implementasi
Sistem
Setelah proses
perancangan sistem dilakukan, tahap selanjutnya adalah membuat implementasi sistem
keamanan pada Web Service. Sedangkan untuk implementasi dari keamanan web
service ini, maka dirancang arsitektur dan skenario dalam alur yang akan
diterapkan. Arsitektur dan skenario dari keamanan web service ini dapat
diperlihatkan pada Gambar 3.
Gambar 3. Implementasi Arsitektur Skenario Keamanan Web
Service
2.2 Pretty
Good Privacy (PGP)
PGP
(Pretty Good Privacy) adalah Suatu
metode program enkripsi informasi yang memiliki tingkat keamanan cukup tinggi
bersifat rahasia dengan menggunakan “Private-Public Key” sebagai dasar
autentifikasinya sehingga jangan sampai dengan mudah diketahui oleh orang lain
yang tidak berhak. PGP dikembangkan
oleh Phill Zimmermann pada akhir
tahun1980. pada awal mulanya , PGP digunakan untuk melindungi surat elektronik
(e-mail) dengan memberikan
perlindungan kerahasiaan (enkripsi)
dan otentikasi (tanda – tangan digital).
Untuk itu Phill Zimmermnn membuat sebuah program yang digunakan agar dapat
melindungi informasi data dengan kerahasiaan. Program yang dibuat oleh Phill
Zimmerann memiliki 2 versi yaitu “USA Version “ dan “International Version”. PGP versi USA hanya dapat digunakan di
wilayah USA dan oleh warganegara USA saja. PGP versi USA ini menggunakan
algoritma RSA (yang telah menjadi
hak paten) dalam enkripsinya. Sedangkan versi internasional menggunakan
algoritma MPILIB yang diciptakankhusus oleh Phill Zimmermann sendiri. PGP Versi
internasional bisa digunakan oleh seluruh dunia.
Gambar 4. Enkripsi Public Key
Enkripsi (encryption)
merupakan suatu proses di mana sebuah pesan
(plaintext) ditranformasikan
atau diubah menjadi bentuk pesan lain (chipertext)
menggunakan suatu fungsi matematis dan enkripsi password khusus yang lebih
dikenal sebagai key. Sementara
Deskripsi (descryption) merupakan
proses kebalikan, dari chiphertext dirubah kembali ke plaintext dengan menggunakan fungsi matematis dan key.
Pada
saat kita membuat kunci, PGP akan menciptakan duah buah kunci yaitu private key dan public key yang merupakan sebuah pasangan bersesuaian. Private Key adalah kunci yang hanya
diketahui oleh kita sendiri sedangkan Public
Key adalah kunci yang kita beritahukan kepada orang – orang yang kita
percaya. Public key digunakan
sebagai dasar proses pengenkripsian dokumen – dokumen yang hanya bisa dibuka
oleh orang yang memiliki private key yang bersesuaian.
2.2.1 Prinsip Kerja PGP
PGP membuat sebuah session
key, dimana sebuah kunci rahasia pada saat itu. Kunci adalah sebuah bilangan
acak yang dihasilkan dari gerakan acak dari mouse dan tombol yang anda tekan.
Session Key ini berkerja dengan sangat aman, algoritma enkripsi konvesional
yang cepat untuk meng-enkrip plaintext. Hasilnya adalah berupah chiper text. Sekali data dienkripsi, lalu session key ini dienkripsi lagi menggunakan kunci publik penerima. session key yang terenkripsi kunci
publik key penerima dikirim dengn chipertext
ke penerima.
Kombinasi
dari 2 metode enkripsi menggabungkan kehandalan dari enkripsi kunci publik
dengan kecepatan pada enkripsi konvensional. Enkripsi Konvensional kuarang
lebih 1000x lebih cepat dari enkripsi kunci publik. Jadi enkripsi kunci publik
memberikan sebuah solusi pada distribusi kunci dan masalah transmisi data.
Dengan menggunakan keduanya, perfoma dan distribusi kunci dapat ditingkatkan
tanpa mengorbankan sesuatu dalam keamanan.
Prinsip – prinsip kerja dari PGP itu
sendiri adalah :
1. PGP menggunakan teknik yang disebut
Public-key encryption dengan dua kode yang saling berhubungan secara intrinsik,
namun tidak mungkin untuk memecahkan satu dan yang lainnya.
2. Jika membuat suatu kunci, secara
otomatis akan dihasilkan sepasang kunci yaitu public key dan secret key.
Kita dapat memberikan
public key ke manapun tujuan yang
kita inginkan, melalui telephone,
internet, keyserver, dsb. PGP menggunakan dua kunci yaitu kunci public
(proses enkripsi) dan privet (proses deskripsi).
3. menggunakan dua kuci tersebut
dikarenakan adanya conventional crypto, disaat terjadi transfer informasi
kunci, suatu secure channel diperlukan. kunci yang dilihat oleh orang lain adalah
yang digunakan hanya untuk enkripsi dan hanya pemiliknya saja yang mengetahui
kunci rahasia tersebut.
2.2.2
Alasan pemakaian PGP
Ada beberapa alasan penting mengapa kita
perlu menggunakan PGP untuk mengamankan e-mail file kita.
1. Keamanan
Kita dapat
menggunkan PGP untuk berkomunikasi secara aman, baik itu rencana bisnis,
keuangan, atau hal – hal pribadi lain yang ingin dijaga kerahasiaannya. Kita
dapat menggunakan PGP dengan e-mail untuk alasan yang sama pada waktu kita
mengirim surat dengan menggunakan amplop. Mungkin teman seprofesi atu anggota
keluarga ingin tahu bahwa informasi yang dikirim terjaga kerahasiaannya dan
kiriman benar – benar berasal dari kita. Barang kali kita pernah mengirim
e-mail kepada orang yang salah dan kita ingin mereka tidak membacanya. Hal ini
sangat sulit untuk dilakukan, kemungkinan sudah banyak orang yang sudah
mengetahui isi dari e-mail kita. Jadi untuk amannya e-mail maupun informasi
yang kita kirim hendaknya disertai dengan software PGP.
2. Fleksibel
Karena PGP sudah
plug-in untuk semua program browser dan banyak digunakan oleh semua
program e-mail, maka PGP sangat fleksibel untuk digunakan. PGP selain
melindungi e-mail juga file kita dan berjalan pada semua sistem operasi.
3. Gratis
PGP dapat diperoleh secara gratis untuk penggunaan pribadi.
Kita dapat mendownload softwarenya pada saat kita terhubung dengan
internet. Semua kunci pribadi dapat kita peroleh dan tidak ada biaya tambahan
yang dibebankan untuk pembuatan sertifikat maupun tanda tangan digital yang
disertakan. Pada PGP untuk melakukan proses enkripsi digunakan kunci rahasia
yang berbeda dengan kunci rahasia yang digunakan pada proses deskripsi.
2.2.3
Cara Mendapatkan Program PGP
Program
PGP “International version” merupakan
shareware dan dapat didownload dari beberapa ftp server sebagai berikut :
ftp://ftp.ifi.uio.no/pub/pgp/(primary)
ftp://ftp.ox.ac.uk/pub/crypto/pgp/
ftp://ftp.dsi.unimi.it/pub/security/crypt/PGP/
ftp://ftp.informatik.uni-hamburg.de/pub/virus/crypt/pgp/
Program
PGP tersedia dalam berbagai platform seperti MS-Dos, Macintosh, Unix, VMS,
OS/2, Atari, dlsb. Untuk platform MS-Dos sendiri, terdapat dua jenis yaitu pgp263i.zip
(16 bit) dan pgp263ix.zip (32 bit). Untuk versi 32 bit, terdapat
perbedaan pada kecepatan proses enkripsi dan pembuatan key dibandingkan dengan
versi 16 bit.
2.2.4
Resiko Keamanan PGP
Apabila
sistem kita sudah memasuki dunia internet, maka keamanan data pun menjadi hl
yang penting. Berbagai cara pengaman telah dilakukan salah satunya seperti
penggunaan aplikasi PGP. Berikut adalah beberapa resiko keamanan yang dihadapi
oleh PGP :
1.
Kata
Kunci dan Private Key yang mudah ditebak
2.
Perusakan
Public Key
3.
File
yang tidak dihapus dengan sempurna
4.
Virus
dan Trojan
5.
Swap
file dan virtual memori
6.
Pelanggaran
keamanan secara fisik
7.
Serangan
8.
Kerusakan
atau kesalahan tanggal
9.
Analisa
lalu lintas jalan
10.
Kriptonalisis
2.3 SSL
SSL telah
menjadi standar de facto pada komunitas untuk mengamankan komunikasi antara
client dan server. Kepanjangan dari SSL adalah Secure Socket Layer; SSL adalah
sebuah layer protocol yang berada antara layer TCP/IP standar dengan protocol
di atasnya yaitu application-level protocol seperti HTTP. SSL mengijinkan
server untuk melakukan autentikasi dengan client dan selanjutnya mengenkripsi
komunikasi.
Pembahasan tentang operasi SSL pada bab ini bertujuan
agar kita mengetahui penggunaan teknologi ini untuk mengamankan komunikasi
antara server dengan client.
2.3.1 Mengaktifkan
SSL pada aplikasi
Untuk mengetahui keuntungan SSL pada aplikasi, kita perlu
melakukan konfigurasi server untuk menerima koneksi SSL. Pada servlet container
yang berbeda akan berbeda pula cara untuk melakukannya. Disini kita akan
belajar tentang melakukan konfigurasi Sun Application Server 8.1
2.3.2 Certificates
Salah satu bagian yang perlu kita konfigurasi untuk
membangun komunikasi SSL pada server adalah sebuah security certificate. Bisa
kita bayangkan sebuah certificate dalam hal ini seperti sebuah pasport : dimana
memiliki informasi-informasi penting pemilik yang bisa diketahui oleh orang lain.
Sertifikat tersebut biasanya disebarkan oleh Certification Authorities (CA).
Sebuah CA mirip seperti passport office : dimana CA bertugas untuk melakukan
validasi sertifikat pemilik dan menandai sertifikat agar tidak dapat
dipalsukan.
Sampai saat ini sudah banyak Certification Authorities
yang cukup terkenal, salah satunya adalah Verisign. Menentukan pemilihan CA
adalah tanggung jawab atau wewenang dari seorang admin untuk memberikan sebuah
sertifikat keamanan yang berlaku pada server.
2.3.3 Membuat
certificate private key
Untuk menyederhanakan permasalahan ini, akan lebih mudah
bila dengan melakukan operasi dimana certificate disimpan. Buka directory
menggunakan command line. Selanjutanya panggil command berikut ini:
keytool -genkey
-alias keyAlias -keyalg RSA -keypass
keypassword -storepass
storepassword -keystore
keystore.jks
• keyAlias – adalah alias atau ID dimana certificate ini
akan menunjuk kepada siapa. • keypassword – adalah password untuk private key
yang digunakan dalam proses 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 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 keystore file dengan sebuah password, sehingga
kita perlu menset nilai storepass menjadi : changeit.
Password ini dapat diganti menggunakan keytool seperti
ini:
keytool
-keystore keystore.jks -storepass newPassword
2.3.4 Membuat
cerificate
Setelah kita selesai membuat key yang akan digunakan oleh
ceritificate sekarang kita dapat membuat file certificate itu sendiri:
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 juga
keyAlias yang berada pada keystore.
2.3.5 Mengatur
certificate
Agar aplikasi server dapat mengenali certificate yang
sudah kita buat, kita perlu menambahkannya pada daftar dari trusted
certificates. Server memiliki file bernama cacerts.jks yang di dalamnya
terdapat certificates. Kita dapat menambahkan certificate kita dengan
menggunakan keytool berikut ini:
keytool -import -v -trustcacerts -alias keyAlias -file
certificateFileName -keystore cacerts.jks
-keypass keypassword
2.3.6 Membuat
secure HTTP listener
Setelah kita sudah berhasil membuat certificate dan
meregisternya untuk aplikasi server, sekarang kita akan membuat sebuah HTTP
listener yang dapat digunakan untuk membuat komunikasi yang aman.
Untuk melakukannya, langkah pertama login ke
administration console. Selanjutnya klik tab Configuration dan buka HTTP
Service
2.4 10 Celah keamanan pada aplikasi web
Open Web Application Security Project (OWASP) adalah
project open source yang dibangun untuk menemukan penyebab dari tidak amannya
sebuah software dan menemukan cara menanganinya. Ada 10 celah kemanan aplikasi
web yang ditemukan dan rekomendasi mereka tentang menanganinya sebagai sebuah
standard keamanan minimal dari aplikasi web.
1.
Unvalidated input
Semua aplikasi web menampilkan data dari HTTP request
yang dibuat oleh user dan menggunakan data tersebut untuk melakukan operasinya.
Hacker dapat memanipulasi bagian- bagian pada request (query string, cookie
information, header) untuk membypass mekanisme keamanan.
Berikut ini tiga jenis penyerangan yang berhubungan
dengan masalah ini: • Cross site scripting • Buffer overflows • Injection
flaws
Ada beberapa hal yang dapat dicatat ketika menangani
validasi pada aplikasi kita. Pertama, adalah tidak baik pada aplikasi web untuk
percaya 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 mudah diserang.
Kedua, beberapa aplikasi menggunakan pendekatan
"negative" (negative approach) pada validasinya : Aplikasi mencoba
mendeteksi jika terdapat elemen yang berbahaya pada request parameter. Masalah
dari 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 unvalidated input;
Masih ada kemungkinan dimana cara yang baru tidak dikenali oleh aplikasi dapat
membypass validasi dan melakukan perusakan. Adalah cara yang lebih baik untuk
menggunakan pendekatan "positive" (positive approach) yaitu :
membatasi sebuah format atau pola untuk nilai yang diijinkan dan memastikan
input tersebut sesuai dengan format tersebut.
2. Broken
Access Control
Banyak aplikasi yang mengkategorikan user-usernya ke
dalam role yang berbeda dan level yang berbeda untuk berinteraksi dengan
content yang dibedakan dari kategori-kategori tersebut. Salah satu contohnya,
banyak aplikasi yang terdapat user role dan admin role : hanya admin role yang
diijinkan untuk mengakses halaman khusus atau melakukan action administration.
Masalahnya adalah beberapa aplikasi tidak efektif untuk
memaksa agar otorisasi ini bekerja. Contohnya, beberapa program hanya
menggunakan sebuah checkpoint dimana hanya user yang terpilih yang dapat
mengakses : untuk proses lebih lanjut, user harus membuktikan dirinya terotorisasi
dengan menggunakan user name dan password. • Insecure Ids – Beberapa site
menggunakan id atau kunci yang menunjuk kepada user atau fungsi. ID dapat juga
ditebak, dan jika hacker dapat mudah menebak ID dari user yang terautorisasi,
maka site akan mudah diserang. • File permissions – Kebanyakan web dan aplikasi
server percaya kepada external file yang menyimpan daftar dari user yang
terotorisasi dan resources mana saja yang dapat dan/atau tidak dapat diakses.
Apabila file ini dapat dibaca dari luar, maka hacker dapat memodifikasi dengan
mudah untuk menambahkan dirinya pada daftar user yang diijinkan.
Langkah-langkah apa saja yang dapat dilakukan untuk
mengatasinya? Pada contoh-contoh tadi, kita dapat mengembangkan filter atau
komponen yang dapat dijalankan pada sensitive resources. Filter atau komponen
tadi dapat menjamin hanya user yang terotorisasi dapat mengakases. Untuk
melindungi dari insecure Ids, kita harus mengembangkan aplikasi kita agar tidak
percaya pada kerahasiaan dari Ids yang dapat memberi access control. Pada
masalah file permission, file-file tersebut harus berada pada lokasi yang tidak
dapat diakses oleh web browser dan hanya role tertentu saja yang dapat
mengaksesnya.
3. Broken
Authentication dan Session Management
Authentication dan session management menunjuk kepada
semua aspek dari pengaturan user authentikasi dan management of active session.
Berikut ini beberapa hal yang perlu diperhatikan :
• Password strength – Aplikasi kita harus memberikan
level minimal dari keamanan sebuah password, dimana dapat dilihat dengan cara
melihat panjang dari password dan kompleksitasnya. Contohnya sebuah aplikasi
dimana terdapat user baru yang akan mendaftar : aplikasi tidak mengijinkan
password dengan panjang 3-4 karakter atau kata- kata simpel yang dapat mudah
ditebak oleh hacker.
• Password use – Aplikasi kita harus membatasi user yang
mengakses aplikasi melakukan login kembali ke sistem pada tenggang waktu
tertentu. Dengan cara ini aplikasi dapat dilindungi dari serangan brute force
dimana hacker bisa menyerang berulang kali untuk berhasil login ke sistem.
Selain itu, log in yang gagal sebaiknya dicatat sebagai informasi kepada
administrator untuk mengindikasikan kemungkinan serangan yang terjadi.
• Password storage – password tidak boleh disimpan di
dalam aplikasi. Password harus disimpan dalam format terenkripsi dan disimpan
di file lain seperti file database atau file password. Hal ini dapat memastikan
bahwa informasi yang sensitif seperti password tidak disebarkan ke dalam aplikasi.
Issue lain yang berhubungan : password tidak boleh dalam
bentuk hardcoded di dalam source code.
• Session ID Protection – server biasanya menggunakan
session Id untuk mengidentifikasi user yang masuk ke dalam session. Akan tetapi
jika session ID ini dapat dilihat oleh seseorang pada jaringan yang sama, orang
tersebut dapat menjadi seorang client.
4. Cross
site scripting
Cross site scripting terjadi ketika seseorang membuat
aplikasi web melalui script ke user lain. Hal ini dilakukan oleh penyerang
dengan menambahkan content (seperti JavaScript, ActiveX, Flash) pada request
yang dapat membuat HTML output yang dapat dilihat oleh user lain. Apabila ada
user lain yang mengakses content tersebut, browser tidak mengetahui bahwa
halaman tersebut tidak dapat dipercaya.
Cara yang bisa digunakan untuk mencegah serangan cross
site scripting adalah dengan melakukan validasi data masuk dari user request
(seperti header, cookie, user parameter, ...). Cara negative approach tidak
digunakan : mencoba untuk memfilter active content merupakan cara yang tidak
efektif.
5. Buffer
overflows
Penyerang dapat menggunakan buffer overflows untuk
merusak aplikasi web. Hal ini dilakukan karena penyerang mengirimkan request
yang membuat server menjalankan kode-kode yang dikirimkan oleh penyerang.
Kelemahan buffer overflow biasanya sulit dideteksi dan
sulit dilakukan oleh hacker. Akan tetapi penyerang masih bisa mencari kelemahan
ini dan melakukan buffer overflow pada sebagian aplikasi web.
Terima kasih atas desain dari Java environment, dimana
aplikasi yang berjalan pada J2EE server aman dari jenis serangan ini.
Untuk memastikan keamanan, cara yang paling baik adalah
melakukan pengawasan apabila terdapat patch atau bug report dari produk server
yang digunakan.
6.
Injection flaws
Salah satu kelemahan yang populer adalah injection flaw,
dimana hacker dapat mengirimkan atau menginject request ke operating system
atau ke external sumber seperti database.
Salah satu bentuknya adalah SQL injection. Berikut ini
salah satu contoh dari SQL injection :
http://someServer/someApp/someAction?searchString=jedi
URL diatas akan memproses pencarian dengan kata kunci
'jedi'. Implementasi dimana tidak ada validasi input adalah seperti SQL code
berikut ini :
select *
from someTable where someField='value'
dimana value adalah nilai dari parameter searchString
yang ada pada HTTP request.
Bagaimana jika, hacker melakukan input dari URL seperti
ini :
http://someServer/someApp/someAction?searchString=jedi'%20AND%20true; %20DROP%20DATABASE;'
7. SQL query
select * from someTable where someField='jedi' AND
true; DROP DATABASE;''
Statement awal pasti akan diterima dimana terdapat klausa
AND TRUE. Dan statement selanjutnya yaitu DROP DATABASE juga akan diekseskusi
yang akan memberikan kerusakan pada aplikasi.
Serangan ini bisa mungkin terjadi karena input yang tidak
divalidasi. Ada dua cara yang bisa dilakukan untuk mencegah serangan ini
yaitu:
• Daripada menggunakan statement SELECT, INSERT, UPDATE dan
DELETE statement, bisa dibuat fungsi yang melakukan hal serupa. Dengan
menggunakan fungsi diharapkan ada pengamanan terhadap parameter. Selain itu
dengan adanya fungsi, parameter yang masuk harus sama dengan tipe data dari
parameter yang dideklarasikan. • Hak akses dalam aplikasi juga harus dibatasi.
Contohnya, jika aplikasi hanya bertujuan untuk melihat data, tidak perlu
diberikan hak akses untuk melakukan INSERT, UPDATE atau DELETE. Jangan
menggunakan account admin pada aplikasi web untuk mengakases database. Hal ini
juga dapat meminimailkan serangan dari hacker.
8. Insecure
storage
Aplikasi web biasanya perlu menyimpan informasi yang
sensitif 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 masih bisa diserang.
Berikut ini beberapa kesalahan yang sering terjadi :
• Kesalahan untuk mengenkripsi data penting • Tidak
amannya kunci, certificate, dan password • Kurang amannya lokasi penyimpanan
data • Kurangnya penghitungan dari randomisasi • Kesalahan pemilihan
algoritma • Mencoba untuk menciptakan
algoritma enkripsi yang baru
Berdasarkan skenario berikut ini : Terdapat sebuah aplikasi, dimana terdapat
password pada user object. Akan tetapi, aplikasi menyimpan user object ke dalam
session setelah user login. Permasalahan yang akan muncul pada skenario ini
adalah password dapat dilihat oleh seseorang yang dapat melihat session dari
user tersebut.
Salah satu cara yang dilakukan untuk menghindari
kesalahan penyimpanan informasi yang sensitif adalah : tidak membuat password
sebagai atribut dari kelas yang mewakili informasi user; Daripada mengenkripsi
nomor kartu kredit dari user, akan lebih baik untuk menanyakannya setiap kali
dibutuhkan.
9. 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 request-request tersebut, server menjadi kelebihan
beban dan tidak bisa melayani user lainnya.
Serangan DoS mampu menghabiskan bandwidth yang ada pada
server. Selain itu dapat juga menghabiskan memory, koneksi database, dan sumber
yang lain.
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 ide /
cara yang bagus untuk membuat load quota yang membatasi jumlah load data yang
akan diakses user dari sistem.
Salah satu contoh adalah pada implementasi bulletin board
: adanya pembatasan user pada saat melakukan search, dimana operasi ini hanya
dapat dilakukan setiap 20 detik. Dengan cara ini dapat dipastikan bahwa user
tidak bisa menghabiskan koneksi dari database.
Solusi yang lain adalah mendesain aplikasi web dimana
user yang belum terotorisasi hanya memiliki akses yang sedikit atau tidak
memiliki akses ke content web yang berhubungan dengan database.
10.
Insecure Configuration Management
Biasanya kelompok (group) yang mengembangkan aplikasi
berbeda dengan kelompok yang mengatur hosting dari aplikasi. Hal ini bisa
menjadi berbahaya, dikarenakan keamanan yang diandalkan hanya dari segi
aplikasi : sedangakan dari segi server juga memiliki aspek keamanan yang perlu
diperhatikan. Adanya kesalahan dari konfigurasi server dapat melewati aspek
keamanan dari segi aplikasi.
Berikut ini adalah kesalahan konfigurasi server yang bisa
menimbulkan masalah :
• Celah keamanan yang belum dipatch dari software yang
ada pada server – administrator tidak melakukan patch software yang ada pada
server. • Celah keamanan server dimana bisa menampilkan list dari direktori
atau juga serangan berupa directory traversal. • File-file backup atau file
contoh (sample file), file-file script, file konfigurasi yang tertinggal /
tidak perlu. • Hak akses direktori atau file yang salah. • Adanya service yang
seperti remote administration dan content management yang masih aktif. •
Penggunaan default account dan default password. • Fungsi administrative atau
fungsi debug yang bisa diakses. • Adanya pesan error yang informatif dari segi
teknis. • Kesalahan konfigurasi SSL certificate dan setting enkripsi. • Penggunaan
self-signet certificates untuk melakukan autentikasi. • Penggunaan default
certificate. • Kesalahan autentikasi dengan sistem eksternal.
2.5 Metode- metode untuk menyerang website
Beberapa metode yang
biasa sering digunakan para hacker untuk menyerang suatu website:
1. Remote File Inclusion (RFI)
2.
Local File Inclusion (LFI)
3.
SQL injection
4.
Cross Site Scripting (XSS)
5.
Keylogger
Ø Remote File Inclusion (RFI)
Metode yang memanfaatkan kelemahan script PHP include(), include_once(),
require(), require_once() yang variabel nya tidak dideklarasikan dengan
sempurna.
Dengan RFI seorang attacker dapat menginclude kan file yang berada di
luar server yang bersangkutan.
Ø Local File Inclusion (LFI)
Metode yang memanfaatkan
kelemahan script PHP include(), include_once(), require(), require_once() yang
variabel nya tidak dideklarasikan dengan sempurna.
Dengan LFI seorang
attacker dapat menginclude kan file yang berada di dalam server yang
bersangkutan.
Ø SQL injection
SQL injection adalah teknik yang memanfaatkan kesalahan penulisan query
SQL pada suatu website sehingga seorang hacker bisa menginsert beberapa SQL
statement ke ‘query’ dengan cara memanipulasi data input ke aplikasi tersebut.
Ø Cross Site Scripting (XSS)
XSS dikenal juga dengan CSS adalah singkatan dari Cross Site
Scripting.XSS adalah suatu metode memasukan code atau script HTML kedalam suatu
website yang dijalankan melalui browser di client.
Ø Keylogger
Merupakan software/hardwareyang bekerja dengan cara
merekam setiap tombol yang kita tekan pada tombol. Segala aktivitas yang kita
inputkan pada komputer akan tercatat dalam software/hardware keyloger ini.
Keylogger dibagi menjadi dua bagian.
- Keylogger Hardware
Biasanya berupa alat yang dipasang diantara slot keyboard
pada komputer dan keyboard itu sendiri.
- Keylogger Software
Merupakan software yang terinstal pada PC yang bekerja
dengan cara membajak input yang dikirimkan ke Windows Procedure.
- Tips
keamanan website
hacker,
sehingga dapat mengurangi resiko kerusakan website, antara lain:
-
Jika menggunakan suatu CMS seperti joomla,
phpbb, phpnuke, wordpress dan sebagainya, rajinlah mengupdate CMS jika muncul
versi terbaru.
-
Kunjungi situs-situs yang membahas tentang
keamanan aplikasi web seperti : www.milw0rm.com, www.securityfocus.com atau
www.packetstormsecurity.org untuk mendapatkan informasi tentang bug terbaru.
- Menggunakan
tenaga ahli tentang keamanan website untuk menganalisis keamanan website.
-
Menggunakan software seperti Acunetix untuk
melakukan scanning atas kelemahan yang ada pada website.
Tidak ada komentar:
Posting Komentar