Mari mem-proxy database


Mungkin sudah ada di antara kita yang mengetahui tentang adanya model firewall untuk database. Kebetulan saya baru tahu hari ini. Produk ini bernama GreenSQL yang dikembangkan di bawah lisensi GPL. Berikut saya kutip preambul di web site resmi projectnya:

GreenSQL is an Open Source database firewall used to protect databases from SQL injection attacks. GreenSQL works as a proxy for SQL commands and has built in support for MySQL. The logic is based on evaluation of SQL commands using a risk scoring matrix as well as blocking known db administrative commands (DROP, CREATE, etc). GreenSQL is distributed under the GPL license.

Sehingga, dengan menggunakan GreenSQL ini, kita dapat melindungi database MySQL kita dari akses-akses yang tidak diinginkan. Ini konsep yang menarik menurut saya. Adapun arsitektur firewall GreenSQL dapat dilihat di bagian dokumentasi mereka:

Saya langsung mencoba sedikit GreenSQL ini.

  1. saya download dahulu dua file (kebetulan untuk Fedora saya), yaitu greensql-fw-0.9.6-3.1.i386.rpm dan greensql-console-0.4.6.tar.gz.
  2. saya pasang greensql-fw terlebih dahulu.
  3. saya jalankan service mysqld saya: sudo /sbin/service mysqld start
  4. di sini database mysql saya jalan di port default mysql yaitu 3306.
  5. kemudian saya jalankan konfigurasi GreenSQL: sudo /usr/sbin/greensql-create-db.sh. Dengan script ini, kita di minta untuk mendefinisikan user root dan password ke database mysql, dan juga mendefinisikan user green dan passwordnya untuk database greendb. Catatan: jangan membuat database greendb dan user green secara manual. gunakan script di atas.
  6. periksalah file /etc/greensql/greensql.conf yang akan berisi hasil definisi yang sudah kita lakukan dengan script greensql-create-db.sh sebelumnya.
  7. sekarang kita dapat jalankan service greensql: sudo /etc/init.d/greensql-fw start.
  8. selanjutnya kita dapat memasang GreenSQL Console:
    cd /var/www/html
    sudo tar xzvf /path/download/greensql-console-0.4.6.tar.gz
    sudo ln -s green-0.4.6 green
  9. sekarang kita ubah mode direktori  templates_c
    cd green
    sudo chmod 0777 templates_c/
    sudo nano config.php
    secara prinsip jika kita menggunakan nilai parameter default saat pembuatan database greendb sebelumnya, kita tidak perlu mengubah parameter dalam config.php ini. Jika memang harus diubah, silahkan isi sesuai dengan definisi kita.
  10. selanjutnya kita jalankan layanan httpd: sudo /sbin/service httpd start
  11. lalu dari web browser kita, kunjungi: http://localhost/green. Jika tidak ada masalah lagi, kita akan mendapat tampilan login. Masukan : username: admin dan password: pwd. Tampilan dashboard awal akan kita peroleh.
  12. dari dashboard ini, saya coba lihat konfiguasi Listener. Di sana telah dibuat Default Proxy yang berisi konfigurasi sebagai berikut :

    GreenSQL Listener Default Proxy

    GreenSQL Listener Default Proxy

  13. Kita coba akses dari console mysql:
    mysql -u root -h 127.0.0.1 -P 3305 -p
  14. dari prompt mysql> ketika kita coba memberikan perintah show databases, kita akan mendapatkan daftar yang kosong.
  15. Cobalah sekarang edit file /etc/greensql/mysql.conf, lalu beri  tanda komentar (#) di depan ‘show databases’. Lalu simpan.
  16. restart service greensql-fw:
    sudo /etc/init.d/greensql-fw restart
  17. kembali ke console mysql, dan coba ketik perintah show databases. Sekarang saya dapat melihat seluruh database yang ada.
  18. saya kemudian mencoba untuk memberi komentar untuk item create database, create index, dan create table pada file /etc/greensql/mysql.conf.
  19. kembali saya restart service greensql-fw.
  20. lalu saya lakukan percobaan berikut:
    mysql> create database ngantuk;
    mysql> use ngantuk;
    mysql> create table mahasiswa(nim char(8) primary key);
  21. bisa juga.
  22. lalu saya kembali GreenSQL Console di browser saya. Saya masuk ke menu Databases, dan saya tambahan database baru dengan nama ngantuk dengan proxy “Default Proxy”. Defaultnya untuk database ngantuk semua terblock. Saya pilih Blocking Mode: “Simulation Mode”
  23. lalu saya coba dari mysql console:
    mysql> create table nilai(nim char(8), nilai char(1));
  24. ternyata masih bisa dilakukan. Lalu saya kembali edit /etc/greensql/mysq.conf dan menghilangkan tanda komentar pada item create table, create database dan create index.
  25. lalu saya restart greensql-fw, dan coba dari mysql console kembali:
    mysql> create table matakuliah(kodemtk char(8));
  26. sekarang di GreenSQL console memberikan Alert bahwa ada operasi yang tidak diijinkan telah dilakukan oleh user root.

Menarik sekali. Tapi saya masih harus explorasi, dan itupun harus di waktu yang tidak tahu kapan lagi. Selamat mencoba juga.

4 thoughts on “Mari mem-proxy database

Komentar ditutup.