- Multiple Binding Address Mysql
- Grant Access for some IP
- Pasang firewall
Perlu ditekankan jika kita membuka port MySQL untuk umum, maka harus ada firewall untuk membatasinya. Jangan pernah sekali-sekali membukanya tanpa memasang firewall karena sangat berbahaya.
[mysqld]
#
# * 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
#
Yang saya beri warna merah adalah yang harus dirubah. Set menjadi
bind-address = 0.0.0.0
Pastikan 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’
Lakukan GRANT ACCESS tersebut berulang-ulang dengan IP yang berbeda sesuai kebutuhan anda.
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.
## 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
Atau
## 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]
#
# * 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
#
Setelah selesai maka simpan file dan close. Restart service mysql
/etc/init.d/mysql restart