Download - Database Security
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
2
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.
3
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 rata-
ratanya.
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
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:\> 6
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.
7
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 8
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 point-
to-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). 9
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 key-
publik. 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 ciri-
ciri 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 10
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. 11
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. 12
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 : 13
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 :‘ or 1=1--
PASS :apa saja 14
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 meng-
inject 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 15
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 IIS-
nya 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 penggabungan
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'--
16
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).
17
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.