Minggu, 03 November 2013

Bonjour! Server database adalah sebuah area yang sangat sensitif, dimana tidak bisa sembarang orang dapat mengaksesnya atau mengambil data didalamnya, apalagi jika mempunyai niat yang tidak baik. Semua itu harus dijauhkan dari server database karena akibatnya akan sangat fatal. Ada banyak metode yang bisa dilakukan oleh seorang system administrator.

Seperti yang kita ketahui bahwa PhpMyAdmin adalah salah satu media konsol database yang memudahkan pekerjaan kita daripada harus mengakses database menggunakan CLI. Namun terkadang resiko kesalahan bisa lebih besar ketika kita mengotak-atik database dengan konsol CLI daripada ketika kita mengaksesnya dengan PhpMyAdmin. Lalu pertanyaannya adalah, apakah kita yakin jika PhpMyAdmin kita buka maka server kita aman? Tentu tidak! Sebelumnya saya pernah membahas mengenai beberapa metode pengamanan PhpMyAdmin di linux. Sebenarnya dengan cara yang saya tulis di artikel tersebut sudah cukup aman, namun jika boleh saya jujur itu masih kurang aman. Karena didalam artikel saya tersebut PhpMyAdmin masih diakses dengan HTTP Mode. Itu artinya Sniffing masih mempunyai kemungkinan untuk dilakukan bukan? Tentu kita tidak mau server database kita di obrak-abrik oleh para hacker. Dengan ditulisnya artikel ini saya akan memberikan tutorial tentang bagaimana caranya mengamankan PhpMyAdmin dengan SSL Mode HTTPS di Linux. Metode ini saya praktekan dengan VM Ubuntu Server, bagi anda yang memakai distro linux lainnya sepertinya tidak akan berbeda terlalu jauh. Jika anda belum menginstall PhpMyAdmin di server anda, silahkan install terlebih dahulu, jika anda belum mengetahui cara install PhpMyAdmin di Linux anda bisa mengikuti langkah-langkahnya di artikel saya sebelumnya.

Baiklah kita mulai, saya memberikan IP Address 192.168.1.1 pada VM saya. Langkah pertama yang akan kita lakukan adalah kita memberikan autentikasi sebelum mengakses halaman login PhpMyAdmin. Hal ini sangat saya rekomendasikan untuk anda lakukan demi mengamankan PhpMyAdmin anda. Cara memberikan autentikasi pada PhpMyAdmin adalah :

Buka file /etc/phpmyadmin/apache2.conf. Lalu cari text "DirectoryIndex index.php". Lalu tambahkan line dibawahnya "AllowOverride All".
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
. . .

membuat file .htaccess pada folder /usr/share/phpmyadmin/. Masukkan script dibawah ini :
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Script diatas akan mengarahkan user pada autentikasi sebelum mengakses halaman login PhpMyAdmin. Username dan password yang digunakan untuk autentikasi tersebut berbeda dengan username dan password yang dipakai untuk mengakses MySQL via CLI atau via PhpMyAdmin. File username dan password untuk autentikasi ini akan disimpan di folder /etc/phpmyadmin/.htpasswd. Selanjutnya yang akan kita lakukan adalah membuat username dan password untuk autentikasi. Ketikkan perintah ini di server atau VM anda :
sudo htpasswd -c /etc/phpmyadmin/.htpasswd user_name
Setelah anda menekan enter untuk perintah tersebut, anda akan disuruh membuat password untuk user tersebut. Perintah ini akan membuat sebuah user untuk autentikasi sebelum mengakses halaman login PhpMyAdmin dan file tersebut akan disimpan pada file /etc/phpmyadmin/.htpasswd. Untuk mengujinya silahkan restart service apache anda.
sudo service apache2 restart
Maka seharusnya anda mendapatkan tampilan seperti ini :

Autentikasi sebelum mengakses login page PhpMyAdmin

Selanjutnya adalah kita akan memaksa PhpMyAdmin diakses melalui HTTPS, bukan HTTP. Ini bertujuan supaya setiap transaksi data antara kita dan server tersebut di enkripsi. Jadi tidak ada kesempatan bagi para hacker untuk melakukan sniffing. Cara mengkonfigurasi HTTPS SSL Mode di Linux sebenarnya sudah saya bahas diartikel sebelumnya. Tapi daripada ribet, saya akan menuliskan ulang diartikel ini. Cara konfigurasi PhpMyAdmin dengan HTTPS SSL Mode, pertama, lakukan dua perintah dibawah ini pada server anda :
sudo a2enmod ssl
sudo service apache2 restart

Lalu buatlah direktori untuk menyimpan file certificate SSL, dan buatlah cert dan key dengan perintah ini :
sudo mkdir /etc/apache2/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Perintah diatas akan membuat file certificate yang berlaku untuk 365 hari atau 1 tahun dengan enkripsi 2048 bit. Lalu kedua file tersebut akan disimpan didalam folder /etc/apache2/ssl. Setelah anda menekan enter untuk perintah tersebut, anda harus mengisi pertanyaan-pertanyaan yang tampil seperti dibawah, isilah dengan benar.
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ID
State or Province Name (full name) [Some-State]:West Java
Locality Name (eg, city) []:Bandung
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Apocalypsix Inc
Organizational Unit Name (eg, section) []:IT Dept
Common Name (e.g. server FQDN or YOUR name) []:apocalypsix.com
Email Address []:webmaster@apocalypsix.com

Setelah membuat file certificate dan key kita tambahkan NameVirtualHost :443 didalam file /etc/apache2/ports.conf. Lalu selanjutnya adalah mengkonfigurasi file site default-ssl di folder /etc/apache2/default-ssl. Masukkan lokasi apache.key dan apache.cert yang kita buat sebelumnya. Cari dan rubah line tersebut sesuai path masing-masing.
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Tutup dan save. Lalu selanjutnya adalah memaksa PhpMyAdmin diakses melalui HTTPS. Masukkan script dibawah ini kedalam file /etc/phpmyadmin/config.inc.php. Simpan script ini di line paling bawah.
$cfg['ForceSSL'] = true;

Simpan dan Tutup file. Lalu aktifkan site default-ssl
sudo a2ensite default-ssl
sudo service apache2 restart

Untuk melihat hasilnya anda bisa coba dengan memanggil phpmyadmin.
192.168.1.1/phpmyadmin

Pertama anda akan melihat tampilan seperti dibawah ini. Masukkan username dan password yang kita buat tadi.
Autentikasi sebelum login page PhpMyAdmin

Lalu setelah anda login akan tampil halaman seperti ini :
Security warning SSL
Dan akhirnya anda akan melihat login page PhpMyAdmin :
Login Page PhpMyAdmin
Login dengan username dan password mysql anda.
PhpMyAdmin

Dan sekarang server database anda sudah lebih aman dari sebelumnya. Cara mengamankan PhpMyAdmin dengan SSL Mode HTTPS di linux tidak sulit bukan. Semoga artikel ini membantu anda.

Semoga bermanfaat,
Salam penguin! :)