Kita sudah tahu cara menginstal phpMyAdmin dengan tumpukan LAMP di Ubuntu 20.04 . Hari ini, mari kita lihat cara menginstal phpMyAdmin dengan LEMP stack di Ubuntu 20.04 edisi LTS. Dan kemudian kita juga akan membahas beberapa praktik keamanan yang akan membantu mengamankan phpmyadmin dari ancaman umum. Pertama, pastikan Anda telah menyiapkan tumpukan LEMP di Ubuntu 20.04 seperti yang dijelaskan dalam tautan berikut.
- Instal Nginx, MySQL, PHP (LEMP Stack) Di Ubuntu 20.04 LTS
Setelah menginstal LEMP stack, instal dan amankan phpMyAdmin seperti yang dijelaskan di bagian berikut.
Instal phpMyAdmin Dengan LEMP Stack Di Ubuntu 20.04 LTS
Jalankan perintah berikut untuk menginstal phpMyAdmin dari Terminal:
$ sudo apt install phpmyadmin
Di jendela berikutnya, Anda akan diminta untuk memilih server web yang harus dikonfigurasi secara otomatis untuk menjalankan phpMyAdmin. Seperti yang Anda lihat pada tangkapan layar di bawah, Nginx tidak tersedia di daftar server web. Apache dan lighthttpd hanya tercantum di sini. Jadi jangan pilih server web apa pun dan biarkan kosong. Pilih OK dan tekan ENTER untuk melanjutkan:
PhpMyAdmin membutuhkan database yang diinstal dan dikonfigurasi sebelum dapat digunakan. Anda dapat melakukannya dengan dbconfig-command.
Pilih Ya untuk mengkonfigurasi database untuk phpmyadmin dengan dbconfig-common:
Anda perlu memberikan kata sandi untuk phpmyadmin untuk mendaftar ke server database MySQL. Jika kata sandi tidak diberikan, kata sandi acak akan dibuat.
Masukkan kata sandi yang kuat dan tekan ENTER untuk melanjutkan:
Masukkan kembali kata sandi:
Saat menulis panduan ini, ketika saya mencoba mengatur kata sandi untuk phpmyadmin, itu menimbulkan kesalahan berikut:
An error occurred while installing the database: mysql said: ERROR 1819 (HY000) at line 1: Your password does not satisfy the current policy requirements . Your options are: * abort - Causes the operation to fail; you will need to downgrade, reinstall, reconfigure this package, or otherwise manually intervene to continue using it. This will usually also impact your ability to install other packages until the installation failure is resolved. * retry - Prompts once more with all the configuration questions (including ones you may have missed due to the debconf priority setting) and makes another attempt at performing the operation. * retry (skip questions) - Immediately attempts the operation again, skipping all questions. This is normally useful only if you have solved the underlying problem since the time the error occurred. * ignore - Continues the operation ignoring dbconfig-common errors. This will usually leave this package without a functional database.
Kesalahan ini terjadi karena kami telah mengaktifkan VALIDASI SANDI komponen seperti yang dijelaskan di bagian berjudul "2.2 Ubah metode otentikasi untuk pengguna root MySQL" dalam panduan pemasangan tumpukan LEMP yang terlampir di atas.
Untuk memperbaiki masalah ini, Anda perlu menonaktifkan sementara komponen Validasi Kata Sandi dan mengaktifkannya kembali setelah mengatur kata sandi untuk phymyadmin. Klik Oke untuk menutup pesan kesalahan di atas dan pilih "batalkan" untuk membatalkan instalasi phpmyadmin.
Sekarang masuk ke prompt Mysql dengan menjalankan perintah berikut:
$ mysql -u root -p
Dari prompt mysql, setel perintah berikut untuk menonaktifkan plugin Validasi Kata Sandi:
mysql> UNINSTALL COMPONENT "file://component_validate_password";
Harap dicatat bahwa perintah di atas hanya akan menonaktifkan plugin, tetapi tidak menghapusnya. Anda dapat mengaktifkannya nanti. Kemudian ketik "exit" untuk keluar dari prompt MySQL.
mysql> exit
Sekarang coba instal phpmyadmin lagi menggunakan perintah:
$ sudo apt install phpmyadmin
Pilih "Ya" dan tekan ENTER untuk mengkonfigurasi database untuk phpmyadmin dengan dbconfig-common. Kali ini instalasi phpmyadmin akan bekerja tanpa masalah.
Setelah phpmyadmin diinstal, aktifkan kembali plugin Validasi Kata Sandi. Untuk melakukannya, login ke prompt Mysql Anda:
$ mysql -u root -p
Dari prompt mysql, setel perintah berikut untuk menonaktifkan plugin Validasi Kata Sandi:
mysql> INSTALL COMPONENT "file://component_validate_password";
Ketik exit untuk keluar dari perintah mysql.
mysql> exit
Sekarang buat tautan simbolik untuk mengonfigurasi server web Nginx untuk menjalankan phpmyadmin menggunakan perintah:
$ sudo ln -s /usr/share/phpmyadmin/ /var/www/html/phpmyadmin
Perintah ini akan membuat symlink bernama "phpmyadmin" di bawah direktori root Nginx. Symlink ini sebenarnya menunjuk ke direktori /usr/share/phpmyadmin, tempat file sebenarnya disimpan.
Selesai! Kami telah berhasil menginstal PhpMyAdmin dengan tumpukan LEMP.
Mengakses Dasbor phpMyAdmin
Buka browser web Anda dan navigasikan ke "http://IP-Address/phpmyadmin" dari bilah alamat.
Anda akan melihat halaman login phpmyadmin. Masukkan pengguna database dan kata sandinya:
Anda akan senang dengan dasbor phpMyAdmin.
Dari sini, Anda dapat membuat, menghapus, dan mengelola database.
Buat pengguna khusus untuk mengakses dasbor phpMyAdmin
Setelah phpMyAdmin diinstal, pengguna database bernama 'phpmyadmin' akan secara otomatis dibuat dengan kata sandi administratif yang Anda tetapkan selama instalasi. Anda dapat masuk ke dasbor phpmyAdmin menggunakan pengguna 'phpmyadmin' atau root mysql pengguna seperti yang ditunjukkan di atas. Namun, disarankan untuk membuat pengguna khusus untuk mengelola database melalui antarmuka web phpMyAdmin.
Untuk melakukannya, login ke shell mysql menggunakan perintah:
$ mysql -u root -p
Masukkan kata sandi root mysql Anda. Anda sekarang akan berada di shell mysql.
Masukkan perintah berikut untuk membuat pengguna khusus baru untuk phpmyadmin:
mysql> CREATE USER 'phpmyadminuser'@'localhost' IDENTIFIED BY 'Password123#@!';
Di sini, phpmyadmin adalah pengguna baru untuk mengakses dasbor phpmyadmin. Kata sandi untuk phpmyadminuser adalah Password123#@! . Ganti nilai ini dengan nilai Anda sendiri.
Selanjutnya berikan hak yang sesuai untuk 'phpmyadminuser' menggunakan perintah:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'phpmyadminuser'@'localhost' WITH GRANT OPTION;
Akhirnya keluar dari shell mysql:
mysql> exit
Kami sekarang telah membuat pengguna khusus untuk mengelola database melalui antarmuka web phpmyadmin. Mari kita lanjutkan dan akses dasbor phpmyadmin.
Buka browser web dan navigasikan ke "http://IP-Address/phpayadmin. Masukkan pengguna database yang baru dibuat dan kata sandinya. Selamat! Anda telah masuk dengan pengguna khusus ke dasbor web phpMyAdmin.
phpMyAdmin aman
Bagian ini memberikan beberapa tip untuk mengamankan instalasi PhpMyAdmin. Harap dicatat bahwa langkah-langkah berikut saja tidak dapat melindungi phpMyAdmin 100% aman. Namun, mereka setidaknya akan memperlambat setiap upaya pelaku untuk membobol dashboard phpmyadmin Anda.
Nonaktifkan login root MySQL ke dasbor phpmyadmin
Mengizinkan pengguna root mysql untuk mengakses dasbor phpMyAdmin tidak aman, terutama saat mengelola database melalui jaringan. Inilah sebabnya kami membuat pengguna khusus di bagian sebelumnya. Karena kita sudah memiliki pengguna khusus, kita dapat dengan aman menonaktifkan login root mysql untuk mengakses dashboard phpmyadmin untuk meminimalkan serangan.
Umumnya, phpmyadmin diinstal di bawah /usr/share/phpmyadmin/ direktori dan file konfigurasinya disimpan di /etc/phpmyadmin direktori.
Edit file konfigurasi phpmyadmin:
$ sudo nano /etc/phpmyadmin/config.inc.php
Tambahkan/ubah parameter berikut:
[...] $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['AllowRoot'] = FALSE; [...]
Simpan dan tutup file.
Mulai ulang server web Nginx menggunakan perintah:
$ sudo systemctl restart nginx
Sekarang coba masuk ke phpmyadmin sebagai pengguna root. Anda akan mendapatkan Akses ditolak pesan kesalahan:
Ubah URL antarmuka web phpmyadmin
Ini adalah taktik paling umum yang diikuti oleh bot untuk mendapatkan akses ke phpmyadmin. Anda dapat mencegahnya dengan mengubah URL menjadi sesuatu yang sulit ditebak. Mengubah URL phpmyadmin akan menghindari bot atau skrip otomatis untuk melakukan pemindaian URL dan serangan brute force.
Ingat kita membuat tautan simbolis yang disebut "phpmyadmin" di bawah direktori root Nginx?
$ ls -l /var/www/html/ total 8 -rw-r--r-- 1 root root 612 Jun 2 07:15 index.nginx-debian.html -rw-r--r-- 1 root root 20 Jun 2 07:35 info.php lrwxrwxrwx 1 root root 22 Jun 2 08:14 phpmyadmin -> /usr/share/phpmyadmin/
Di sini, phpmyadmin adalah symlink yang menunjuk ke direktori /usr/share/phpmyadmin.
Kita akan mengubah nama symlink menggunakan perintah:
$ sudo mv /var/www/html/phpmyadmin /var/www/html/ostechnix
Pastikan nama berisi karakter acak dan sangat sulit ditebak.
Mulai sekarang, setiap kali seseorang mencoba mengakses halaman phpmyadmin dengan menavigasi ke http://IP-Address/phpmyadmin URL, dia akan mendapatkan pesan kesalahan berikut:
Karena kami mengubah URL. URL baru untuk phpmyadmin adalah http://IP-Address/ostechnix.
Halaman Login phpMyAdmin yang dilindungi sandi
Kita dapat menambahkan lapisan keamanan ekstra dengan membatasi akses ke halaman login phpmyadmin dengan metode otentikasi HTTP dasar. Artinya - kami mengaktifkan perlindungan kata sandi untuk halaman login phpmyadmin, sehingga pengguna harus memasukkan nama pengguna/kata sandi tambahan sebelum mengakses halaman login phpMyAdmin yang sebenarnya.
Pertama, kita perlu membuat file kata sandi menggunakan htpasswd kegunaan. Utilitas htpasswd adalah bagian dari apache2-utils kemasan. Jadi mari kita instal menggunakan perintah:
$ sudo apt install apache2-utils
Sekarang, buat file kata sandi terenkripsi dengan perintah:
$ sudo htpasswd -c /etc/nginx/.htpasswd ostechnix
Ganti "ostechnix" dengan nama pengguna pilihan Anda. Masukkan kata sandi yang kuat dua kali untuk menghasilkan file kata sandi.
Untuk melihat isi file yang baru dibuat, sue perintah "cat" seperti di bawah ini:
$ cat /etc/nginx/.htpasswd
Anda akan melihat output seperti di bawah ini:
ostechnix:$apr1$Us9YABHL$CMPDIuHaOB2lK/DVIzA2C/
Selanjutnya, kita perlu menyebutkan jalur file kata sandi di atas dalam file konfigurasi default Nginx kita. Jika Anda mengikuti tutorial instalasi LEMP kami yang terlampir di atas, konfigurasi Nginx default seharusnya /etc/nginx/sites-available/default .
Edit file konfigurasi Nginx default:
$ sudo nano /etc/nginx/sites-available/default
Tambahkan baris berikut, di bawah "location" blok:
[...] location /ostechnix { auth_basic "Restricted Zone"; auth_basic_user_file /etc/nginx/.htpasswd; } [...]
Ingat kita telah mengubah URL phpMyAdmin (http://IP-Address/ostechnix) pada langkah sebelumnya? Itu sebabnya saya menyebutkan nama blok sebagai "ostechnix" di blok di atas. Gantilah dengan milik Anda sendiri. Simpan dan tutup file.
Periksa file konfigurasi Nginx untuk kesalahan sintaks menggunakan perintah:
$ sudo nginx -t
Contoh keluaran:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Jika Anda tidak melihat kesalahan apa pun, mulai ulang layanan nginx untuk menerapkan perubahan.
$ sudo systemctl restart nginx
Sekarang coba akses URL phpMyAdmin Anda dari browser Anda. Anda akan diminta untuk memasukkan nama pengguna dan kata sandi:
Masukkan nama pengguna dan kata sandi yang benar yang akan dibuat sebelumnya menggunakan utilitas "htpassword". Sekarang Anda akan diarahkan ke halaman login phpMyAdmin yang sebenarnya, di mana Anda dapat memasukkan pengguna database dan kata sandinya untuk login ke dasbor web phpMyAdmin.