You are on page 1of 18

DATABASE SECURITY (Keamanan Database) Oleh : S Heri Pracoyo, SIP, MM Abstrak Dalam menyediakan informasi yang berkenaan dengan

customer/pelanggan, suatu organisasi/perusahaan perlu memahami berbagai hal yang terkait dengan informasi yang akan disediakan tersebut. Saat ini telah banyak organisasi/perusahaan mengembangkan aplikasi untuk keperluan customer/pelanggan, sehingga customer/pelanggan dapat dengan mudah mencari/mengakses informasi dari aplikasi tersebut. Namun demikian, belakangan ini permasalahan yang terkait dengan keamanan database tengah mendapat sorotan dan perhatian utama. Karena permasalahan tersebut berkaitan dengan informasi yang sifatnya rahasia tetapi bisa diakses oleh pihak yang tidak berwenang. Dimana akhirnya data yang diakses oleh pihak yang tidak berwenan tersebut akhirnya disalahgunakan, sehingga merugikan baik organisasi/perusahaan maupun customer/pelanggan. Worm Slammer dan kejahatan paling akhir yang mengakses di atas 8 juta nomor kartu kredit. Ataupun berbagai permasalahan yang terkait dengan database terutama yang berkenaan dengan aplikasi di internet yang menggunakan database untuk melakukan transaksinya. Kasus yang masih hangat adalah penyusupan hacker yang mengubah nama-nama partai pada situs KPU, dan masih banyak permasalahan keamanan yang terkait dengan database. Dalam tulisan ini akan diberikan beberapa hal yang terkait dengan security database

dan segala akibat dan keuntungannya. Semoga tulisan ini bisa menjadi masukan yang dapat membawa pada manfaat terhadap keamanan database terutama dalam hal penyediaan informasi yang menggunakan aplikasi melalui internet/intranet.
Kata kunci : Server, Website, keamanan, Database

PENDAHULUAN Saat ini database telah dipergunakan dengan aplikasi di Internet/Intranet ataupun aplikasi yang lainnya. Informasi dari database tersebut sudah sangat dibutuhkan terutama bagi organisasi/perusahaan yang mempunyai banyak customer/pelanggan, dimana perusahaan akan berlomba untuk menyediakan informasi tentang segala kegiatan yang berkenaan dengan organisasi/perusahaan tersebut terhadap customer/pelanggannya. Belakangan ini, permasalahan keamanan database ataupun keamanan yang tidak terkait dengan database tengah membanjiri media dan Internet. Pertama dengan Worm Slammer dan kejahatan paling akhir yang mengakses di atas 8 juta nomor kartu kredit. Ataupun berbagai permasalahan yang terkait dengan database terutama yang berkenaan dengan aplikasi di internet yang menggunakan database untuk melakukan transaksinya. Kasus yang masih segar dalam ingatan kita adalah penyusupan hacker yang mengubah nama-nama partai pada situs KPU, dan masih banyak permasalahan keamanan yang terkait dengan database.

Struktur Keamanan Dasar Database Pada dasarnya keamanan database (database security) dapat dibagi sebagai berikut: Keamanan Server (Server Security) Koneksi Database (Database Connections) Kontrol Akses Tabel (Table Access Control) Membatasi Akses Database (Restricting Database Access) Keamanan Server (Server Security) Keamanan Server adalah proses membatasi akses nyata terhadap server database dengan sendirinya, dan dalam pendapat sederhana hal tersebut adalah sudut keamanan yang paling utama dan harus direncanakan secara hati-hati. Gagasan dasar ini adalah, " Anda tidak bisa mengakses apa yang anda tidak bisa lihat". Sekarang sebagian orang akan mengatakan, " Bagaimana server database anda menyediakan informasi ke halaman web dinamis?" Back End database anda harus tidak pernah ada (tidak berada) pada mesin yang sama sebagai web server web anda, tidak hanya untuk keamanan, tetapi untuk performance!" Jika server database anda sedang menyediakan informasi kepada web server, haruslah server database dapat dikonfigurasi untuk memungkinkan koneksi hanya dari web server.

Trusted IP addresses Setiap server, harus dikonfigurasi untuk hanya memungkinkan alamat IP yang dipercaya (trusted). (Anda jangan membiarkan setiap orang masuk ke rumah anda dan berbicara dengan anak anda). Dalam hal yang sama anda harus tahu secara pasti siapa yang harus diperbolehkan untuk bicara dengan server database anda. Jika hal tersebut adalah back end untuk suatu web server, kemudian hanya alamat (address) web server tersebut yang harus dibiarkan untuk mengakses server database. Jika server database menyediakan informasi terhadap aplikasi home-based (domestik) yang berjalan pada jaringan internal, selanjutnya server tersebut harus menjawab terhadap alamat dari dalam jaringan internal saja.

Koneksi Database Saat ini dengan beberapa aplikasi dinamik memungkinkan untuk mengupdate database yang tidak diauthentifikasi. Jika user dimungkinkan untuk mengupdate ke database

melalui web page, pastikan bahwa validasi telah dibuat untuk semua update tersebut dan pastikan update tersebut terjamin dan aman. Misalnya pastikan bahwa anda membuang setiap kemungkinan SQL code dari input yang diberikan oleh user. Jika user normal tidak pernah menginputnya jangan dibiarkan data untuk selamanya disampaikan. Jika anda adalah Administrator yang merasa perlu untuk menggunakan ODBC connection pastikan bahwa setiap connection tsb menggunakan user unique untuk mengakses data yang di-share. Jangan menggunakan user account sa untuk setiap connection dan data source pada server (sa adalah user account paling tinggi haknya).

Kontrol Akses Table Kontrol akses table adalah salah satu kemungkinan dari bentuk yang paling dilewatkan dari database security karena kesulitan yang tidak bisa dipisahkan dalam menerapkannya. Penggunaan kontrol akses table secara tepat akan memerlukan kolaborasi baik sistem administrator maupun database developer. Dalam akses ini hak (Permissions) apa saja yang harus diberikan ke user atau yang akan digunakan untuk aplikasi. Permission yang diberikan bisa Read, Write/Insert, Update, Delete. Atau jika digunakan untuk aplikasi lebih baik berikan permission ke user yang digunakan untuk aplikasi tersebut hak execute terhadap procedure. Karena dalam hal ini user tidak akan mengetahui secara detail data/table apa yang digunakan untuk aplikasi tersebut.

Membatasi Akses Database Keamanan server khusus terutama berkaitan dengan akses jaringan pada sistem (network access of the system). Secara khusus menargetkan internet yang didasarkan database, karena hal tersebut yang sebagian besar menjadi sasaran serangan (attack). Sebagian besar kejahatan cyber (istilah Hackers atau Crackers) dapat melakukan suatu port scan sederhana untuk melihat port yang terbuka dimana sistem database yang umum menggunakan default (standard setting). Istilah default disini karena dapat mengubah port yang dapat menolak suatu kejahatan (port scan). Pertama-tama mereka akan berusaha untuk menentukan jika suatu mesin berada pada alamat tertentu. Mereka akan mengerjakannya dengan melakukan ping atau ICMP Packet. Suatu ping adalah teknik untuk mengirimkan suatu paket ICMP (Internet Control Message Protocol) ke suatu remote host. Jika remote host up, dan mendukung ICMP, suatu pesan kontrol (control message), atau paket, akan dikirim kembali ke pengirim tersebut. Teknik tersebut menyediakan suatu mekanisme untuk umpan-balik mengenai permasalahan komunikasi dalam suatu lingkungan yang berada dalam jaringan. (http://www.aspnetping.com/faq.aspx). Contoh Hasil Pinging ke suatu IP, akan memberikan hasil Paket yang dikirim, paket yang diterima, paket yang hilang. Waktu yang diperlukan maksimum dan minimum serta rataratanya.

C:\>Ping 10.200.200.35 Pinging 10.200.200.35 with 32 bytes of data: Reply from 10.200.200.35: bytes=32 times<10ms TTL=127 Reply from 10.200.200.35: bytes=32 times<10ms TTL=127 Reply from 10.200.200.35: bytes=32 times<10ms TTL=127 Reply from 10.200.200.35: bytes=32 times<10ms TTL=127 Ping statistics for 10.200.200.35: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0 ms, Maximum = 10ms, Average = 5 ms C:\>

Keamanan Database yang terkait dengan web-Enabled Database. Karena penggunaan web baik pada Intranet dan Internet umum, keamanan informasi menjadi hal yang krusial/penting bagi organisasi/perusahaan. Web menyediakan suatu cara mempublikasi data secara murah, cepat dan sesuai. Saat ini hal tersebut sangat mudah untuk menyebarkan informasi, hal tersebut penting untuk memastikan bahwa informasi hanya dapat diakses oleh orang yang mempunyai hak untuk menggunakannya. Dengan beberapa sistem yang mengimplementasikan pembuatan halaman web dinamis dari suatu database, keamanan informasi perusahaan adalah lebih penting. Sebelumnya, akses database terbatas atau dikhususkan klien software yang memerlukan untuk melihat data. Saat ini setiap orang dengan suatu web browser dapat melihat data dalam suatu database yang tidak dilindungi secara tepat. Tidak pernah sebelumnya keamanan informasi menjadi banyak titik rawannya (mudah ditembus). Karena industri komputer berpindah dari era mainfraim ke era client/server ke era Internet, suatu jumlah peningkatan secara mendasar pada titik penetrasi yang telah terbuka. Karena banyak keamanan internet, spesialis database harus mendasarkan pada network administrator mengimplementasikan tindakan pencegahan seperti firewall untuk melindungi data lokal. Karena sifat akses informasi Intranet/Internet, meskipun demikian, banyak fungsi keamanan turun ke dalam area abu-abu dari tanggung jawab. Terutama area dimana keamanan berada dalam domain DBA, orang yang harus membuat pemecahan informasi. Prosedur keamanan baru dan teknologi dipelopori tiap hari. Untuk keamanan Web, anda harus mengarahkan tiga area primer: 1. Server security/Keamanan Server memastikan keamanan yang terkait dengan data nyata atau file HTML private yang disimpan di server 2. User-authentication security/Keamanan autentikasi user Memastikan keamanan login yang mencegah akses yang tidak berwenang terhadap informasi. 3. Session security/Keamanan Sesi memastikan bahwa data tidak diintersep (dipotong) sebagaimana data tersebut menyebar melalui Intranet atau Internet

Anda dapat melihat lapisan-lapisan tersebut sebagai lapisan perlindungan. Untuk setiap lapisan dari keamanan yang ditambahkan, sistem menjadi lebih terlindungi. Seperti rantai, seluruh pelindung dapat putus jika terdapat link yang lemah. Keamanan Server (Server Security) Keamanan server mencakup membatasi akses terhadap data yang disimpan pada server. Meskipun bidang tersebut terutama tanggung jawab dari network administrator, proses publikasi data ke Web seringkali memerlukan spesialis sistem informasi untuk melakukan penanganan aktif dalam meng-install dan mengimplementasikan kebijakan keamanan. Dua metode utama dimana informasi dari database dipublikasi ke Web adalah menggunakan halaman Web statis dan pembuatan halaman Web dinamis aktif. Dua metode tersebut memerlukan hampir sepenuhnya mekanisme keamanan yang berbeda.

Halaman Web Statis (Static Web Pages ) Halaman web statis merupakan file HTML sederhana yang disimpan di server. Beberapa spesialis database mempertimbangkan pembuatan halaman statis merupakan metode paling sederhana dan paling fleksibel dari publikasi data ke Web. Dalam suatu nutshell, suatu program klien ditulis pada query data dari suatu database dan menghasilkan halaman HTML yang menayangkan informasi tersebut. Ketika dipublikasi sebagai halaman web statis, file-file web dapat di-upload pada setiap server, meskipun demikian, untuk pembuatan dinamis, server web biasanya harus dimodifikasi (atau script-script baru atau software aplikasi di-install). Halaman statis mempunyai manfaat sekunder dari yang dihasilkan dengan piranti client/server tradisional seperti Visual Basic atau PowerBuilder. Karena hampir setiap sistem pengembang dapat menghasilkan file-file test, hanya saja kode-kode HTML yang diperlukan harus ditambahkan untuk membuatnya halaman-halaman web. Pembuatan halaman tersebut, selanjutnya menggunakan metode standard dari kontrol akses database seperti keamanan database dan kontrol login. Sekali dibuat, file tersebut harus di-upload ke web server. Perlindungan dokumen-dokumen yang disimpan di tempat tersebut terjadi dalam cara yang sama dengan setiap dokumen web lainnya akan dibuat aman. Salah satu cara yang paling mudah untuk melindungi dokumen HTML yang sensitif adalah dengan membatasi browsing directory. Sebagian besar FTP dan web server memungkinkan direktori dapat dikonfigurasi sehingga file-file yang disimpan dalam direktori tersebut dapat dibaca tetapi file-file tersebut tidak terdaftar dalam direktori. Teknik tersebut mencegah setiap user orang yang tidak mengetahui dengan pasti nama file dari pengaksesannya. Akses dapat diijinkan dengan pendistribusian sederhana nama-nama file dengan pasti terhadap orang yang diberi wewenang. Direktori dapat juga dilindungi dengan menggunakan keamanan sistem operasi yang tergabung. Beberapa web server memungkinkan pembatasan keamanan untuk dapat ditempatkan pada folder-folder atau direktori-direktori khusus dengan menggunakan teknik sistem operasi standar (seperti atribut-atribut file) dan kemudian menggunakan keamanan tersebut untuk membatasi akses. Implementasi tersebut akan beragam di antara web serter. Implementasi keamanan tersebut untuk mencapai akses terhadap file-file atau folder-folder khusus yang turun pada kategori keamanan user-authentication.

Pembuatan Halaman Dinamis (Dynamic Page Generation ) Yang disukai oleh organisasi besar, metode tersebut meningkatkan popularitas sebagai teknologi untuk membuat halaman web dengan cepat dari suatu query database menjadi lebih kuat. Suatu halaman web dinamis disimpan pada web server dengan tidak ada data sesungguhnya (aktual) tetapi sebagai gantinya suatu templateuntuk kode HTML dan suatu query. Ketika klien mengakses halaman tersebut, query dieksekusi (dijalankan), dan halaman HTML yang berisi data tersebut dihasilkan on the fly. Data yang diperlukan diisikan ke dalam alur yang ditentukan dalam file template dalam banyak cara yang sama dimana suatu mail merge terjadi dalam program pengolah kata. Suatu program dapat menjadi aktif pada web server untuk menghasilkan halaman web yang diperlukan, atau suatu script CGI dapat secara dinamis membuatnya. Salah satu dari permasalahan keamanan pertama adalah bahwa seorang DBA harus menghadapi akses setting up terhadap database dari web server. Apakah dengan menggunakan script CGI, middleware yang didasarkan-server, atau suatu piranti query, sever tersebut dengan sendirinya harus mempunyai akses terhadap database. Koneksi Database (Database Connections ) Dengan sebagian besar penghubung dinamis ke database, duatu koneksi dengan akses penuh harus diberikan pada web server karena berbagai query akan memerlukan akses terhadap tabel-tabel atau view-view yang berbeda untuk membangun HTML dari query tersebut. Bahaya tersebut tampak jelas: suatu sumber data tunggal pada server harus diberikan kemampuan akses yang luas. Hal tersebut membuat krusial keamanan server. Misalnya, suatu sumber data ODBC diberikan akses administrator penuh dapat secara potensial diakses oleh setiap program lainnya pada server. Suatu program dapat dibuat untuk memanggil informasi private dari suatu sumber data berkaitan dengan apakah author program dimungkinkan mengakses. Permasalahan keamanan tersebut adalah paling berbahaya pada suatu sistem dimana pemakai dimungkinkan untuk mengupload script CGI atau program untuk menjalankan pada server tersebut. Untuk mencegah akses yang tidak berwenan terhadap data anda, buat kepastian bahwa server yang memiliki penghubung database tersebut secara fisik aman dan tidak memungkinkan eksekusi program yang tidak dibatasi. Pengawasan Akses Tabel (Table Access Control ) Standard pengawasan akses tabel, jika dicirikan dalam sistem autentikasi pemakai, adalah lebih penting pada aplikasi web daripada sistem client/server tradisional. DBA seringkali kurang hati-hati dalam membatasi akses terhadap tabel-tabel khusus karena beberapa pemakai akan mengetahui bagaimana membuat suatu query SQL biasa untuk memanggil data dari database. Sebagian besar akses terhadap database pada sistem client/server terjadi melalui suatu klien yang dibangun secara khusus yang membatasi akses dari tempat tersebut. Tidak juga dengan aplikasi berdasarkan web: pengembangan client/server memerlukan pengalaman mendasar, tetapi meskipun beberapa pemula dapat memprogram atau memodifikasi kode HTML, dan sebagian besar pemakai aplikasi produktif seperti pengolah kata atau spreadsheet yang dapat mengakses database juga menyimpan dokumen sebagai halaman HTML. Selanjutnya, beberapa pemecahan akan dibuat oleh pemakai perantara dan juga keamanan yang valid adalah suatu keharusan. Ingat, suatu pengetahuan yang sedikit dapat menjadi sesuatu yang berbahaya. Keamanan Autentikasi-Pemakai (User-Authentication Security ) Keamanan autentikasi (Authentication) mengatur penghalang/dinding yang harus dilewati sebelum pemakai dapat mengakses informasi khusus. Pemakai harus mempunyai beberapa

bentuk identifikasi yang valid sebelum akses diberikan. Login dikerjakan dalam dua cara standard : menggunakan bentuk HTML dan menggunakan permintaan keamanan HTTP. Login HTML adalah hanya suatu halaman HTML yang berisi field-field berbentuk username dan password . ID dan password sesungguhnya disimpan dalam table pada server. Informasi tersebut dibawa pada server melalui script CGI atau beberapa potongan middleware database untuk melakukan lookup dalam suatu database identifikasi pemakai. Metode tersebut mempunyai manfaat yang meletakkan DBA menentukan suatu hak pemakai khusus. Dengan menggunakan suatu table yang dibuat oleh DBA, beberapa hak keamanan menentukan terhadap proyek tertentu yang dapat didefinisikan. Sekali login telah terjadi, suatu potongan data yang disebut cookie dapat ditulis pada mesin klien untuk melakukan pencarian user session. Suatu cookie adalah data (mirip dengan suatu kunci dan nilai dalam file .ini) yang dikirim dari web server dan disimpan oleh browser klien. Web server selanjutnya dapat mengirimkan suatu pesan kepada browser, dan data dikembalikan ke server. Karena suatu koneksi HTTP tidak tetap, Use ID dapat ditulis sebagai suatu cookie sehingga pemakai dapat diidentifikasi selama waktu (berlangsungnya) dari session tersebut. Meskipun demikian keamanan login bentuk HTML, harus diimplementasikan secara fisik. Seringkali cara tersebut menemukan kembali perputaran tersebut. Tidak hanya harus suatu tabel database atau file lainnya dijaga pada jalur pemakai dan password, tetapi kebiasaan autentikasi harus dilakukan, apakah melalui script CGI atau melalui metode lainnya. Selanjunya kecuali menggunakan suatu hubungan yang aman, baik username maupun password disebarkan melintasi jaringan (network), dimana keduanya dapat dipotong (intercept). Login bentuk HTML sangat baik ketika keamanan data tidak menjadi hal yang penting tetapi pengawasan akses khusus diperlukan. Login browser paling berguna ketika hal tersebut digabungkan dengan keamanan database yang ada melalui beberapa jenis middleware. Meskipun pemakai diautentikasi secara tepat, keamanan tambahan yang berkaitan meningkat.

Keamanan Session (Session Security) Setelah pemakai memberikan identifikasi yang tepat dan akses diberikan terhadap data, keamanan session memastikan bahwa data private tidak dipotong (intercept) atau diganggu selama session tersebut. Protokol dasar dari jaringan tidak men-set up suatu hubungan pointto-point, seperti suatu yang dikerjakan sistem telepon. Sebagai gantinga, informasi disebar melintasi jaringan untuk diterima oleh mesin khusus. TCP/IP adalah protokol dasar untuk transmisi pada internet. Protokol tersebut tidak pernah dirancang untuk keamanan, dan sebagaiman hal tersebut sangat tidak aman. Karena data dikirim dari satu mesin ke mesin lainnya yang benar-benar disebarkan (dipancarkan) melintasi seluruh jaringan, suatu program yang disebut packet sniffer dapat dipergunakan untuk memotong paket informasi yang dibatasi untuk suatu pemakai khusus. Selanjutnya, meskipun pemakai telah masuk (logged) secara tepat ke dalam sistem, setiap informasi yang diakses dapat dipotong dan ditangkap oleh pemakai lainnya pada jaringan tersebut. Tidak ada cara yang mudah untuk mencegah intersepsi (pemotongan) tersebut kecuali dengan melakukan enkripsi semua informasi yang mengalir melalui kedua cara tersebut.

Secure Sockets Layer (SSL) dan S-HTTP Sistem kunci-rahasia/publik telah diimplementasikan secara luas pada internet. Sebagian besar pengembang produk internet (seperti Netscape, Microsoft Corp., dan IBM Corp.) setuju untuk menggunakan protokol enrkipsi yang dikenal sebagai Secure Sockets Layer (SSL).

SSL mengenkripsi semua data yang dikirimkan di antara klien dan server selama suatu session.

SSL menggunakan Secure HTTP (S-HTTP) sebagai protokol transamisi dasarnya. Protokol tersebut merupakan suatu variasi HTTP yang menyediakan dasar keamanan untuk tranmisi SSL. S-HTTP melakukan apa yang dikenal sebagai suatu handshake ketika melakukan suatu koneksi untuk menukar key dan membuat suatu hubungan yang dienkripsi. Mengalamatkan pada suatu halaman aman SSL menggunakan kata depan (prefiks) https sebagai pengganti yang biasa http. Selanjutnya, suatu alamat halaman yang aman akan dimulai dengan https://.. Sistem key-publik memerlukan bahwa setiap bagian mempunyai suatu key publik atau private. Key tersebut harus dihasilkan oleh sumber yang terpercaya. Untuk penyebaran internet, beberapa perusahaan menawarkan layanan tersebut, yang terbesar darinya adalah Verisign Inc. (Mountain View, California, www.verisign.com). Menghasilkan suatu biaya key sebesar $300 per server untuk tahun pertama dan sekitar $100 untuk setiap tahun setelahnya. Anda harus menunggu di antara dua dan tiga minggu untuk menerima suatu key. Meskipun demikian, intranet, juga mempunyai banyak alasan untuk melindungi datanya. Kenyataannya, National Computer Security Associaton (NSCA) menghitung bahwa kemungkinkan sebanyak 80 persen dari pelanggaran keamanan organisasi terjadi dalam organisasi tersebut. Untuk informasi database private, semua authentikasi di dunia tidak akan mencegah packet sniffer dari pemotongan (intercept) data yang dikirim melintasi jaringan. Untuk alasan ini, organisasi telah memulai untuk melakukan set up server-server key-publik (public-key servers) miliknya.
Certificate Servers Banyak organisasi menginginkan suatu cara membuat dan mencari key pada suatu sistem keypublik. Banyak dari tekanan saat ini telah difokuskan pada digital signature, digital certificate, atau digital ID. Suatu digital signature adalah hanya kunci publik dari sistem kunci-publik. Hal tersebut adalah suatu standard yang disebut dengan X 509 untuk format sertifikat digital. Misalnya, seorang user dapat menggunakan kunci private-nya untuk mengenkripsi text dari buku. Pemakai tersebut selanjutnya dapat mengirimkan buku yang dienkripsi begitu juga kunci publiknya ke user yang lainnya. Kunci publik atau digital signature berisi ID dari pesertya yang dipercaya yang menghasilkan kunci (seperti Verisign dan AT&T). Penerima dokumen memverifikasi bahwa kunci tersebut dipergunakan untuk menghasilkannya yang dibuat oleh peserta yang dipercaya dan kemudian melakukan decode (menterjemahkan) informasi tersebut. Hanya kunci private user yang dapat mempunyai dokumen yang telah diterjemahkan. Suatu Certificate Server memungkinkan suatu perusahaan menjadikannya pembuat kunci yang dipercaya. Sedikit dari yang dipunyai Verisign yang menghasilkan pasangan kunci publik/private, suatu Certifitace Server dalam perusahaan membuat kunci dan membuat ciriciri nama pembuatanya pada setiap kunci. Kunci publik dengan sendirinya juga dijaga dalam file pada server. Seorang user dapat meminta kunci publik John Smith (misalnya) untuk mengkodekan suatu dokumen yang secara jelas dirikim oleh John Smith. Jika dokumen tersebut tidak dienkripsi dengan kunci private Smith, kunci publik pada Certificate Server tidak akan mengkodekan hal tersebut secara tepat.

Digital Signatures sebagai Password

Perencanaan naya untuk sistem kunci publik adalah untuk menggunakan hal tersebut dalam hubungannya dengan sistem kunci-rahasia. Sedikit daripada yang mempunyai kunci private besar yang harus dipindahkan dari komputer ke keomputer, kunci private akan diganti dienkripsi menggunakan sistem kunci-rahasia. User kemudian hanya mengingat suatu password sederhana (seperti PIN untuk kartu ATM-nya) yang dipergunakan untuk melakukan dekrip kunci private. Kunci private yang dienkripsi kemudian disimpan pada server, dalam kartu pintar ( smart card), atau pada kartu kredit anda. Akses ke database, misalnya, hanya akan dimungkinkan dengan mengirimkan kode khusus yang dienkripsi dengan kunci private anda. Dokumen yang dikodekan diterima oleh program autentikasi user, hal tersebut dikodekan dengan kunci publik anda, dan akses diberikan.

Kerberos

Kerberos adalah suatu server dari user name dan password yang aman. Kekuatan Kerberos adalah bahwa hal tersebut menyediakan salah satu server keamanan terpusat untuk semua danta dan sumber pada jaringan, yaitu dengan menyediakan autentikasi kuat untuk aplikasi clinet/server dengan menggunakan kriptografi kunci-rahasia.. Akses database, login, kontrol sumber, dan sifat keamanan lainnya dipusatkan pada Server Kerberos yang dipercaya. Perusahaan keamanan saat ini mencari untuk menggabungkan Kerberos dan Certificate Server untuk menyediakan sistem keamanan jaringan lebar. Yang ditemukan di MIT (Massachusetts Institute of Technology). Kerberos mempunyai fungsi mirip dengan fungsi pada Certificate Server: Kerberos bekerja sebagai pelindung, yang memastikan bahwa pemakai diidentifikasi dan divalidasi. Menggunakan tokens dan berbagai teknologi lainnya, suatu sistem Kerberos membuat suatu jaringan terdistribusi aman. Dikombinasikan dengan perpindahan kunci-publik, Kerberos dapat menyediakan dimana saja dalam pengembangan keamanan Web selama beberapa tahun ke depan. Kerberos dibuat oleh MIT sebagai suatu solusi terhadap permasalahan keamanan jaringan. Protokol Kerberos menggunakan kriptografi kuat sehingga client dapat menyediakan identitasnya ke server (dan sebaliknya) melintasi suatu hubungan jaringan/network yang tidak aman. Setelah client dan server telah menggunakan Kerberos untuk menyediakan identitasnya, Client dan Server tersebut juga dapat meng-enkrip semua komunikasinya untuk memastikan integritas data dan privacy sebagaimana melakukan bisnisnya. Kerberos tersedia secara bebas dari MIT, di bawah ijin hak cipta yang sangat mirip dengan yang dipergunakan untuk sistem operasi BSD dan Sistem Window X. MIT menyediakan Kerberos dalam bentuk source sehingga setiap orang yang berminat menggunakannya dapat melihat kode tersebut untuk dirinya sendiri dan memastikan bahwa kode tersebut tetap (konstan).

Kesimpulannya, Kerberos merupakan suatu solusi terhadap permasalahan keamanan jaringan anda. Kerberos menyediakan piranti autentikasi dan kriptografi yang kuat di atas network untuk membantu anda mengamankan sistem informasi anda melintasi seluruh enterprise anda.
Keamanan Vendor-khusus Vendor-vendor individual menentukan secara besar skema keamanan yang akan diimplementasikan untuk menyediakan link di antara database dan halaman HTML yang dipublish. Berikut ini beberapa komponen keamanan yang disediakan oleh vendor-vendor utama. Seperti sistem client/server, pemecahan harus dipotong bersama-sama menggunakan banyak produk-produk vendor.

10

Oracle Oracle Corp. (Redwood Shores, Calif.), sambil menyediakan keamanan SSL dan S-HTTP , merencanakan menggunakan Java sebagai komponen dasar dari model keamanannya. Perusahaan tersebut membuat Oracle Web Server untuk bekerja secara paling efektif dengan Oracle client seperti Oracle Power Browser dan pemecahan dibuat dengan Developer/2000 development tool. Oracle juga memodifikasi protokol HTTP untuk memungkinkan hubungan tetap yang dapat dikerjakan di antara client dan server. Hubungan tersebut benar-benar menentukan suatu sesi dimana pemakai diidentifikasi dengan membuat ID untuk mengidentifikasi pemakai. Peningkatan tersebut ada dalam Secure Network Server (SNS) yang tercakup dalam Oracle Universal Database. SNS menggabungkan dukungan untuk standard keamanan Kerberos. Melalui sistem Kerberos, suatu login tunggal memungkinkan akses pada setiap Oracle database dalam suatu sistem enterprise. Java security classes dipergunakan oleh Oracle development tool untuk menyediakan integrasi keamanan yang lengkap dengan client.

Sybase Sybase Inc. (Emeryville, Calif.) menyediakan suatu cara yang sedikit elegan untuk melindungi akses data melalui Web. Sedikit daripada konsep custom Web framwork miliknya, keamanan logon yang ada dalam web server hanya melewatkan melalui server database untuk autentikasi, mengambil manfaat dari keamanan native yang ada dalam database. Sybase menyediakan suatu potongan middleware yang disebut Web.sql yang dipergunakan pada interface dengan Netscape Web Server. Komunikasi diantara server Netscape Suitespot dan database lewat melalui API untuk Web.sql.

Informix Informix Corp. (Menlo Park, Calif.), seperti sybase, terletak pada keamanan login yang ada pada Web server. Selanjutnya, setiap akses ditentukan melalui saluran login jenis ODBC tradisional, yang melewatkan informasi user dan password melalui konektivitas middleware. Driver-driver khusus yang disebut dengan Universal Web Connect tersedia untuk menggabungkan keamanan database Informix dengan Netscape maupun Microsoft Web Server.

Microsoft Microsoft Corp. (Redmond, Wash.) adalah salah satu dari pemain yang paling aktif dalam bidang keamanan Internet karena pencariannya pada pasar kembar Internet deployment dan Internet Commerce, keduanya memerlukan keamanan yang ekstensif. Dengan mengambil peran aktif dalam diskuisi standard keamanan, Microsoft berharap dapat membentuk kebijakan pada manfaatnya. Dengan Internet Information Server (IIS), Microsoft telah mencakupkan sebagian besar teknologi keamanan kunci. Login tradisional pada Web mencirikan keamanan yang sama yang ada pada dasar Windows NT Login. Sayangnya, hanya Browser Microsoft Internet Explorer yang mendukung pendekatan login tersebut, dan Netscape tidak membuat pengumuman untuk menggabungkannya ke dalam Navigator.

11

Untuk akses database, Microsofot telah mengabungkan keamanan IIS dengan Microsoft SQL Server melalui penghubung Database Intenet. User login harus terjadi melalui bentuk login HTML, tetapi informasi dapat diverifikasi menggunakan suatu store prosedur SQL Server. Microsoft juga menggabungkan arsitektur keamanan Kerberos pada Windows NT Server 5.0. Dengan melakukan release server tersbeut, Microsoft berharap menggabungkan native Kerberos pada NT server dengan keamanan kunci publik. Microsoft telah me-release Certificate Server API dalam usaha membuat suatu standard Certificate Server.

Pertimbangkan semua Sudut Membuat aman data anda untuk disebarkan melalui Internet dan Intranet bukan tugas yang mudah. Cara terbaik untuk mengevaluasi keperluan keamanan anda adalah mempertimbangkan kelemahan dari keamanan yang tidak diberi wewenang untuk melihat data anda. Keamanan seringkali jaur lebih mudah untuk mengimplementasikan daripada menjaga. Membuat pasti bahwa keperluan proses dalam organisasi anda menjaga sistem anda saat ini. Keamanan seringkali disalahgunakan atau di-bypass oleh pemakai dari hari-ke-hari untuk kemudahan. Dengan kehilangan waktu data atau memutus keamanan yang telah ditemukan, banyak kerusakan telah dilakukan. Vendor-vendor Database dan Web server secara tetap meng-upgrade sistemnya. Untuk Informasi keamanan umum tersedia pada web, tempat terbaik untuk memulai pencarian anda adalah dengan National Computer Security Association (NCSA) at www.ncsa.com . SQL Injection SQL Injection merupakan cara lain untuk menembus/mengakses data dengan menggunakan teknik query sesuai dengan database yang digunakan. Namun demikian dari beberapa format database yang paling banyak ditembus dengan menggunakan SQL Injection adalah MSSQL. Pada dasarnya MSSQL juga tidak bisa di-inject begitu saja, hal tersebut bergantung ke pada beberapa hal yang terkait lainnya. MSSQL dapat di-inject sebagian besar karena Scripting bahasa pemrogramannya. Biasanya dengan ASP (Active Server Page) yang dikombinasikan dengan MSSQL. Jika programmernya kurang teliti dalam membuat suatu aplikasi maka Scripting language (Bahasa pemrograman) tersebut akan memberikan suatu message yang mudah ditebak oleh orang yang melakukan injection. Kelemahan tersebut biasanya karena ada mark (di MSSQL biasanya dengan tanda / tanda minus dua kali, dimana setelah tanta maka statemen SQL tidak akan di-execute) yang ada di dalam sintaks query database yang bersangkutan. Sehingga mark tersebut menjadi suatu cara untuk bisa menembus suatu database untuk mengambil informasi atau menggunakannya untuk keperluan lain, yaitu dengan cara menyisipkan ( insert) beberapa statemen SQL ke Query dengan memanipulasi data input ke aplikasi tersebut. Berikut ini diberikan contoh untuk SQL Statemen yang akan dilakukan injection: Diberikan SQL Statemen seperti berikut: select id, name, no_telp, short_time_price, long_time_price from bispak Dari Statemen SQL diatas akan menghasilkan menghasilkan 'id', 'name', 'no_telp', 'short_time_price' dan 'long_time_price' dari table 'bispak' Selanjutnya hasil dari 'result set' biasanya akan lebih lebih khusus lagi , sebagai berikut :

12

select id, name, no_telp, short_time_price from bispak where name = 'blablabla' and short_time_price < 100000 Perhatikan terhadap 'blablabla' tersebut , dimana where clausenya menggunakan quote (), inilah kunci dasar untuk melakukan injection Kalau di query diubah dengan where clausenya sebagai berikut name: blablabla'john maka query nya akan menjadi seperti berikut: select id, name, no_telp, short_time_price from bispak where name = ' blablabla'john' and short_time_price < 100000 Pada saat ASP di-browse ada pesaan error sebagai berikut (yang biasanya akan muncul): Server: Msg 170, Level 15, State 1, Line 1 Line 1: Incorrect syntax near 'john' SQL atau "Structured Query Language" seharusnya tidak menyentuh system calls. Tetapi tidak dengan MSSQL. Karakter tunggal () tersebut yang menyebabkan error dari delimiternya SQL, dan ASP akan memberikan pesan secara jelas dimana letak kesalahannya. Dan dengan pengetahuan query yang cukup baik (cara melakukan mark), maka akan dengan mudah bisa melakukan injectioan. Kalau query di atas digunakan dalam aplikasi, dan orang yang melakukan injection tahu table yang digunakan maka jika where clausennya diubah menjadi sebagai berikut : Name: blablabla';drop table bispak-maka aplikasi tersebut tentu saja akan error, karena semua isi dari tabel yang digunakan akan terhapus. Berikut ini akan dijelaskan cara melakukan mark terhadap aplikasi yang menggunakan sintaks query. Misalnya ada form yang masukannya meminta input login + password. Misalnya Nama field yang dipakai adalah 'login' dan 'pass'. Kemudian SQL nya di ASP adalah sebagai berikut: var sql = select * from users where username='"+login+"' and password='"+pass"'"; pada saat tampil di aplikasi Web maka biasanya akan ditampilkan dua hal tersebut yaitu LOGIN PASS : :

Selanjutnya input yang diberikan adalah sebagai berikut. LOGIN PASS : or 1=1-:apa saja

13

Maka hasil querynya adalah sebagai berikut Asalnya adalah sebagai berikut : var sql = select * from users where username='"+login+"' and password='"+pass"'"; SQL nya setelah di inject menjadi: select * from users where username='' or 1=1-- and password='apa saja' Statemen SQL setelah tanda -- tidak adakan diexecute (dijalankan). Sehingga SQL statemennya menjadi select (semua) dari users yang username nya '' (kosong) atau 1=1 (true), logika 'atau' ini yg bikin SQL nya menghasilkan nilai benar sehingga menjalankan select * (semuanya). Jika hal tersebut adalah login. ASP langsung bisa login, tanpa perlu input yang lainnya. Bagaimana caranya agar bisa mengetahui Nama Tabelnya dan struktur yang ada. Untuk meng-inject, attacker harus mengetahui struktur tablenya. Jadi attacker bisa menginject SQL dengan tepat. Seperti disebutkan di atas ASP dan IIS akan menampilkan message secara jelas bagian yang mengalami error, dan hal tersebut yang dimanfaatkan oleh attacker untuk menyisipkan SQL statemen sebagai injection-nya. Tehnik ini dikenal dengan 'debugging web application from its error code'. Untuk melakukan debug tersebut SQL Injection-nya adalah having 1 = 1 LOGIN :' having 1=1--

Sintaks Statemen SQL-nya akan menjadi sebagai berikut : select * from users where username = '' having 1=1-Error yang akan ditampilkan adalah sebagai berikut: Microsoft bla bla bla [Microsoft] [ODBC SQL Server Driver][SQL Server] Column 'users.id' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. /proces_login.asp, line 20 Having adalah suatu sintaks di MSSQL untuk menampilkan hasil query yang telah digroup (dikelompokkan). Biasanya adalah untuk menghitung suatu aggregasi berdasarkan suatu group (kelompok) field tertentu. Jadi query diatas kalau ada select dan ada having semua kolom harus di group karena record-record tidak mungkin sama. Sehingga SQL menganggap query tersebut ada kesalahan sehingga menampilkan message secara jelas yaitu error di bagian users.id, sehingga bisa dimengerti bahwa table yang digunakan adalah Users dan field yang ada dari table tersebut di antaranya adalah id. Bagaimana attacker dapat mengetahui semua kolom yang ada dalam tabel yang digunakan. Karena sudah tahu satu kolom/field yaitu id, maka sintaks selanjutnya adalah memberikan instruksi group by. Sehingga sintaks / input yang diberikan adalah dengan melakukan grouping field tersebut, yaitu menjadi : LOGIN :' group by users.id having 1=1--

error yang akan disampikan adalah Column 'users.username' is invalid blabla bla. Di sini akan disebutkan lagi field mana yang error, dimana messagenya ditampilkan secara jelas, yaitu ada

14

field username yang belum di-group. Begitu seterusnya, untuk setiap field yang ditampilkan dalam error ditambahkan dalam group by. Sampai tidak ada error message lagi yang ditampilkan, dimana berarti semua field/kolom sudah diketahui. Inilah yang menjadikan MSSQL mudah diinjeksi (disisipi) oleh attacker, karena ASP dan IISnya akan memberikan/menampilkan error message secara jelas. Sehingga kelemahan inilah yang dimanfaatkan untuk melakukan sintaks error, karena dari sintaks error tersebut akan diketahui berbagai informasi yang terkait dengan MSSQL. Untuk mengetahui jenis/type data dari setiap field/kolom, attacker biasanya menggunakan sintaks UNION, dimana sintaks ini dalam MSSQL berarti akan melakukan penggabun gan dari query yang satu dengan query yang lain dengan urutan field dan jenis/type data yang sama. Sehingga apabila Urutan field atau type datanya berbeda akan menampilkan errornya. Dan error inilah yang dimanfaatkan oleh attacker untuk melakukan injection. Berikut ini cara untuk melakukan UNION : LOGIN :' union select sum(username) from users--

Sehingga sintaks SQL akan menjadi : select * from users where username = '' union select sum(username) from users-Sintaks UNION ini bisa melakukan break select list dan menjadikan 'child' select list. Maksudnya adalah [ada select] UNION [select], Karena select sum(username) yang diberikan tersebut bisa menghasilkan error. Sintaks fungsi Sum()hanya untuk field dengan type data interger, money, dan seterusnya, selain varchar, char ata string, dimana type datanya bisa dihitung atau paling tidak mempunyai type data numeric. Sehingga dari sintaks SQL di atas, IIS+ASP akan memberikan kembali error message sebagai berikut: The sum or average aggregate operation cannot take a varchar data type as an argument Dari message di atas bisa ditebk bahwa type datanya adalah bukan integer tetapi type datanya adalah varchar. Kalau ternyata tidak ada pesan error yang diberikan berarti memang type datanya adalah integer atau seperti yang disebutkan di atas.

Untuk mengetahui isi dari tabel yang diquery bisa menggunakan beberapa cara, antara lain sebagai berikut: Sintaks SQL-nya diubah seperti berikut ini. LOGIN :' union select min(username),1,1,1 from users where username > 'a'-Intstruksi tersebut akan menghasilkan kembali pesan error, sebagai berikut: Error: Syntax error converting the varchar value 'admin' to a colum of data type init. Pesan tersebut kembali memberitahukan bahwa di tabel tersebut terdapat username dengan nilai 'admin', Selanjutnya bisa dilakukan iterate (looping) secara terus menerus. ' union select min(username),1,1,1 from users where username > 'admin'--

15

dan seterusnya. Selanjutnya untuk mengetahui passwordnya, cukup melakukan query biasa karena sudah diketahui usernamenya, sebagai berikut: ' union select password,1,1,1 from users where username='admin'-Maka akan didapatkan passwordnya. Atau karena sudah mengetahui struktur table yang digunakan, maka bisa membuat sendiri user dan passwordnya, yaitu dengan melakukan insert terhadap table tersebut (dengan data yang dibuat sendiri). ' insert into users values (0,'ABC','pwd',1)-dan seterusnya. Dengan demikian berarti database tersebut paling tidak sudah bisa dikendalikan oleh attacker. Karena attacker sudah bisa melakukan login dan masuk ke database melalui aplikasi web yang menggunakan sintaks query yang mudah untuk dilakukan injeksi (penyisipan SQL Statement).

16

Kesimpulan Dengan adanya beberapa penjelasan mengenai database security tersebut di atas, diharapkan dapat menjadi input/masukan yang berarti terutama kepada administrator jaringan ataupun administrator database untuk mengatur terhadap keamanan tersebut. Dimana perhatian utamanya terhadap para administrator tersebut terutama adalah Keamanan Server (Server Security), Koneksi Database (Database Connections), Kontrol Akses Tabel (Table Access Control) dan juga terhadap Pembatasan Akses Database (Restricting Database Access) dimana hal tersebut di atas sangat berpengaruh terhadap keamanan database yang akan dipublish terutama ke Internet/Intranet. Demikian juga dalam menentukan sistem keamanan dapat memilih sistem clinet/server yang telah disediakan oleh beberapa vendor dengan beberapa kelebihan dan kekurangannya, yang sekiranya dapat dipilih sesuai dengan kemampuan dan kepentingan terhadap organisasi atau perusahaan. Selain itu juga perlu diperhatikan Script language dalam pembuatan aplikasi. Karena dimungkinkan bahwa dengan script language yang tradisional (masih menggunakan query biasa) tersebut akan dapat dibaca oleh para attacker, maka script language dalam bahasa SQL tersebut dapat ditembus dengan SQL Injection untuk melihat database yang dipublish ke Internet maupun Intranet.

17

Daftar Pustaka

http://documents.iss.net/whitepapers/securedbs.pdf -- Securing Database Server http://searchoracle.techtarget.com/whitepaperPage/0,293857,sid41_gci910905,00.html -Oracle Database Security http://web.mit.edu/kerberos/www/#what_is -- Kerberos http://www.bosen.net/releases/?id=35-- SQL Injection http://www.governmentsecurity.org/articles/DatabaseSecurityCommonsensePrinciples.php- Database Security (Common-sense Principles), Blake Wiedman http://www.governmentsecurity.org/articles/DatabaseSecurityPart1.php Security, By Dan Rahmel -Database

http://www.governmentsecurity.org/articles/SQLInjectionModesofAttackDefenceandW hyItMatters.php -- SQL Injection: Modes of Attack, Defence, and Why It Matters, By Stuart McDonald

18

You might also like