Pada artikel ini, kami akan menunjukkan cara mengkonfigurasi koneksi jarak jauh dan aman untuk MySQL di Ubuntu 16.04 VPS. Jika Anda menggunakan koneksi tidak terenkripsi untuk terhubung ke server MariaDB/MySQL jarak jauh Anda, maka semua orang yang memiliki akses ke jaringan dapat memantau dan menganalisis data yang dikirim atau diterima antara klien dan server. Panduan ini juga dapat digunakan pada sistem VPS Linux lainnya, tetapi telah diuji dan ditulis untuk VPS Ubuntu 16.04.
1. Masuk ke VPS Anda melalui SSH
ssh my_sudo_user@my_server
Langkah-langkah dalam tutorial ini mengasumsikan bahwa Anda telah menginstal MySQL 5.7 dengan konfigurasi default.
Aktifkan Koneksi SSL:
2. Buat otoritas sertifikat lokal baru
Kami akan menggunakan otoritas sertifikat lokal sebagai sertifikat root yang ditandatangani sendiri yang akan kami gunakan untuk menandatangani sertifikat server dan klien. Untuk membuat file otoritas sertifikat lokal baru, jalankan perintah berikut:
sudo openssl genrsa -out /etc/mysql/ca-key.pem 2048 sudo chmod 600 /etc/mysql/ca-key.pem sudo openssl req -new -key /etc/mysql/ca-key.pem -out /etc/mysql/ca-csr.pem -subj /CN=mysql-CA/ sudo openssl x509 -req -in /etc/mysql/ca-csr.pem -out /etc/mysql/cacert.pem -signkey /etc/mysql/ca-key.pem -days 3650 sudo echo 01 > /etc/mysql/cacert.srl
3. Buat Sertifikat dan Kunci Server
Untuk menghasilkan sertifikat server dan kunci, jalankan perintah berikut:
sudo openssl genrsa -out /etc/mysql/server-key.pem 2048 sudo chmod 600 /etc/mysql/server-key.pem sudo openssl req -new -key /etc/mysql/server-key.pem -out /etc/mysql/server-csr.pem -subj /CN=mysql/ sudo openssl x509 -req -in /etc/mysql/server-csr.pem -out /etc/mysql/server-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365
4. Buat Sertifikat dan Kunci Klien
Selanjutnya, kita perlu membuat sertifikat klien. Jalankan perintah berikut untuk membuat sertifikat dan kunci klien:
sudo openssl genrsa -out /etc/mysql/client-key.pem 2048 sudo chmod 600 /etc/mysql/client-key.pem sudo openssl req -new -key /etc/mysql/client-key.pem -out /etc/mysql/client-csr.pem -subj /CN=mysql/ sudo openssl x509 -req -in /etc/mysql/client-csr.pem -out /etc/mysql/client-cert.pem -CA /etc/mysql/cacert.pem -CAkey /etc/mysql/ca-key.pem -days 365
Jika Anda ingin memiliki sertifikat SSL yang ditandatangani CA, Anda dapat membeli sertifikat SSL tepercaya di sini.
5. Aktifkan Koneksi SSL Server MySQL
Buka file konfigurasi MySQL dengan editor teks Anda:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
dan batalkan komentar pada baris berikut:
ssl-ca=/etc/mysql/cacert.pem ssl-cert=/etc/mysql/server-cert.pem ssl-key=/etc/mysql/server-key.pem
Simpan file dan mulai ulang layanan MySQL:
sudo systemctl restart mysql
Untuk memverifikasi bahwa SSL diaktifkan, login ke server MySQL
mysql -uroot -p
dan jalankan perintah berikut:
mysql> show variables LIKE '%ssl%';
Outputnya harus mirip dengan yang berikut:
+---------------+----------------------------+ | Variable_name | Value | +---------------+----------------------------+ | have_openssl | YES | | have_ssl | YES | | ssl_ca | /etc/mysql/cacert.pem | | ssl_capath | | | ssl_cert | /etc/mysql/server-cert.pem | | ssl_cipher | | | ssl_crl | | | ssl_crlpath | | | ssl_key | /etc/mysql/server-key.pem | +---------------+----------------------------+ 9 rows in set (0.15 sec)
6. Aktifkan Koneksi Jarak Jauh melalui SSL
Secara default, MySQL hanya mendengarkan koneksi di localhost. Untuk mengaktifkan koneksi jarak jauh, Anda perlu mengkonfigurasi ulang MySQL di server Anda untuk mendengarkan di semua antarmuka, untuk melakukannya buka file konfigurasi MySQL:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
dan ubah
bind-address = 127.0.0.1
untuk
bind-address = 0.0.0.0
Agar perubahan diterapkan, restart server MySQL dengan perintah berikut:
sudo systemctl restart mysql
Verifikasi bahwa server MySQL Anda mendengarkan semua antarmuka:
sudo netstat -anp | grep 3306
outputnya harus mirip dengan yang berikut:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 938/mysqld
Untuk mengaktifkan klien MySQL Anda untuk terhubung ke server MySQL, Anda perlu memberikan akses pengguna database ke database di server jauh.
Misalnya jika Anda ingin memberikan akses ke dbuser
pengguna ke database_name
database dan untuk memaksa SSL, login ke shell MySQL sebagai root dan jalankan perintah berikut:
GRANT ALL ON database_name.* TO [email protected] IDENTIFIED BY 'dbuserpassword' REQUIRE SSL;
di mana 192.168.1.10
adalah alamat IP mesin klien MySQL Anda.
Selanjutnya, Anda perlu mengonfigurasi klien MySQL Anda untuk menggunakan sertifikat SSL yang dibuat sebelumnya. Salin file berikut dari server MySQL Anda ke mesin klien MySQL Anda:
/etc/mysql/cacert.pem /etc/mysql/client-cert.pem /etc/mysql/client-key.pem
7. Konfigurasi Klien MySQL
buka konfigurasi klien MySQL Anda dan tambahkan baris berikut:
[client] ssl-ca=/etc/mysql/cacert.pem ssl-cert=/etc/mysql/client-cert.pem ssl-key=/etc/mysql/client-key.pem
8. Uji Koneksi Anda
Anda sekarang dapat menguji koneksi Anda dari mesin klien ke server database MySQL:
mysql -udbuser -pdbuserpassword -h 192.168.1.5
di mana 192.168.1.5
adalah alamat IP server database MySQL Anda.
Itu dia. Anda telah berhasil mengonfigurasi koneksi jarak jauh dan aman untuk MySQL di Ubuntu 16.04 VPS Anda. Untuk informasi lebih lanjut tentang koneksi aman MySQL, silakan merujuk ke dokumentasi resmi MySQL.
Tentu saja, Anda tidak perlu mengonfigurasi koneksi jarak jauh dan aman untuk MySQL di Ubuntu 16.04 jika Anda menggunakan salah satu Layanan Hosting VPS Ubuntu kami, dalam hal ini Anda dapat meminta admin Linux ahli kami untuk mengonfigurasi koneksi jarak jauh dan aman untuk MySQL di Ubuntu 16.04 untuk Anda. Mereka tersedia 24×7 dan akan segera memenuhi permintaan Anda.
PS . Jika Anda menyukai posting ini tentang cara mengkonfigurasi koneksi jarak jauh dan aman untuk MySQL di Ubuntu 16.04, silakan bagikan dengan teman-teman Anda di jejaring sosial menggunakan tombol di sebelah kiri atau cukup tinggalkan balasan di bawah. Terima kasih.