Keamanan Sistem Operasi NetBSD untuk Aplikasi Berbasis Web – Bagian VI Instalasi dan Pengerasan Mysql dan WordPress

Wordrpress hanya mendukung mysql secara default, meski bisa menggunakan database lainnya tapi hanya akan membuat lebih lambat dibanding menggunakan mysql atau mariadb. Berikut akan diterangkan cara instalasi Mysql dan cara pengerasannya.

Instalasi Mysql

Instalasi Mysql di NetBSD 6 cukup mengjalankan perintah berikut :

#pkgin install mysql-server

Langkah diatas sudah melakukan instalasi mysql-server dan mysql-client, namun sebelum dapat digunakan harus dilakukan beberapa langkah tambahan yaitu :

#echo "mysqld=YES" >> /etc/rc.conf
#/etc/rc.d/mysql onestart

setelah itu kita melakukan setting password root sebagai pengamanan

#mysqladmin -u root password

Mysql Hardening

Pengerasan Mysql server untuk kali ini tidak terlalu banyak karena peladen Mysql terdapat dalam satu mesin dengan NginX dan PHP-FPM sehingga yang perlu dilakukan hanya membuat agar Mysql tidak dapat diakses dari selain 127.0.0.1 dengan menggunakan perintah-perintah berikut :

# vi /etc/my.cnf

dan tambahkan baris berikut :

[mysqld]
port=3306
bind-address=127.0.0.1
local-infile=0

Instalasi PHP-Mysql Module

agar Mysql dapat terkoneksi dengan PHP-FPM maka harus diinstal modulnya dengan langkah sbb :

# pkgin install php56-mysql

dan kemudian tambahkan parameter modul mysql pada file php.ini

# echo "extension = mysql.so" >> /usr/pkg/etc/php.ini

dan restartlah php-fpm

# /etc/rc.d/php_fpm restart

Pengerasan Mysql dari dalam

Konfigurasi mysql yang telah kita lakukan akan percuma apabila tabel user dalam mysql tidak dimanajemen dengan baik sehingga ada baiknya kita audit, pertama dengan masuk dulu ke mysql

#mysql -u root -p

Kemudian kita lihat tabel user dengan menjalankan :

mysql> SELECT User,Host,Password FROM mysql.user;

dan dianalisa isi tabelnya, seringkali didalamnya terdapat user kosong dengan password dan host yang kosong, perlu dibersihkan dengan perintah berikut

mysql> DELETE FROM mysql.user WHERE User="";
mysql> DELETE FROM mysql.user WHERE User="root" AND Host="" AND Password="";

Pengerasan Mysql untuk WordPress

Sebelum dikeraskan kita akan membuat database

Pengerasan database spesifik untuk wordpress sebenarnya tidak banyak dan menggunakan teknik obscurity.

CREATE DATABASE wordpress;

setelah itu buatlah user wordpress dan

mysql> CREATE USER wordpresNetBSD@localhost;
mysql> SET PASSWORD FOR wordpressNetBSD@localhost= PASSWORD("passwordyangbaik");

setelah membuat user kita tentukan previlage nya

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wordpressNetBSD@localhost IDENTIFIED BY 'passwordyangbaik';

kemudian kita flush

mysql>FLUSH PRIVILEGES

Instalasi WordPress

Meskipun wordpress 4.0.1 tersedia pada pkgsrc NetBSD namun jauh lebih baik apabila kita melakukan instalasi wordpress terbaru langsung dari source, langkah pertama adalah mendownload sourcenya, dan mendekompres berkas wordpress terbaru. Sebaiknya langkah-langkah dalam artikel ini tidak dilakukan sebagai user root, namun sebagai user biasa (webmaster)

$ cd ~
$ wget https://wordpress.org/latest.tar.gz
$ tar -zxvf latest.tar.gz

Kemudian kita salin kedalam folder webserver

$ cp -r ~/wordpress/* ~/public_html

Setelah itu kita dapat melanjutkan dengan memodifikasi wp-config agar sesuai informasinya dengan user dan database yang telah kita buat.

$ cd ~/public_html
$ cp wp-config-sample.php wp-config.php
$ vi wp-config.php

Kemudian cari informasi berikut dan rubahlah

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpress');

/** MySQL database username */
define('DB_USER', 'wordpressNetBSD');

/** MySQL database password */
define('DB_PASSWORD', 'passwordyangbaik');

Pengamanan Tambahan pada wp-config.php

Pada wp-config.php ada pengamanan tambahan, yang pertama adalah salt untuk kunci tambahan, masukanlah frase unik yang panjang untuk mengganti kata-kata ‘put your unique phrase here’

define('AUTH_KEY', 'put your unique phrase here');
define('SECURE_AUTH_KEY', 'put your unique phrase here');
define('LOGGED_IN_KEY', 'put your unique phrase here');
define('NONCE_KEY', 'put your unique phrase here');
define('AUTH_SALT', 'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT', 'put your unique phrase here');
define('NONCE_SALT', 'put your unique phrase here');

Selain salt diatas, sebaiknya prefix table untuk database mysql dibuat aneh, sehingga apabila ada SQL Injection yang sukses, penyerang membutuhkan usaha ekstra untuk mendapatkan nama tabel yang dibutuhkannya

$table_prefix  = 'wp_';

dirubah menjadi

$table_prefix  = '4d4d3h_';

Konfigurasi tambahan yang ada pada wp-config juga dapat menambah pengamanan, namun juga bisa membuat kurang nyaman pengguna. Penggunaan parameter tambahan pada wp-config ini saya sarankan bergantung pada tingkat keamanan yang mau diberikan kepada aplikasi wordpress

// rubahlah baris berikut dr false menjadi true apabila ingin membatasi user dalam  mengedit theme atau plugin

define('DISALLOW_FILE_EDIT',true);

//rubahlah baris berikut dr false menjadi true apabila ingin membatasi user dalam  menginstal theme, plugin atau update sistem

define('DISALLOW_FILE_MODS',true);

Setelah melakukan pengamanan yang dibutuhkan maka proses instalasi dapat dilanjutkan dengan cukup mengakses https://wordpressNetBSD/ dari browser, instalasi WordPress selesai 🙂

 

Leave a Reply

Your email address will not be published. Required fields are marked *