Bahasa Pemrograman Populer menurut survey Stackoverflow tahun 2019 [tautan]

Bahasa Pemrograman Populer menurut survey Stackoverflow tahun 2019 [tautan]
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
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/
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:
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.
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.
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.
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:
Deployment aplikasi:
Solusi menghindari reverse engineering adalah sebagai berikut:
The main obfuscation categories are as follows:
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
Pada artikel ini dibahas secara ringkas mengendai keamanan pada basis data (database).
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.
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 adalah risiko keamanan dari salah satu dari tiga sumber berikut, yang masing-masing memiliki sarana khusus untuk masuk ke database:
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 meliputi:
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.
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 :
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.
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.
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 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:
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.
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.
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.
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.
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.
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.
Berikut adalah beberapa praktik terbaik yang dapat Anda gunakan untuk meningkatkan keamanan database sensitif.
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:
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.
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.
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.
Berikut ini daftar tajuk terkait keamanan pada sistem database
Secara umum, enkripsi data pada database dapat dilakukan dengan 2 cara berikut ini:
2 hal yang perlu dilakukan penyerang:
SSH secara umum bermanfaat untuk:
Fitur Encrypted Tunnel disebut juga sebagai port forwarding.
Ilustrasi SSH Tunnel
SSH Tunnel
Contoh perintah SSH Tunnel
ssh –L 10000:localhost:3306 192.168.3.33 –l mylogin –i ~/.ssh/ id –N –g
Implementasi enkripsi data-at-rest
Keuntungan:
Kelemahan
Hal-hal penting pada enkripsi data-at-rest
Paper: “Domain Generalization: A Survey” https://arxiv.org/abs/2103.02503
Dataset yang dipakai untuk Generalization papers:
Teknik untuk generalization
Salah satu masalah di Ubuntu adalah fitur jurnal membuat storage cepat penuh.
Solusi:
Cek penggunaan space untuk journal:
journalctl --disk-usage
Hapus jurnal yang lebih dari sekian hari
sudo journalctl --vacuum-time=2days
Hapus jurnal sampai storage yang terpakai di bawah batas tertentu
sudo journalctl --vacuum-size=100M
Prinsip migrasi Thingsboard ke server lain:
Sumber: https://groups.google.com/g/thingsboard/c/P7TcOnVIRqg
On the first computer, backup the database using postgres dump tool:
pg_dump thingsboard --host=localhost --username postgres -W > thingsboard.dump
Then, backup the /etc/thingsboard/conf directory:
sudo tar cvfz tb.tar.gz /etc/thingsboard/conf/*
Copy thingsboard.dump and tb.tar.gz to the new computer. On the new computer, with a fresh install of Thingsboard as per the posted instructions:
Stop Thingsboard, then:
sudo su postgres
dropdb thingsboard # this removes the database
createdb -T template0 thingsboard
psql thingsboard -U postgres -W < thingsboard.dump
Copy the /etc config files:
cd /
sudo tar xvfz /home/ubuntu/tb.tar.gz
Start Thingsboard.