Saat ini saya memiliki sebuah server berbasis Ubuntu Server 12.04 yang terhubung dengan beberapa server lainnya untuk berintegrasi database, sebagian server adalah FreeBSD. Secara default mysql hanya akan meng-allow koneksi database dari localhost atau ip 127.0.0.1. Tentu hal ini akan menghalangi integrasi database dengan server lain, meskipun sudah di grant access tapi jika binding nya hanya ditujukan kepada localhost ya percuma.
Sebenarnya sangat riskan sekali jika binding ini dibuka untuk umum, tapi tidak mungkin juga jika saya egois untuk tidak membiarkan server-server lain berintegrasi database dengan yang lainnya. Lalu bagaimana solusinya? Metode yang saya terapkan adalah :
- Multiple Binding Address Mysql
- Grant Access for some IP
- Pasang firewall
Langkah pertama, buka file /etc/mysql/my.cnf
[mysqld]Yang saya beri warna merah adalah yang harus dirubah. Set menjadi
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
bind-address = 0.0.0.0Pastikan tidak ada tanda # diawal baris. Jika sudah maka simpan dan close. Restart service mysql
service mysql restart
Langkah kedua adalah adalah lakukan GRANT ACCESS kepada beberapa IP Address tertentu.
mysql> GRANT ALL ON nama_database.* TO 'user'@'host' IDENTIFIED BY 'password'
Langkah ketiga adalah memasang firewall. Pastikan hanya IP-IP atau host-host tertentu yang berhak berintegrasi dengan server mysql tersebut. Saya menggunakan iptables sebagai firewall. Blok semua trafik mysql kecuali yang datang dari IP 10.1.1.127, 10.1.1.128, 10.1.1.129.
Atau## Blok semua koneksi ke port 3306 ##
/sbin/iptables -A INPUT -p tcp --dport 3306 -j DROP
### Sekarang, allow 10.1.1.127, 10.1.1.128, and 10.1.1.129 ###
/sbin/iptables -A INPUT -p tcp -d 10.1.1.127 --dport 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -d 10.1.1.128 --dport 3306 -j ACCEPT
/sbin/iptables -A INPUT -p tcp -d 10.1.1.129 --dport 3306 -j ACCEPT
## Blok semua koneksi ke 3306 kecuali untuk tiga ip ini##
/sbin/iptables -A INPUT -p tcp --dport 3306 ! -d 10.1.1.127 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 3306 ! -d 10.1.1.128 -j DROP
/sbin/iptables -A INPUT -p tcp --dport 3306 ! -d 10.1.1.129 -j DROP
Sebagai pengamanan tambahan supaya port mysql tidak terlihat kalau difilter, anda bisa merubah default port MySQL (3306) menjadi berapapun yang anda mau. Konfigurasi ini ada didalam file /etc/mysql/my.cnf
[mysqld]Setelah selesai maka simpan file dan close. Restart service mysql
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306 <--------------- Rubah disini
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
/etc/init.d/mysql restart
Saya rasa cukup untuk artikel tentang Multiple Binding Address MySQL Server di Linux Ubuntu Server, jika ada pertanyaan silahkan di tuliskan dikomentar. Dengan senang hati saya akan membantu permasalahan yang anda hadapi.
Semoga bermanfaat,
Salam Penguin :)
No comments:
Post a Comment