Keamanan data adalah salah satu aspek terpenting dalam mengelola database. Tergantung pada struktur organisasi, jika Anda mengelola database produksi, Anda harus memantau akses dan penggunaan yang tidak sah. Ini juga berlaku untuk host yang mendasarinya. Di blog ini kita akan menjelaskan keamanan dalam database open source.
Keamanan Umum
Setelah menginstal perangkat lunak database, kita perlu melakukan beberapa pemeriksaan awal untuk menghindari kesalahan keamanan yang paling umum.
Pedoman umum adalah sebagai berikut:
-
Jangan pernah memberikan akses root/admin kepada orang lain! Ini penting.
-
Pelajari cara kerja sistem hak akses database. Jangan memberikan hak istimewa lebih dari yang diperlukan. Jangan pernah memberikan hak istimewa kepada semua host.
-
Jangan simpan password cleartext di database Anda. Alih-alih menggunakan SHA2() atau fungsi hashing satu arah lainnya dan simpan nilai hashnya.
-
Jangan gunakan port default dan pastikan port yang dipilih tidak dapat diakses dari host yang tidak tepercaya.
-
Letakkan database open source di belakang firewall. Ini melindungi Anda dari setidaknya 50% dari semua jenis eksploitasi di perangkat lunak apa pun.
Kontrol Akses dan Manajemen Akun
Salah satu fungsi utama database adalah untuk mengotentikasi pengguna yang terhubung dari host tertentu dan mengaitkan pengguna tersebut dengan hak istimewa pada database. Untuk mengontrol pengguna mana yang dapat terhubung, setiap akun dapat diberikan kredensial otentikasi seperti kata sandi.
Peran Pengguna
Peran database adalah kumpulan dari sejumlah hak istimewa yang dapat diberikan ke satu atau lebih pengguna. Dalam database open source modern, sebagian besar pengguna datang dengan peran yang telah ditentukan sebelumnya.
Manajemen Sandi
Mengakses database mengharuskan penggunanya untuk mengotentikasi diri mereka sendiri dengan nama pengguna dan sandi. Basis data menerapkan fungsi hash yang sama pada kata sandi yang dimasukkan pengguna, dan membandingkannya dengan hash yang disimpan dalam basis data. Jika keduanya cocok, maka izin diberikan. Kedaluwarsa kata sandi diperlukan untuk semua pengguna basis data untuk mengubah kata sandi secara berkala. Dan pembuatan kata sandi acak diperlukan untuk kata sandi literal yang ditentukan administrator eksplisit. Satu hal penting yang harus dipantau adalah pelacakan kegagalan sandi/otentikasi yang salah, disarankan untuk mengaktifkan penguncian akun sementara setelah terlalu banyak kegagalan login dengan sandi yang salah berturut-turut.
Penanganan Kata Sandi yang Kedaluwarsa
Setelah kata sandi kedaluwarsa, server database memutuskan koneksi klien kata sandi yang kedaluwarsa.
Contoh
[[email protected] vagrant]# mysql -u severalnies -p
Password: ******
ERROR 1862 (HY000): Your password has expired. To log in you must
change it using a client that supports expired passwords.
Membatasi Sumber Daya
Batasi penggunaan klien atas sumber daya server database, dengan membatasi jumlah koneksi simultan yang dapat dibuat oleh akun pengguna mana pun. Misalnya, kami dapat membatasi jumlah kueri yang dapat dijalankan pengguna per jam atau berapa kali pengguna dapat terhubung ke server per jam.
Koneksi Terenkripsi
Basis data biasanya mendukung koneksi terenkripsi antara klien dan server menggunakan beberapa protokol keamanan. Menggunakan SSL, itu akan mengenkripsi koneksi antara klien dan server. Ini mengubah data menjadi format yang tidak dapat dibaca melalui lapisan jaringan, dan menghindari penyadapan jaringan. Setelah kami mengaktifkan SSL di database, SSL mulai mendukung koneksi terenkripsi, dan tidak akan mengizinkan koneksi yang tidak terenkripsi.
Komponen dan Plugin Keamanan
Komponen keamanan mudah diintegrasikan dengan database. Misalnya mysql menyertakan beberapa komponen dan plugin yang mengimplementasikan fitur keamanan.
Plugin Otentikasi - Plugin ini mengautentikasi upaya klien untuk terhubung ke Server MySQL. Kami dapat dengan mudah berintegrasi dengan server database kami.
Plugin Sandi - Plugin ini memeriksa apakah sandi saat ini kuat, dan menolak sandi yang dianggap lemah.
Plugin keyring - Plugin ini mengenkripsi tablespace. Teknik enkripsi ini bekerja atas dasar memutar file kunci. Berikut adalah contoh tentang cara mengenkripsi MySQL 8.0.
Audit log - Auditing adalah proses pemantauan dan pencatatan aktivitas yang terjadi pada database server. Ini digunakan untuk mencatat siapa yang melakukan apa, mis. operasi database oleh pengguna, koneksi, atau upaya login yang gagal. Jika Anda menggunakan penyeimbang beban untuk mengakses database, Anda juga perlu memantaunya. Secara default, file log audit disimpan di direktori data mysql.
Contoh Log
20210306 02:30:06,centos14,root,localhost,519,1832,QUERY,,'select sleep(5)',0
20210306 02:30:08,centos14,s9smysqlchk,localhost,571,0,DISCONNECT,,,0
20210306 02:30:09,centos14,root,localhost,519,1867,QUERY,,'show schemas',0
Jika Anda ingin menyimpan file log audit di lokasi yang berbeda, Anda dapat menambahkan parameter ini di file konfigurasi “server_audit_file_path”.
Pemantauan log - Pemantauan log memberi tim ops tingkat visibilitas yang lebih besar ke dalam lingkungan basis data, yang terdiri dari instance basis data tetapi juga penyeimbang beban. Ini membantu mengidentifikasi anomali, kapan anomali ini terjadi dan frekuensi kemunculannya.
Plugin Validasi Kata Sandi
Password seperti kata, angka dan string karakter. Di sisi database dan server, nama pengguna dan kata sandi diperlukan untuk akses tertentu. Misalnya, jika kata sandi diberikan sebagai nilai teks yang jelas, plugin validasi_kata sandi memeriksa kata sandi dengan kebijakan kata sandi saat ini dan menolak kata sandi jika lemah.
validasi_password_policy memiliki tiga nilai RENDAH, SEDANG, atau KUAT. Nilai LOW hanya memeriksa panjang kata sandi, kebijakan MEDIUM menambahkan beberapa ketentuan dan kebijakan STRONG menambahkan ketentuan bahwa substring kata sandi yang terdiri dari 4 karakter atau lebih tidak boleh cocok dengan kata-kata dalam file kamus yang dapat ditentukan dengan memodifikasi variabelvalid_password_dictionary_file.
Plugin LDAP
Plugin LDAP memungkinkan Server database menerima koneksi dari pengguna yang ditentukan dalam direktori LDAP. Dalam autentikasi LDAP, plugin sisi klien dan sisi server mengomunikasikan kata sandi sebagai teks yang jelas. Sambungan aman antara klien dan server dianjurkan untuk mencegah paparan sandi. Jika nama pengguna klien dan nama host tidak cocok, database akan menolak koneksi.
Konfigurasi LDAP sangat mudah di ClusterControl. Dalam posting ini kami menjelaskan langkah-langkah konfigurasi menggunakan ClusterControl.
Mengamankan Cadangan Basis Data
Cadangan data penting untuk melindungi data Anda. Lebih penting lagi untuk memastikan bahwa cadangan Anda tetap aman dan tersedia untuk pemulihan yang lebih cepat. ClusterControl memberikan dukungan komprehensif untuk proses manajemen pencadangan, termasuk mengenkripsi file cadangan menggunakan algoritme enkripsi AES-256 sebelum mengirimkannya ke luar lokasi.
Akses VPN ke jaringan jump host
Untuk mengakses database open source jaringan pribadi dari lokal, metode terbaik adalah menggunakan VPN. VPN memberikan privasi dan keamanan pada pengguna untuk membangun koneksi jaringan pribadi di seluruh jaringan publik. Jump host adalah host perantara atau gateway SSH untuk mengakses server jaringan jarak jauh. Server lompat bertindak sebagai perantara untuk menghubungkan kedua ujungnya, sehingga menjadikannya host "lompatan" untuk mengakses ke sisi lain. Ini adalah salah satu cara populer untuk mengamankan server dari dunia luar. Kita dapat menggunakan tunneling SSH untuk mengakses jaringan jarak jauh dengan cara yang aman, dengan lebih sedikit upaya daripada mengonfigurasi server VPN.
Manajemen Akses Basis Data melalui Jump host
Untuk mengakses server database produksi agar lebih aman, diperlukan jump server khusus. Server lompat khusus ini menyediakan akses ke jaringan pribadi dari jaringan eksternal atau publik, seperti internet. Ini memberikan pendekatan berjenjang bagi setiap pengguna untuk mencapai jaringan pribadi Anda, meminimalkan kemungkinan serangan server potensial.
Bagaimana kita bisa mencapai ini?
Praktik terbaik adalah menyiapkan server lompat untuk terhubung ke database Anda dari mesin Linux, meskipun instans DB berada di jaringan pribadi. Setelah membuat host Jump ikuti panduan di bawah ini,
-
Batasi akses publik di database Anda dengan subnet pribadi.
-
Batasi gateway internet di tabel rute.
-
Buat VPC baru atau tambahkan jump host Anda ke VPC yang sama dengan instance database Anda. Kemudian tambahkan gateway internet ke server lompat Anda dengan subnet publik.
-
Hanya izinkan port database tertentu ke IP yang diperlukan.
Kemudian kita dapat membuat tunneling SSH untuk mengakses server database dengan cara yang aman.
SELinux
SELinux adalah seperangkat modifikasi kernel dan alat ruang pengguna dan memiliki beberapa modul kebijakan. Modul kebijakan adalah konteks SELinux untuk menentukan aturan tentang bagaimana proses, file, port, dan objek sistem lainnya berinteraksi satu sama lain. Interaksi antara objek sistem hanya diizinkan jika aturan kebijakan mengizinkan.
Pengguna sistem sebagian besar tidak akan menyadari SELinux. Hanya administrator sistem yang perlu mempertimbangkan seberapa ketat kebijakan yang diterapkan untuk lingkungan server mereka. Detail ini memberikan kernel SELinux kontrol granular yang lengkap atas seluruh sistem.