Belajar Penglihatan Komputer dari Prinsip Dasar

fdafda

Belajar dari prinsip dasar

Video di kanal youtube: :https://www.youtube.com/channel/UCf0WB91t8Ky6AuYcQV0CcLw/playlists

Daftar Slide: https://fpcv.cs.columbia.edu/Monographs

Daftar Slide

  • “Introduction to Computer Vision,” Shree K. Nayar,
    Monograph FPCV-0-1, First Principles of Computer Vision,
    Columbia University, New York, Feb. 2022
    [PDF] [bib] [©]
  • “Image Formation,”Shree K. Nayar,Monograph FPCV-1-1, First Principles of Computer Vision,Columbia University, New York, Feb. 2022[PDF] [bib] [©]
  • “Image Sensing,” Shree K. Nayar,Monograph FPCV-1-2, First Principles of Computer Vision,Columbia University, New York, Feb. 2022[PDF] [bib] [©]
  • “Binary Images,” Shree K. Nayar, Monograph FPCV-1-3, First Principles of Computer Vision,Columbia University, New York, Mar. 2022 [PDF] [bib] [©]
  • “Image Processing I,”
    Shree K. Nayar,
    Monograph FPCV-1-4, First Principles of Computer Vision,
    Columbia University, New York, Mar. 2022
    [PDF] [bib] [©]
  • “Image Processing II,”
    Shree K. Nayar,
    Monograph FPCV-1-5, First Principles of Computer Vision,
    Columbia University, New York, Mar. 2022
    [PDF] [bib] [©]
  • “Edge Detection,”
    Shree K. Nayar,
    Monograph FPCV-2-1, First Principles of Computer Vision,
    Columbia University, New York, May. 2022
    [PDF] [bib] [©]
  • “Boundary Detection,”
    Shree K. Nayar,
    Monograph FPCV-2-2, First Principles of Computer Vision,
    Columbia University, New York, Jun. 2022
    [PDF] [bib] [©]
  • “SIFT Detector,”
    Shree K. Nayar,
    Monograph FPCV-2-3, First Principles of Computer Vision,
    Columbia University, New York, Aug. 2022
    [PDF] [bib] [©]

 

Tips pemakaian Wireshark

Ethernet frame mengandung CRC di bagian belakangnya. Di kebanyakan NIC (Network Interface Card), CRC dari ethernet ini tidak dikirim ke software aplikasi. Jika terjadi kesalahan pada CRC, maka frame tersebut dianggap rusak, jadi tidak dikirim sama sekali.

CRC di ethernet frame tidak muncul di wireshark, karena sudah dipotong di NIC
Referensi: https://osqa-ask.wireshark.org/questions/20862/how-to-display-the-packets-crc-in-the-gui-and-how-to-edit-crc-with-bad-value/

Paket IPv4 outgoing biasanya berisi checksum header 0000. Checksum ini akan diisi oleh hardware di layer fisik. Tujuannya untuk mengurangi beban komputasi di CPU. Checksum 0000 ini dianggap kesalahan oleh WireShark. Untuk tidak menampilkan pesan kesalahan, kita dapat disable pengecekan checksum IPv4. Default setting wireshark adalah tidak mengecek checksum di header IPv4.

Prosedur mengaktifkan/menonaktifkan header checksump IPv4 dapat dilihat di artikel https://packetlife.net/blog/2008/aug/23/disabling-checksum-validation-wireshark/

Keamanan Aplikasi Database

Sistem basis data perlu tersambung dengan aplikasi yang menggunakan data di basis data tersebut. Aplikasi ini dapat menjadi sebagai jalur serangan ke suatu basis data.

Berikut ini mekanisme serangan melalui aplikasi:

  • Username:password untuk akses database tersimpan sebagai cleartext di aplikasi, atau di file konfigurasi aplikasi.
  • Jika file aplikasi atau file konfigurasi tersebut dapat diakses, maka penyerang dapat mengakses database sesuai dengan hak akses username yang bocor.
  • File konfigurasi umumnya menggunakan format yang mudah dibaca, seperti TXT, JSON, CSV , YAML dan sebagainya. Jika file ini dapat terbaca oleh penyerang, maka database dapat langsung diakses.
  • Konfigurasi yang ada di file aplikasi lebih sulit dibaca, namun tetap dapat dilakukan dengan reverse engineering

Hubungan Aplikasi dengan server basis data

Berikut ini ilustrasi hubungan antara server aplikasi dengan server basis data.

Server aplikasi dan server server database dapat berada di server terpisah maupun di server yang sama.

Komponen Aplikasi berbasis web

Berikut ini komponen-komponen pada aplikasi berbasis teknologi web

Database berfungsi menyimpan data yang sifatnya non-volatile atau persisten.

Aplikasi berfungsi mengakses dan memanimulasi data di database. Contoh aplikasi ini dibuat dengan bahasa PHP, Java, Python dan sebagainya. Biasanya ada library khusus di masing-masing bahasa pemrograman itu sebagai konektor ke database.

Web Server berfungsi menampilkan data dari aplikasi sesuai dengan format HTML. Contoh web server ini misalnya Apache web server.

Web Client berfungsi menampilkan data dari web server ke pengguna. Contoh web browser ini misalnya Firefox, Chrome, Safari, dan sebagainya.

Password Database dari Command Line

Berikut ini contoh kebocoran username & password karena mengakses database dari command line.

Perintah login mysql:

mysql -uusername –ppassword

Perintah itu akan kelihatan pada process list Linux dengan perintah ps –aux:

waskita@downloader:~ % ps aux | grep mysql

waskita 39543   0.0  0.1  32296  4588  0  I+    1:52PM      0:00.01 mysql -uroot -ppassword

waskita 39554   0.0  0.0  18804  1872  1  S+    1:53PM      0:00.00 grep mysql

Hal ini menjadi masalah kalau server yang dipakai adalah server dengan banyak user. Solusinya adalah  tidak mengetik password dari command line, tapi diketik ketika diminta oleh aplikasi mysql client.

Reverse Engineering Aplikasi

Aplikasi dapat berisi username dan password untuk mengakses database. Jika kode aplikasi ini bocor, maka akses ke database menjadi terbuka.

Reverse Engineer application software dapat dilakukan dengan berbagai cara:

  • binary aplikasi umumnya dapat diakses
  • kadang-kadang source code juga dapat diakses, misal aplikasi open source, atau kalau source code juga berhasil dibobol oleh penyerang.
  • vulnerability dapat dipelajari dari binary ataupun source code

Deployment aplikasi:

  • binary (C/C++)
  • bytecode (Java, .NET)
  • source (PHP, Python, Javascript)

Solusi menghindari reverse engineering adalah sebagai berikut:

  • Deployment compiled binary code. Kode yang dijalankan di server produksi adalah hasil kompilasi, bukan source code ataupun interpreted.
  • Obfuscated binary. Kode yang sudah dicompile dapat diacak sehingga secara fungsional sama, namun sangat sulit untuk direverse engineering.
  • Obfuscated source. Pada bahasa interpreted, tidak ada opsi kompilasi, sehingga software harus dijalankan dalam bentuk source code. Untuk menyulitkan penyerang, dapat dilakukan pengacakan source code supaya sulit dilacak cara kerjanya. Biasanya dengan cara mengganti nama-nama variabel dan mengubah struktur software secara umum.

Application Obfuscation

The main obfuscation categories are as follows:

  • Layout obfuscation, including identifier scrambling, removing of comments, and method locations
  • Data obfuscation, affecting the data structures and data encoding
  • Control obfuscation, including reordering techniques, adding irrelevant statements as “camouflage,” and more
  • Adding code that tries to “break” decompilers. For example, for many years the most commonly used decompiler for Java was a freeware program called Mocha. An obfuscator appropriately called HoseMocha appends extra instructions after the return instruction, which does not affect the execution of the program but causes Mocha to crash.

Monitor Login

  • Akses database dicatat dalam logfile , termasuk login
  • Dapat mengetahui siapa saja yang mengakses database
  • Perubahan akses (user baru, aplikasi baru, alamat baru). Serangan dapat nampak sebagai pola akses baru.

Data Obfuscation

  • Data obfuscation, affecting the data structures and data encoding. For example, a two-dimensional array may be converted into a onedimensional array and spread around. An iteration of the form:
  • int i=1;
  • while (i < 100) {
  • .. arr[i] ..
  • i++
  • }

SQL INJECTION MYTHS AND FALLACIES

  • http://bobby-tables.com/
  • http://www.slideshare.net/billkarwin/sql-injection-myths-and-fallacies

WHAT IS SQL INJECTION?

Contoh

http://example.com/show.php?bugid=1234

Hasil query SQL ke database

SELECT * FROM Bugs

WHERE bug_id = $_GET[‘bugid’]

user input

Contoh URL:
http://example.com/show.php?bugid=1234 OR TRUE

Hasil Query SQL:

SELECT * FROM Bugs

WHERE bug_id = 1234 OR TRUE

WORSE SQL INJECTION (1)

URL

http://example.com/changepass.php?acctid=1234 &pass=xyzzy

Hasil query SQL ke database

UPDATE Accounts

SET password = SHA2(‘$password’)

WHERE account_id = $account_id

URL:

http://example.com/changepass.php?acctid=1234 OR TRUE &pass=xyzzy’), admin=(‘1

Hasil query SQL:

UPDATE Accounts

SET password = SHA2(‘xyzzy’), admin=(‘1’)

WHERE account_id = 1234 OR TRUE

Catatan

•admin=(‘1’) -> mengubah akun administrator

•OR TRUE -> mengubah password semua akun

https://xkcd.com/327/Exploits of a Mom

Keamanan Basis Data

Pada artikel ini dibahas secara ringkas mengendai keamanan pada basis data (database).

Apa yang dimaksud dengan Keamanan Basis Data?

Keamanan basis data adalah berbagai tindakan yang digunakan untuk mengamankan DBMS (Database Management System) dari serangan siber yang berbahaya dan penggunaan yang tidak sah oleh pihak lain.

Program-program pengamanan basis data dirancang untuk melindungi data di dalam basis data, sistem aplikasi manajemen basis data itu sendiri, dan setiap aplikasi yang mengaksesnya, dari penyalahgunaan, perusakan, dan penyusupan.

Contoh aplikasi manajemen basis data adalah Oracle, MySQL, MSQL , PostgreSQL dan sebagainya.

Contoh aplikasi yang mengakses basis data adalah Apache web server.

Keamanan basis data mencakup alat, proses, dan metodologi untuk mewujudkan keamanan di dalam lingkungan basis data.

Logo MySQL

Ancaman Terhadap Keamanan Basis Data

Banyak kerentanan perangkat lunak, kesalahan konfigurasi, atau pola penyalahgunaan atau kecerobohan dapat mengakibatkan pelanggaran. Berikut adalah sejumlah penyebab dan jenis ancaman cyber keamanan database yang paling dikenal.

  • Ancaman orang dalam
  • Kesalahan manusia
  • Eksploitasi kerentangan perangkat lunak basis data

Ancaman Orang Dalam

Ancaman orang dalam adalah risiko keamanan dari salah satu dari tiga sumber berikut, yang masing-masing memiliki sarana khusus untuk masuk ke database:

  • Orang dalam yang jahat dengan niat buruk
  • Orang dalam lalai yang tidak sengaja mengekspos database sehingga rentan untuk diserang orang luar
  • Orang luar yang memperoleh kredensial melalui rekayasa sosial (social engineering) atau metode lain, atau memperoleh akses ke kredensial pada basis data

Ancaman dari orang dalam adalah salah satu penyebab paling umum dari pembobolan keamanan basis data. Hal ini sering terjadi karena banyak anggota organisasi yang mendapatkan akses istimewa ke basis data. Permasalahan ini dapat dihindari jika setiap orang di organisasi hanya mendapatkan hak akses secukupnya.

Kesalahan Manusia

Kesalahan manusia meliputi:

  • Kata sandi yang lemah sehingga mudah ditebak
  • berbagi kata sandi antara sesama pengguna
  • penghapusan atau kerusakan data yang tidak disengaja oleh user ataupun administrator
  • macam-macam perilaku lain dari pengguna yang tidak diinginkan

Eksploitasi Kerentanan Perangkat Lunak Basis Data

Hampir semua perangkat lunak memiliki kerentanan (vulnerability). Penyerang (attackers) selalu berusaha untuk menemukan dan menargetkan kerentanan dalam perangkat lunak. Perangkat lunak manajemen basis data adalah target yang sangat bernilai bagi penyerang. Kerentanan baru pada perangkat lunak ditemukan setiap hari, dan semua platform manajemen database open source dan vendor perangkat lunak database komersial mengeluarkan patch keamanan secara teratur.

Patch keamanan dari vendor perlu diterapkan secepatnya. Jika patch ini tidak segera diterapkan, aplikasi basis data rentan terhadap serangan.

Kadang-kadang ada kerentanan yang belum ditemukan ataupun belum sempat dibuat patchnya. Kerentanan ini memungkinkan adanya serangan zero-day yaitu serangan sebelum ada patch yang tersedia.

Serangan Injeksi SQL/NoSQL

Salah satu ancaman khusus  pada sistem basis data melibatkan penggunaan string serangan non-SQL dan SQL ke dalam kueri basis data. Biasanya, ini adalah kueri yang dibuat untuk melayani formulir aplikasi web, atau permintaan layanan yang diterima melalui permintaan HTTP/HTTPS.

Setiap sistem basis data rentan terhadap serangan injeksi SQL/NoSQL, jika :

  • pengembang aplikasi tidak mematuhi praktik pengkodean yang aman, dan
  • organisasi tidak melakukan pengujian kerentanan secara teratur.

Serangan Buffer Overflow

Buffer overflow terjadi ketika suatu proses mencoba untuk menulis sejumlah besar data ke blok memori dengan ukuran terbatas. Kelebihan data yang ditulis tersebut dapat mengganggu sistem dan juga dapat membocorkan data.  

Serangan Denial of Service (DoS/DDoS)

Dalam serangan penolakan layanan (Denial of Service / DoS), penjahat dunia maya menguasai layanan target—dalam hal ini server database—menggunakan sejumlah besar permintaan palsu. Permintaan palsu yang sangat banyak ini membebani server melebihi kapasitasnya. Akibatnya, server tidak dapat melayani permintaan dari pengguna sesungguhnya.

Dalam serangan penolakan layanan terdistribusi (Distributed Denial of Service/DDoS), permintaan layanan palsu dihasilkan oleh sejumlah besar komputer dalam bentuk jaringan botnet yang dikendalikan oleh penyerang. Serangan DDoS ini menghasilkan volume permintaan layanan yang sangat besar, yang sulit dihentikan oleh pertahanan biasa. Perlindungan terhadap DDoS memerlukan arsitektur pertahanan yang dapat diperbesar kapasitasnya (scalable).

Contoh layanan perlindungan DDoS berbasis cloud adalah Cloudflare.

Perangkat lunak perusak

Malware adalah perangkat lunak yang dibuat untuk masuk dengan memanfaatkan kerentanan pada sistem ataupun untuk merusak database. Malware dapat masuk melalui perangkat endpoint apa pun yang terhubung ke jaringan database. Perlindungan malware penting pada endpoint  mana pun, tetapi terutama pada server basis data, karena nilai dan sensitivitasnya yang tinggi.

Contoh perangkat endpoint: komputer desktop,  smartphone, tablet, laptop, perangkat IoT (Internet of Things)

Contoh perangkat yang tidak termasuk endpoint: router, switch, network gateway, firewall, load balancer [sumber]

Lingkungan TI yang Berkembang

Lingkungan TI yang berkembang dengan cepat membuat database lebih rentan terhadap ancaman. Berikut adalah tren yang dapat menyebabkan jenis serangan baru pada database, atau mungkin memerlukan tindakan defensif baru:

  • Volume data yang terus bertambah—penyimpanan, pengambilan data, dan pemrosesan tumbuh secara eksponensial di hampir semua organisasi. Setiap praktik atau alat keamanan data harus sangat skalabel untuk memenuhi persyaratan yang jauh dan yang akan datang.
  • Infrastruktur terdistribusi—lingkungan jaringan semakin kompleks, terutama karena organisasi memindahkan beban kerja sistem informasi ke arsitektur hybrid cloud atau multi-cloud yang tersebar. Hal ini membuat penerapan, manajemen, dan pilihan solusi keamanan menjadi lebih sulit.
  • Persyaratan peraturan yang semakin ketat—lanskap kepatuhan peraturan di seluruh dunia semakin kompleks, sehingga mengikuti semua mandat menjadi lebih menantang.
  • Kekurangan tenaga terampil di bidang keamanan siber—ada kekurangan global profesional keamanan siber yang terampil, dan organisasi merasa kesulitan untuk mengisi peran keamanan.  Hal ini dapat membuat lebih sulit untuk mempertahankan infrastruktur penting, termasuk database.

Bagaimana Cara Mengamankan Server Database?

Server database adalah mesin fisik atau virtual yang menjalankan aplikasi database. Mengamankan server database, juga dikenal sebagai “pengerasan” (hardening), adalah proses yang mencakup keamanan fisik, keamanan jaringan, dan konfigurasi sistem operasi yang aman.

Memastikan Keamanan Basis Data Fisik

Hindari pemakaian server yang sama untuk aplikasi web dan aplikasi database, jika database Anda berisi data sensitif.

Hosting server di penyedia hosting berarti menjadikan tanggung  jawab keamanan server anda di tangan orang lain. Solusi hosting di pihak ketiga dapat lebih murah dibandingkan mengurus server sendiri, namun ada resiko keamanan.

Jika Anda mengandalkan layanan hosting web untuk mengelola basis data Anda, Anda harus memastikan bahwa itu adalah perusahaan dengan rekam jejak keamanan yang kuat. Lebih baik kalau hosting memiliki sertifikasi keamanan misalnya ISO-27001.

Jika Anda mengelola database di pusat data lokal, perlu diingat bahwa pusat data Anda juga rentan terhadap serangan dari pihak luar atau ancaman orang dalam. Pastikan Anda memiliki langkah-langkah keamanan fisik, termasuk kunci, kamera, dan personel keamanan di fasilitas fisik Anda. Setiap akses ke server fisik harus dicatat dan hanya diberikan kepada individu yang berwenang.

Selain itu, jangan tinggalkan cadangan database di lokasi yang dapat diakses publik, seperti partisi sementara, folder web, atau keranjang penyimpanan cloud yang tidak aman.

Kunci Akun dan Hak Istimewa

Mari kita pertimbangkan server database Oracle. Setelah database diinstal, asisten konfigurasi database Oracle (DBCA) secara otomatis kedaluwarsa dan mengunci sebagian besar akun pengguna database default.

Jika Anda menginstal database Oracle secara manual, ini tidak akan terjadi dan akun istimewa default tidak akan kedaluwarsa atau dikunci. Kata sandi mereka tetap sama dengan nama pengguna mereka, secara default. Penyerang akan mencoba menggunakan kredensial ini terlebih dahulu untuk terhubung ke database.

Sangat penting untuk memastikan bahwa setiap akun istimewa di server database dikonfigurasi dengan kata sandi yang kuat dan unik. Jika akun tidak diperlukan, akun tersebut harus kedaluwarsa dan dikunci.

Untuk akun yang tersisa, akses harus dibatasi hingga minimum mutlak yang diperlukan. Setiap akun hanya boleh memiliki akses ke tabel dan operasi (misalnya, SELECT atau INSERT) yang diperlukan oleh pengguna. Hindari membuat akun pengguna dengan akses ke setiap tabel dalam database.

Menambal server Database secara teratur

Pastikan bahwa tambalan tetap terkini. Manajemen tambalan basis data yang efektif adalah praktik keamanan yang penting karena penyerang secara aktif mencari kelemahan keamanan baru dalam basis data, dan virus serta malware baru muncul setiap hari.

Penyebaran tepat waktu versi terbaru dari paket layanan database, hotfix keamanan kritis, dan pembaruan kumulatif akan meningkatkan stabilitas kinerja database.

Nonaktifkan Akses Jaringan Publik

Organisasi menyimpan aplikasi mereka dalam database. Dalam sebagian besar skenario dunia nyata, pengguna akhir tidak memerlukan akses langsung ke database. Jadi, Anda harus memblokir semua akses jaringan publik ke server database kecuali Anda adalah penyedia hosting. Idealnya, organisasi harus menyiapkan server gateway (terowongan VPN atau SSH) untuk administrator jarak jauh.

Enkripsi Semua File dan Cadangan

Terlepas dari seberapa kuat pertahanan Anda, selalu ada kemungkinan peretas dapat menyusup ke sistem Anda. Namun, penyerang bukanlah satu-satunya ancaman terhadap keamanan database Anda. Karyawan Anda juga dapat menimbulkan risiko bagi bisnis Anda. Selalu ada kemungkinan bahwa orang dalam yang jahat atau ceroboh akan mendapatkan akses ke file yang mereka tidak memiliki izin untuk mengaksesnya.

Mengenkripsi data Anda membuatnya tidak dapat dibaca oleh penyerang dan karyawan. Tanpa kunci enkripsi, mereka tidak dapat mengaksesnya, ini memberikan garis pertahanan terakhir terhadap gangguan yang tidak diinginkan. Enkripsi semua file aplikasi, file data, dan cadangan yang sangat penting sehingga pengguna yang tidak berwenang tidak dapat membaca data penting Anda.

Praktik Terbaik Keamanan Basis Data

Berikut adalah beberapa praktik terbaik yang dapat Anda gunakan untuk meningkatkan keamanan database sensitif.

Kelola Kata Sandi dan Akses Pengguna secara Aktif

Jika Anda memiliki organisasi besar, Anda harus memikirkan untuk mengotomatisasi manajemen akses melalui manajemen kata sandi atau perangkat lunak manajemen akses. Ini akan memberi pengguna yang diizinkan dengan kata sandi jangka pendek dengan hak yang mereka butuhkan setiap kali mereka perlu mendapatkan akses ke database.

Itu juga melacak aktivitas yang diselesaikan selama jangka waktu itu dan menghentikan administrator dari berbagi kata sandi. Meskipun administrator mungkin merasa bahwa berbagi kata sandi itu nyaman, namun, hal itu membuat akuntabilitas dan keamanan basis data yang efektif hampir tidak mungkin.

Selain itu, langkah-langkah keamanan berikut direkomendasikan:

  • Kata sandi yang kuat harus ditegakkan
  • Kata sandi disimpan dalam bentuk hash, bukan cleartext. Hash juga mesti disertai dengan ‘salt’ untuk mencegah ‘rainbow attack‘.
  • Jika ada beberapa kali percobaan masuk yang gagal, maka akun harus dikunci sementara. Hal ini untuk mencegah serangan ‘brute force‘ untuk menebak kata sandi.
  • Akun harus ditinjau dan dinonaktifkan secara berkala jika ada staf di organisasi yang pindah ke bagian lain, berhenti dari perusahaan atau sudah tidak memerlukan lagi hak akses tertentu.

Uji Keamanan Basis Data Anda

Setelah Anda menempatkan infrastruktur keamanan database Anda, Anda harus mengujinya terhadap ancaman nyata. Mengaudit atau melakukan tes penetrasi terhadap database Anda sendiri akan membantu Anda masuk ke pola pikir penjahat dunia maya dan mengisolasi setiap kerentanan yang mungkin Anda abaikan.

Untuk memastikan pengujian komprehensif, libatkan peretas etis atau layanan pengujian penetrasi yang diakui dalam pengujian keamanan Anda. Penguji penetrasi memberikan laporan ekstensif yang mencantumkan kerentanan basis data, dan penting untuk segera menyelidiki dan memulihkan kerentanan ini. Jalankan uji penetrasi pada sistem database penting setidaknya sekali per tahun.

Gunakan Pemantauan Basis Data Secara Waktu Nyata (Real Time)

Percobaan serangan basis data biasanya meninggalkan jejak pada catatan (log) di sistem basis data. Jika catatan serangan dipindai terus menurs, maka keamanan pada basis data akan meningkat. Peringatan dari pemindaian tersebut memungkinkan reaksi cepat terhadap adanya serangan terhadap basis data.

Secara khusus, File Integrity Monitoring (FIM) dapat membantu Anda mencatat semua tindakan yang dilakukan di server database dan untuk memperingatkan Anda tentang potensi pelanggaran. Saat FIM mendeteksi perubahan pada file basis data penting, pastikan tim keamanan diberi tahu dan dapat menyelidiki serta merespons ancaman tersebut.

Gunakan Aplikasi Web dan Firewall Database

Firewall sangat penting untuk server basis data dari ancaman keamanan. Umumnya akses ke server basis data hanya diperlukan dari/ke server lain secara internal. Server di luar jaringan organisasi umumnya tidak perlu mengakses basis data secara langsung.

Secara default, firewall tidak mengizinkan akses dari luar sistem ke basis data di dalam organisasi. Firewall juga mencegah aplikasi basis data untuk membuat akses keluar jaringan komputer organisasi kecuali ada alasan kuat untuk melakukannya.

Akses dari luar ke basis data membahayakan karena memungkinkan serangan terutama jika ada zero day exploit atau kesalahan konfigurasi internal.

Akses dari basis data ke luar jaringan juga membahayakan karena memberitahu orang luar bahwa ada aplikasi basis data versi tertentu di dalam jaringan. Akse ke luar juga dapat dimanfaatkan untuk mengeluarkan data yang berhasil dicuri (exfiltration).

Selain menjaga database dengan firewall, Anda harus menerapkan Web Application Firewall (WAF). Ini karena serangan yang ditujukan pada aplikasi web, termasuk injeksi SQL, dapat digunakan untuk mendapatkan akses ilegal ke database Anda.

Firewall database tidak akan menghentikan sebagian besar serangan aplikasi web, karena firewall tradisional beroperasi pada lapisan jaringan, sedangkan lapisan aplikasi web beroperasi pada lapisan aplikasi (lapisan 7 model OSI). WAF beroperasi pada lapisan 7 dan mampu mendeteksi lalu lintas aplikasi web berbahaya, seperti serangan injeksi SQL, dan memblokirnya sebelum dapat membahayakan database Anda.

Referensi

 

Enkripsi Database

Secara umum, enkripsi data pada database dapat dilakukan dengan 2 cara berikut ini:

  • Data in Transit (data yang dikirim lewat jaringan komputer) -> contoh aplikasi web server dengan database di server lain
  • Data at Rest (data yang disimpan di hard disk)

Data in Transit

2 hal yang perlu dilakukan penyerang:

  • Menyadap komunikasi
  • Memahami komunikasi untuk ekstraksi data

Mekanisme Enkripsi

  • Database-specific features (e.g., Oracle Advanced Security)
  • Connection-based methods (e.g., using the Secure Sockets Layer [SSL])
  • Secure tunnels (e.g., using Secure Shell [SSH] tunnels)
  • Relying on the operating system (e.g., IPSec encryption)

SSL

  • Beberapa software database sudah ada fitur SSL
  • SSL mesti diaktifkan di server & client
  • SSL memerlukan komputasi, sehingga dapat memperlambat proses
  • SSL pada MySQL:https://dev.mysql.com/doc/refman/5.0/en/ssl-connections.html

SSH Tunnels

SSH secara umum bermanfaat untuk:

  • Secure shell sebagai secure console. Misal untuk login ke server Ubuntu
  • Secure copy (SCP, SFTP). Misal dengan software Filezilla
  • Encrypted Tunnel -> dapat dipakai untuk ditumpangi komunikasi database

Fitur Encrypted Tunnel disebut juga sebagai port forwarding.

Ilustrasi SSH Tunnel

Mekanisme SSH tunnel
Mekanisme SSH tunnel

SSH Tunnel

Contoh perintah SSH Tunnel

ssh –L 10000:localhost:3306 192.168.3.33 –l mylogin –i ~/.ssh/ id –N –g

  • -L : port forwarding
  • 1000:localhost:3306 port lokal 1000, dikirim ke port 3306 di remote
  • 192.168.3.33 : alamat server database
  • -l mylogin: nama user

 

Data at Rest

  • Data yang disimpan di database dienkripsi terlebih dahulu
  • Algoritma simetrik / asimetrik
  • Metode ini sebagai layer keamanan tambahan, bukan yang utama

Skenario Keamanan Data at Rest

  • User mengakses data yang tidak semestinya. Dengan enkripsi maka meskipun punya hak akses tidak dapat membaca datanya.
  • Hard disk yang dicuri
  • Hard disk  bekas yang dijual

Remembrance of Data Passed: A Study of Disk Sanitization Practices

  • Peneliti: SIMSON L. GARFINKEL & ABHI SHELAT (MIT)
  • The students analyzed 158 disk drives that were purchased through eBay and other sources of used computer hardware (costing a total of less than $1,000).
  • 74% of the drives contained data that could be recovered and read, including sensitive data such as detailed personal and corporate financial records, credit card numbers, medical records, love letters, and so on.

Implementasi enkripsi data-at-rest

  • Enkripsi pada aplikasi
  • Enkripsi pada filesystem
  • Enkripsi pada database
  • Enkripsi pada HDD (storage)

Implementasi data-at-rest Enkripsi pada aplikasi

Keuntungan:

  • Transparan bagi database. Database tidak tahu menahu tentang adanya enkripsi.

Kelemahan

  • Enkripsi/dekripsi mesti dibuat di beberapa tempat dengan beberapa library.
  • Data tidak dapat diakses tanpa aplikasi
  • Tidak menyederhanakan masalah, hanya memindahkan enkripsi ke aplikasi.

Implementasi data-at-rest Enkripsi pada file system

  • Menggunakan filesystem yang mendukung enkripsi

Implementasi data-at-rest Enkripsi pada database

  • Menggunakan fitur enkripsi pada database (jika databasenya mendukung).

Hal-hal penting pada enkripsi data-at-rest

  • Key Management
  • Recovery (jika kunci hilang)
  • Integrasi dengan Public Key Infrastructure
  • Backup & Restore
  • Clustering (database tersebar pada beberapa komputer berbeda untuk performance)
  • Replication
  • Performance
  • Disk space (enkripsi menambah ukuran data)
  • Audit trail (penggunaan key & password)

Contoh praktek Enkripsi Data in Transit

  • Menyadap komunikasi database (Apache <-> MySQL) dengan tcpdump / wireshark
  • Implementasi security data-in-transit dengan fitur internal MySQL
  • Implementasi security data-in-transit dengan SSH Tunnel
  • Pengukuran performance (CPU load) pada setiap implementasi.

Contoh praktek Aplikasi

  • Membuat aplikasi database sederhana (misal menampilkan daftar peserta kuliah, daftar anggota MPR, dsb)
  • Mencoba mencari data dari data file MySQL
  • Implementasi security data-at-rest dengan aplikasi
  • Mencoba mencari data dari data file MySQL (versi terenkripsi)
  • Pengukuran performance (CPU load) pada setiap implementasi.

Homomorphic Encryption

Referensi