Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

12 Praktik Terbaik Keamanan MySQL/MariaDB untuk Linux

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TIMEDIFF() vs SUBTIME() di MySQL:Apa Bedanya?

  2. Bagaimana saya bisa memasukkan data ke dalam database MySQL?

  3. Cara Memigrasikan MySQL dari Amazon EC2 ke Pusat Data Lokal Anda Tanpa Waktu Henti

  4. Apakah koneksi server MySQL saya terenkripsi dan aman?

  5. Cara Mengekspor Database Menggunakan phpMyAdmin