Home > Firebird > Berlindung di belakang SYSDBA :D

Berlindung di belakang SYSDBA :D

May 19, 2012

Beberapa waktu yang lalu sy pernah menulis bagaimana cara Menembus pertahanan database Firebird yang diproteksi menggunakan SYSDBA sebagai tamengnya :D, nah biar imbang sekarang kita akan bahas bagaimana langkah-langkah pembuatannya.

Tool yang digunakan juga masih sama yaitu IBExpert personal edition (free), oke langsung saja kita mulai :).

1. Persiapkan database yang akan diproteksi

Untuk contoh disini sy menggunakan database dg nama db_sample.fdb yang di tempatkan di drive C:\

Berikut langkah-langkah untuk mendaftarkan database firebird ke IBExpert.

a. Klik menu Database -> Register Database

Kemudian login menggunakan user default Firebird yaitu SYSDBA dengan password masterkey.

Untuk versi server tinggal disesuaikan dengan versi Firebird yang terinstall.

b. Aktifkan database sample dengan cara klik ganda node DB SAMPLE

2. Buat user baru yang akan kita jadikan sebagai pengganti SYSDBA, misal K4M4R82.

User baru ini akan kita berikan hak akses untuk menghakses semua tabel dan obej-objek lain yang diperlukan.

Berikut langkah-langkahnya :

a. Klik menu Tools -> User Management, kemudian login menggunakan user SYSDBA dan password masterkey.

b. Tambahkan user baru dengan mengklik tombol Add

Kita akan menambahkan user baru dengan nama K4M4R82 dan password rahasia.

Jika berhasil akan terlihat seperti berikut :

3. Mengatur hak akses user

IBExpert mempunyai fitur untuk mengatur hak akses user, sayangnya fitur ini tidak aktif untuk versi personal edition (free), jadi kita akan mencoba solusi lain yaitu dengan membuat stored procedure dengan nama GRANT_USER.

Berikut scriptnya :

SET TERM ^ ;

CREATE OR ALTER PROCEDURE GRANT_USER (
    user_name varchar(10))
as
declare variable table_name varchar(50);
BEGIN
  -- reset hak akses
  DELETE FROM rdb$user_privileges
  WHERE rdb$user = :user_name AND rdb$privilege IN ('I', 'U', 'D', 'S') AND rdb$user_type = 8 AND rdb$object_type = 0;

  FOR -- ambil informasi nama-nama tabel
        SELECT RDB$RELATION_NAME
        FROM RDB$RELATIONS
        WHERE RDB$SYSTEM_FLAG=0 INTO :table_name
    DO
    BEGIN

        -- INSERT
        INSERT INTO rdb$user_privileges (rdb$user, rdb$grantor, rdb$privilege, rdb$grant_option, rdb$relation_name, rdb$user_type, rdb$object_type)
        VALUES (:user_name, 'SYSDBA', 'I', 1, :table_name, 8, 0);

        -- UPDATE
        INSERT INTO rdb$user_privileges (rdb$user, rdb$grantor, rdb$privilege, rdb$grant_option, rdb$relation_name, rdb$user_type, rdb$object_type)
        VALUES (:user_name, 'SYSDBA', 'U', 1, :table_name, 8, 0);

        -- DELETE
        INSERT INTO rdb$user_privileges (rdb$user, rdb$grantor, rdb$privilege, rdb$grant_option, rdb$relation_name, rdb$user_type, rdb$object_type)
        VALUES (:user_name, 'SYSDBA', 'D', 1, :table_name, 8, 0);

        -- SELECT
        INSERT INTO rdb$user_privileges (rdb$user, rdb$grantor, rdb$privilege, rdb$grant_option, rdb$relation_name, rdb$user_type, rdb$object_type)
        VALUES (:user_name, 'SYSDBA', 'S', 1, :table_name, 8, 0);
    END

    INSERT INTO rdb$user_privileges (rdb$user, rdb$grantor, rdb$privilege, rdb$grant_option, rdb$relation_name, rdb$user_type, rdb$object_type)
    VALUES (:user_name, 'SYSDBA', 'S', 1, 'RDB$RELATIONS', 8, 0);
END
^

SET TERM ; ^

Untuk menjalankan script diatas kita akan menggunakan editor Script Executive (CTRL+F12)

4. Eksekusi stored procedure grant_user

Setelah langkah sebelumnya selesai kita tinggal panggil stored procedure grant_user seperti berikut :

EXECUTE PROCEDURE grant_user('K4M4R82')

5. Menambahkan role ‘SYSDBA’

Informasi role tersimpan di dalam tabel sistem yang bernama rdb$roles, sehingga untuk menambahkannya kita bisa menggunakan perintah INSERT yang sudah biasa kita gunakan.

INSERT INTO rdb$roles (rdb$role_name, rdb$owner_name, rdb$system_flag)
VALUES ('SYSDBA', 'K4M4R82', 0)

6. Disconnect dari database sample

7. Aktifkan kembali database sample dengan cara klik ganda node DB SAMPLE

Jika muncul peringatan berikut

berarti database kita sudah terlindungi oleh SYSDBA 🙂

8. Terakhir kita coba login ulang dengan menggunakan user K4M4R82

Selamat MENCOBA 🙂

  1. Eddie
    May 23, 2012 at 3:47 pm

    mksh mas bro..dicoba dulu

    • May 26, 2012 at 10:33 am

      Oke om sipp 🙂

  2. melgi
    May 29, 2012 at 9:33 pm

    bang ada contoh program absensi ga dengan menggunakan VB dan data bases dbms MySql

    • May 30, 2012 at 8:52 am

      Ada sih punya kantor, kayaxnya harus via proposal dulu baru dpt contohnya 😀

  3. maswin
    August 30, 2012 at 9:38 am

    mas bro, boleh tanya ga…apa ada cara supaya bisa baca db sql lewat firebird ib expert??

    saya menggunakan sql server 2005, apakah bisa di baca database2 tersebut yang ada di sql lewat ibexpert??

    tolong bantuannya mas bro kalo ada caranya…

    • October 6, 2012 at 12:58 pm

      Klo untuk sql server sudah ada tool khususnya yaitu SQL Server Management Studio

  4. Yudi
    October 6, 2012 at 7:43 am

    bang coba dong kasih tutor dengan menggunakan tools lain, misal Firebird maestro, flame robin, atau yg lainnya, sbb g tau knp di laptop sy ibexpert-nya g bisa

    • Eddie
      October 15, 2012 at 9:27 am

      ga bisanya gmn om??dlu laptop sy juga da kasus, jadi ibexpt running normal tapi gak bisa buka database,,.ternyata caranya untuk server jgn diisi localhost, tapi diisi remote kemudian servername diisi 127.0.0.1 (sama aja dgn localhost),,dan ternyata bisa

  5. agung
    December 9, 2012 at 2:49 pm

    Om sy dah coba tutor diatas,, tapi procedure2 yang telah sy buat sebelumnya kok g bisa dijalankan ya??

    • December 12, 2012 at 8:57 am

      Ya alasannya karna user yg digunakan untuk menggantikan user SYSDBA bukan user ADMIN, sehingga harus diberi hak akses secara manual untuk mengakses store procedurenya

  6. agung
    December 14, 2012 at 7:24 am

    gmn script utk buat akses store procedurex om?? Dah coba utak atik masih ndak bisa..

    • December 15, 2012 at 4:24 pm

      Om edit script store procedure GRANT_USER diatas, trus tambahkan kode berikut :

      -- reset hak akses store procedure
      DELETE FROM rdb$user_privileges
      WHERE rdb$user = :user_name AND rdb$privilege = 'X' AND rdb$user_type = 8 AND rdb$object_type = 5;
      
      FOR -- ambil informasi nama-nama store procedure
          -- deklarsikan terlebih dulu variabel sp_name
          SELECT rdb$procedure_name FROM rdb$procedures : INTO :sp_name
      Do
      BEGIN
          INSERT INTO rdb$user_privileges (rdb$user, rdb$grantor, rdb$privilege, rdb$relation_name, rdb$user_type, rdb$object_type)
          VALUES (:user_name, 'SYSDBA', 'X', :sp_name, 8, 5);
      END
      
      • agung
        December 16, 2012 at 5:42 pm

        mantap om,, oiya saat q pasang dikomputer lain kok ndak bisa knp ya om?? katax username n password ndak valid..

      • January 2, 2013 at 11:22 am

        Yupss sama kaya Mas Agung, db di pindah di kompi lain kemudian di open dengan user & password yg telah di rubah dari komputer sebelumnya tidak bisa. User & pass tidak valid.
        adakah solusi biar bisa di buka di kompi yang lain?

  7. January 2, 2013 at 11:26 am

    User dan Password database firebird tersimpan di file security2.fdb, jadi cara termudahnya adalah dg menimpa file security2.fdb yg ada di komputer develop ke komputer klien

    File security2.fdb tersimpan di folder instalasi firebird.

    • January 2, 2013 at 2:10 pm

      iya sementara sudah saya coba, dari coding di atas sy eksekusi ke komputer tujuan, atau dengan cara file security2.fdb dari komputer develop di timpakan ke komputer tujuan. Terimakasih Om Admin .. Sukses buat Om Admin .. 😀

      • January 2, 2013 at 5:20 pm

        Oke om sama2x 🙂

  8. nano
    March 18, 2013 at 12:37 pm

    Pak saya pake cara diatas gak bisa, sysdba gak kebuka, ini linknya
    http://www.4shared.com/rar/777eLN_f/xpressgl.html
    bagi-bagi ilmunya ya pak, makasih ….

    • March 19, 2013 at 8:37 am

      Cara di atas ? Ya jelas enggak nyambung om, seharusnya om pake cara yang di sini.

      Sy udah coba untuk membuka database xpressgl.fdbnya, hasilnya bisa dilihat disini.

      • nano
        March 19, 2013 at 3:14 pm

        hehe mantep pak, makasih

        • March 20, 2013 at 10:11 am

          Oke om, senang bisa membantu 🙂

  9. shifan
    March 20, 2013 at 10:31 pm

    Passssa mannnntap!!!! tolong diperbanyak tutornya firebird dng vb net. butuh referensi belajar yang banyak…trims tutuornya om.

    • March 21, 2013 at 10:00 am

      Sama2x om, senang bisa membantu 🙂

  10. Andi
    March 28, 2013 at 11:07 pm

    om numpang nanya om dari newby…..knapa ya pas wktu run di delphi pasti muncul pesan iebclient error…..database not assigned….saya pake ibexpert dan firebird makasih atas jawabannya….

  11. May 4, 2013 at 10:55 pm

    Bagaimana cara mengembalikan security seperti semula? apa harus menghapus role SYSDBA?

    • May 5, 2013 at 5:21 am

      Iya om

  12. nando
    May 14, 2013 at 10:12 pm

    mau tanya om, kasusnya gini om, ngepatch program dan databasenya (fdb) nya sama pihak lain, bagaimana caranya kita buat database yang baru ya om, dan apa perlu juga firebirdnya di upgrade dan gimana caranya sebelumnya program ini pake 1.5, makasih ya om..

  1. No trackbacks yet.
Comments are closed.