12 Praktik Terbaik Keamanan MySQL/MariaDB untuk Linux


MySQL adalah sistem basis data sumber terbuka terpopuler di dunia dan MariaDB (cabang dari MySQL) adalah sistem basis data sumber terbuka dengan pertumbuhan tercepat di dunia. Setelah menginstal server MySQL, konfigurasi defaultnya menjadi tidak aman, dan mengamankannya adalah salah satu tugas penting dalam manajemen database secara umum.

Baca Juga: Pelajari MySQL/MariaDB untuk Pemula – Bagian 1

Hal ini akan berkontribusi pada penguatan dan peningkatan keamanan server Linux secara keseluruhan, karena penyerang selalu memindai kerentanan di bagian mana pun dari sistem, dan database di masa lalu merupakan area target utama. Contoh umum adalah pemaksaan kata sandi root untuk database MySQL.

Dalam panduan ini, kami akan menjelaskan praktik terbaik keamanan MySQL/MariaDB yang berguna untuk Linux.

1. Amankan Instalasi MySQL

Ini adalah langkah pertama yang disarankan setelah menginstal server MySQL, untuk mengamankan server database. Skrip ini memfasilitasi peningkatan keamanan server MySQL Anda dengan meminta Anda untuk:

  • atur kata sandi untuk akun root, jika Anda tidak mengaturnya saat instalasi.
  • nonaktifkan login pengguna root jarak jauh dengan menghapus akun root yang dapat diakses dari luar host lokal.
  • menghapus akun pengguna anonim dan menguji database yang secara default dapat diakses oleh semua pengguna, bahkan pengguna anonim.
mysql_secure_installation

Setelah menjalankannya, atur kata sandi root dan jawab rangkaian pertanyaan dengan memasukkan [Yes/Y] dan tekan [Enter].

2. Ikat Server Database Ke Alamat Loopback

Konfigurasi ini akan membatasi akses dari mesin jarak jauh, ini 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 ini pada bagian [mysqld].

bind-address = 127.0.0.1

3. Nonaktifkan INFILE LOKAL di MySQL

Sebagai bagian dari penguatan keamanan, Anda perlu menonaktifkan local_infile untuk mencegah akses ke sistem file yang mendasarinya dari dalam MySQL menggunakan arahan berikut di bagian [mysqld].

local-infile=0

4. Ubah Port Default MYSQL

Variabel Port menetapkan nomor port MySQL yang akan digunakan untuk mendengarkan koneksi TCP/IP. Nomor port default adalah 3306 tetapi Anda dapat mengubahnya di bagian [mysqld] seperti yang ditunjukkan.

Port=5000

5. Aktifkan Pencatatan MySQL

Log adalah salah satu cara terbaik untuk memahami apa yang terjadi di server, jika terjadi serangan, Anda dapat dengan mudah melihat aktivitas terkait intrusi dari file log. Anda dapat mengaktifkan logging MySQL dengan menambahkan variabel berikut di bagian [mysqld].

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. File /etc/my.conf 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. Hal ini bisa berbahaya, karena untuk setiap akun pengguna yang akan Anda buat, semua nama pengguna dan kata sandi yang diketik pada shell akan tercatat di file histori.

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 bash). Seorang penyerang yang berhasil mendapatkan akses ke file riwayat ini dapat dengan mudah melihat kata sandi apa pun yang tercatat 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 Database Khusus Aplikasi

Untuk setiap aplikasi yang berjalan di server, hanya memberikan akses kepada pengguna yang bertanggung jawab atas database untuk aplikasi tertentu. Misalnya jika Anda memiliki situs wordpress, buatlah user khusus untuk database situs wordpress seperti berikut.

mysql -u root -p
MariaDB [(none)]> CREATE DATABASE osclass_db;
MariaDB [(none)]> CREATE USER 'osclassdmin'@'localhost' IDENTIFIED BY 'osclass@dmin%!2';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON osclass_db.* TO 'osclassdmin'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit

dan ingatlah untuk selalu menghapus akun pengguna yang tidak lagi mengelola database aplikasi apa pun di server.

10. Gunakan Plugin dan Perpustakaan Keamanan Tambahan

MySQL menyertakan sejumlah plugin keamanan untuk: mengautentikasi upaya klien untuk terhubung ke server mysql, validasi kata sandi, dan mengamankan penyimpanan informasi sensitif, 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 Password MySQL Secara Teratur

Ini adalah nasihat umum tentang keamanan informasi/aplikasi/sistem. Seberapa sering Anda melakukan ini sepenuhnya bergantung pada kebijakan keamanan internal Anda. Namun, hal 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 mengupgrade paket mysql/mariadb secara berkala untuk mengikuti pembaruan keamanan dan perbaikan bug, dari repositori vendor. Biasanya paket di repositori sistem operasi default sudah usang.

yum update
apt update

Setelah melakukan perubahan apa pun pada server mysql/mariadb, selalu mulai ulang layanan.

systemctl restart mariadb		#RHEL/CentOS
systemctl restart mysql		#Debian/Ubuntu

Baca Juga: 15 Tip Penyetelan dan Pengoptimalan Kinerja MySQL/MariaDB yang Berguna

Itu saja! Kami senang mendengar pendapat Anda melalui formulir komentar di bawah. Bagikan kepada kami kiat keamanan MySQL/MariaDB apa pun yang tidak ada dalam daftar di atas.