MySQL Eneterprise Firewall安裝、使用

  • 安裝
注意事項

  1. 一旦安裝了就會對資料庫效能產生最小呈度的影響,就算是安裝了沒啟用也是一樣
  2. 它無法與Query Cache同時使用,如果有用Query Cache請記得在安裝Firewall前先關閉Query Cache
# ./bin/mysql -uroot -proot -h127.0.0.1 -P3322 mysql< share/linux_install_firewall.sql


安裝時同時會在資料庫裡面安裝幾個元件
INFORMATION_SCHEMA.MYSQL_FIREWALL_WHITELIST
INFORMATION_SCHEMA.MYSQL_FIREWALL_USERS
mysql.firewall_users
mysql.firewall_whitelist
sp_set_firewall_mode() ->store procedure

檢查是否有啟用
mysql>SHOW GLOBAL VARIABLES LIKE 'mysql_firewall_mode';


  • 使用Firewall
剛開始啟用時,要先把使用者註冊到INFORMATION_SCHEMA.MYSQL_FIREWALL_USERS裡面,然後再啟用RECORDING模式來記錄平常這個使用者會有哪些操作,這個操作指令會被記錄在INFORMATION_SCHEMA.MYSQL_FIREWALL_WHITELIST,記錄之後就可以把它開成PROTECTING模式,它會將記錄之外的操作給排除掉,並且資料庫裡面會記錄被DENIED的有多少、被授權的有多少…等資訊。
參考網站:http://dev.mysql.com/doc/refman/5.6/en/firewall-usage.html
  1. 建立使用者(若已有使用者就不需要)

  2. 透過sp_set_firewall_mode()的預存程式來進行註冊
    mysql> CALL mysql.sp_set_firewall_mode('fwuser@localhost', 'RECORDING');

  3. 切換剛剛註冊的使用者進行記錄操作
    ./bin/mysql -ufwuser -pwang --socket=data/mysql.sock
    mysql> use wang;
    mysql> show tables;
    mysql> select * from abc;
    mysql> insert into abc values(0,'Jam','1992-09-22');
    mysql> select * from abc_test;
    mysql> show create table abc_test;
    mysql> insert into abc_test values(0);
  4. 記錄完成後,切換到root檢查剛剛的whitelist是否有被記錄到
    先確認使用者的模式
    mysql>  SELECT MODE FROM INFORMATION_SCHEMA.MYSQL_FIREWALL_USERS WHERE USERHOST = 'fwuser@localhost';


    檢查Whitelist,確認所有操作都有被記錄到就可以切換成保護模式了
    mysql>  SELECT RULE FROM INFORMATION_SCHEMA.MYSQL_FIREWALL_WHITELIST WHERE USERHOST = 'fwuser@localhost';

  5. 切換成PROTECTING模式
    mysql>  CALL mysql.sp_set_firewall_mode('fwuser@localhost', 'PROTECTING');


    確認狀態
    mysql>   SELECT MODE FROM INFORMATION_SCHEMA.MYSQL_FIREWALL_USERS WHERE USERHOST = 'fwuser@localhost';

  6. 切換到受保護的使用者進行測試
    正常的操作下:


    操作行為沒有被記錄在whitelist時:


    同時在error log中也會被記錄:

  7. 查看Firewall的活動狀況
    mysql> SHOW GLOBAL STATUS LIKE 'Firewall%';


    Firewall_access_denied 表示有多少被拒絕的操作次數
    Firewall_access_granted表示有多少合法的操作次數
    Firewall_cached_entries表示whitelist 有多少筆記錄

留言

這個網誌中的熱門文章

【工作筆記】SQL Timeout追蹤

MySQL監控軟體MEM及PMM介紹

MySQL Router 設定檔說明