MySQL Eneterprise Firewall安裝、使用
- 安裝
注意事項
# ./bin/mysql -uroot -proot -h127.0.0.1 -P3322 mysql< share/linux_install_firewall.sql
- 一旦安裝了就會對資料庫效能產生最小呈度的影響,就算是安裝了沒啟用也是一樣
- 它無法與Query Cache同時使用,如果有用Query Cache請記得在安裝Firewall前先關閉Query Cache
安裝時同時會在資料庫裡面安裝幾個元件
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
- 建立使用者(若已有使用者就不需要)
- 透過sp_set_firewall_mode()的預存程式來進行註冊
mysql> CALL mysql.sp_set_firewall_mode('fwuser@localhost', 'RECORDING');- 切換剛剛註冊的使用者進行記錄操作
./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);- 記錄完成後,切換到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';- 切換成PROTECTING模式
mysql> CALL mysql.sp_set_firewall_mode('fwuser@localhost', 'PROTECTING');
確認狀態
mysql> SELECT MODE FROM INFORMATION_SCHEMA.MYSQL_FIREWALL_USERS WHERE USERHOST = 'fwuser@localhost';- 切換到受保護的使用者進行測試
正常的操作下:
操作行為沒有被記錄在whitelist時:
同時在error log中也會被記錄:- 查看Firewall的活動狀況
mysql> SHOW GLOBAL STATUS LIKE 'Firewall%';
Firewall_access_denied 表示有多少被拒絕的操作次數
Firewall_access_granted表示有多少合法的操作次數
Firewall_cached_entries表示whitelist 有多少筆記錄
留言
張貼留言