MySQL adalah sistem basis data sumber terbuka paling populer di dunia dan MariaDB (garpu dari MySQL) adalah sistem database open source yang tumbuh paling cepat di dunia. Setelah menginstal server MySQL, konfigurasi defaultnya tidak aman, dan mengamankannya adalah salah satu tugas penting dalam manajemen database secara umum.
Ini akan berkontribusi pada pengerasan dan peningkatan keamanan server Linux secara keseluruhan, karena penyerang selalu memindai kerentanan di bagian mana pun dari sistem, dan basis data di masa lalu menjadi area target utama. Contoh umum adalah pemaksaan kata sandi root untuk database MySQL.
Dalam panduan ini, kami akan menjelaskan MySQL/MariaDB yang berguna praktik terbaik keamanan untuk Linux.
1. Instalasi MySQL Aman
Ini adalah langkah pertama yang direkomendasikan setelah menginstal server MySQL, untuk mengamankan server database. Skrip ini memudahkan dalam meningkatkan keamanan server MySQL Anda dengan meminta Anda untuk:
- setel sandi untuk akun root, jika Anda tidak menyetelnya selama penginstalan.
- nonaktifkan login pengguna root jarak jauh dengan menghapus akun root yang dapat diakses dari luar host lokal.
- hapus akun pengguna anonim dan uji database yang secara default dapat diakses oleh semua pengguna, bahkan pengguna anonim.
# mysql_secure_installation
Setelah menjalankannya, atur kata sandi root dan jawab serangkaian pertanyaan dengan memasukkan [Ya/Y ] dan tekan [Enter] .
2. Mengikat Server Database Ke Alamat Loopback
Konfigurasi ini akan membatasi akses dari mesin jarak jauh, ia memberitahu server MySQL untuk hanya menerima koneksi dari dalam localhost. Anda dapat mengaturnya di file konfigurasi utama.
# vi /etc/my.cnf [RHEL/CentOS] # vi /etc/mysql/my.conf [Debian/Ubuntu] OR # vi /etc/mysql/mysql.conf.d/mysqld.cnf [Debian/Ubuntu]
Tambahkan baris berikut di bawah [mysqld]
bagian.
bind-address = 127.0.0.1
3. Nonaktifkan INFILE LOKAL di MySQL
Sebagai bagian dari penguatan keamanan, Anda harus menonaktifkan local_infile untuk mencegah akses ke sistem file yang mendasarinya dari dalam MySQL menggunakan arahan berikut di bawah [mysqld]
bagian.
local-infile=0
4. Ubah Port Default MYSQL
Pelabuhan variabel mengatur nomor port MySQL yang akan digunakan untuk mendengarkan pada koneksi TCP/IP. Nomor port default adalah 3306 tetapi Anda dapat mengubahnya di bawah [mysqld] bagian seperti yang ditunjukkan.
Port=5000
5. Aktifkan Pencatatan MySQL
Log adalah salah satu cara terbaik untuk memahami apa yang terjadi di server, jika ada serangan, Anda dapat dengan mudah melihat aktivitas terkait penyusupan dari file log. Anda dapat mengaktifkan logging MySQL dengan menambahkan variabel berikut di bawah [mysqld]
bagian.
log=/var/log/mysql.log
6. Tetapkan Izin yang Sesuai pada File MySQL
Pastikan Anda memiliki izin yang sesuai untuk semua file server mysql dan direktori data. /etc/my.conf file seharusnya hanya dapat ditulisi ke root. Ini memblokir pengguna lain dari mengubah konfigurasi server database.
# chmod 644 /etc/my.cnf
7. Hapus Riwayat Shell MySQL
Semua perintah yang Anda jalankan di shell MySQL disimpan oleh klien mysql dalam file riwayat:~/.mysql_history . Ini bisa berbahaya, karena untuk setiap akun pengguna yang akan Anda buat, semua nama pengguna dan kata sandi yang diketik di shell akan disimpan di file history.
# cat /dev/null > ~/.mysql_history
8. Jangan Jalankan Perintah MySQL dari Commandline
Seperti yang sudah Anda ketahui, semua perintah yang Anda ketik di terminal disimpan dalam file riwayat, tergantung pada shell yang Anda gunakan (misalnya ~/.bash_history untuk pesta). Penyerang yang berhasil mendapatkan akses ke file riwayat ini dapat dengan mudah melihat kata sandi apa pun yang direkam di sana.
Sangat tidak disarankan untuk mengetikkan kata sandi pada baris perintah, seperti ini:
# mysql -u root -ppassword_
Saat Anda memeriksa bagian terakhir dari file riwayat perintah, Anda akan melihat kata sandi yang diketik di atas.
# history
Cara yang tepat untuk menghubungkan MySQL adalah.
# mysql -u root -p Enter password:
9. Tentukan Pengguna Basis Data Khusus Aplikasi
Untuk setiap aplikasi yang berjalan di server, hanya berikan akses ke pengguna yang bertanggung jawab atas database untuk aplikasi tertentu. Misalnya, jika Anda memiliki situs wordpress, buat pengguna tertentu untuk database situs wordpress sebagai berikut.
# mysql -u root -p MariaDB [(none)]> CREATE DATABASE osclass_db; MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY '[email protected]%!2'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit
dan ingat untuk selalu menghapus akun pengguna yang tidak lagi mengelola basis data aplikasi apa pun di server.
10. Gunakan Plugin dan Pustaka Keamanan Tambahan
MySQL menyertakan sejumlah plugin keamanan untuk:upaya otentikasi oleh klien untuk terhubung ke server mysql, validasi kata sandi dan mengamankan penyimpanan untuk informasi sensitif, yang semuanya tersedia dalam versi gratis.
Anda dapat menemukan lebih banyak di sini:https://dev.mysql.com/doc/refman/5.7/en/security-plugins.html
11. Ubah Kata Sandi MySQL Secara Teratur
Ini adalah bagian umum dari informasi/aplikasi/saran keamanan sistem. Seberapa sering Anda melakukan ini akan sepenuhnya bergantung pada kebijakan keamanan internal Anda. Namun, ini dapat mencegah "pengintai" yang mungkin telah melacak aktivitas Anda dalam jangka waktu yang lama, untuk mendapatkan akses ke server mysql Anda.
MariaDB [(none)]> USE mysql; MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost'; MariaDB [(none)]> FLUSH PRIVILEGES;
12. Perbarui Paket Server MySQL Secara Teratur
Sangat disarankan untuk memutakhirkan paket mysql/mariadb secara teratur untuk mengikuti pembaruan keamanan dan perbaikan bug, dari repositori vendor. Biasanya paket dalam repositori sistem operasi default sudah usang.
# yum update # apt update
Setelah membuat perubahan apa pun pada server mysql/mariadb, selalu mulai ulang layanan.
# systemctl restart mariadb #RHEL/CentOS # systemctl restart mysql #Debian/Ubuntu
Itu saja! Kami senang mendengar dari Anda melalui formulir komentar di bawah ini. Bagikan dengan kami semua kiat keamanan MySQL/MariaDB yang tidak ada dalam daftar di atas.