MySQL安全類設置

本文介紹的所有插件功能均基於MySQL5.7(5.7.22和5.7.28),操作系統環境均爲Windows Server2008R2,同樣適用於linux操作系統,只需要將插件後綴更改即可。

啓用MySQL密碼複雜度策略:
先決條件:先檢查MySQL的版本,是否大於5.6以上,且MySQL的basedir下的lib\plugin目錄中存在validate_password.dll的dll文件,linux下則爲.so文件

處理辦法:


1、查看是否安裝密碼複雜度的相關插件,查看輸出是否有**validate_password**爲名的行

show plugins;

2、安裝、卸載插件

install plugin validate_password soname 'validate_password.dll'
uninstall plugin validate_password;

3、查看默認策略

show variables like  'validate_password%';

4、參數說明:
validate_password_policy 表示密碼策略,默認爲MEDIUM,有三個取值範圍:
0 或者LOW 表示只需要符合密碼長度即可 
1 或者MEDIUM 表示在滿足LOW策略的同時,還需要滿足至少有一個數字,一個大小寫字母和特殊字符的設置
2 或者STRONG 表示滿足MEDIUM策略的同時,密碼不能存放在字典文件中
validate_password_length 最小程度 
validate_password_mixed_case_count  最少需要擁有的大小寫字母數(同時擁有大寫和小寫字母) 
validate_password_number_count    最少需要擁有的數字個數
validate_password_special_char_count  最少需要擁有的特殊字符數

啓用MySQL登陸失敗處理策略
先決條件:MySQL的basedir\lib\plugin目錄中存在connection_control.dll的dll文件,linux下則爲.so文件
處理辦法:

1、查看是否安裝密碼複雜度的相關插件,查看輸出是否有**connection_control**爲名的行

show plugins;

2、安裝、卸載插件

install plugin connection_control soname 'connection_control.dll'
uninstall plugin connection_control;

3、查看默認策略

show variables like  'connection%';

4、參數說明:

connection_control_failed_connections_threshold  允許失敗次數,默認爲3次
connection_control_max_connection_delay          鎖定的最長時間
connection_control_min_connection_delay          鎖定的最短時間,單位爲毫秒,默認值爲15、臨時設置:

set global connection_control_failed_connections_threshold = 5;
set global connection_control_min_connection_delay= 600000;

需要注意的是:若需要重啓後繼續生效,將此兩個值寫入配置文件中即可。

超時設置

處理辦法:

查看超時設置:show global variables like '%timeout%';
1、臨時生效:

set global wait_timeout=600;
set global interactive_timeout=600;

2、永久生效寫入配置文件即可

啓用密碼有效期設置

處理辦法:

1、針對全局生效的密碼有效期設置,需要在配置文件中加入default_password_lifetime=90配置,或者臨時生效可以設置全局參數

 set global default_password_lifetime=90;

2、針對單用戶設置密碼有效期

alter user testuser@ "%" password expire interval 30 day

3、禁用密碼有效期設置
alter user testuser@ "%" password expire never;

//將用戶的有效期調整爲默認設置值
alter user testuser@"%" password expire default;

MySQL資源限制

資源限制通過mysql.user中的max_questions、max_updates、max_connections字段進行查看
1、設置時間段(一小時)內用戶的最大查詢數量

grant all on *.* to test@ '%' with max_queries_per_hour 1000

2、設置時間段(一小時)內用戶的最大更新數量

grant all on *.* to test@ '%' with max_updates_per_hour 300

3、設置時間段(一小時)內用戶累計能打開的最大連接數
需要注意的是:此數爲累加數,一旦達到最大值,將無法打開新連接

grant all on *.* to test@ '%' with max_connections_per_hour 3000;


4、設置用戶最大連接數
需要注意的是:此數同max_connections_per_hour不同,max_connections爲累加值,及時在一小時內有用戶退出,其也不能再建立連接,
但是max_user_connections 則不同,可以理解爲時間段內同時連接的數量,有一個連接斷開,則可以再建立一個連接。

grant all on *.* to test@'%' with max_user_connections 300


5、清除計數器內的連接數記錄

flush user_resources;

MySQL審計功能

參考:https://mariadb.com/kb/en/library/mariadb-audit-plugin/
企業版自帶審計功能,社區版需要第三方提供,主要有McAfee MySQL Audit plugin、MariaDB Audit Plugin。
McAfee使用的人較多,但從官網上似乎只能找到linux版的審計插件,無法在windows下使用。
https://bintray.com/mcafee/mysql-audit-plugin/release
MariaDB提供windows下的審計插件。
https://downloads.mariadb.com/MariaDB/mariadb-10.3.20/winx64-packages/

1、安裝插件
install plugin server_audit soname 'server_audit.dll'

2、設置審計參數
'''
//開啓審計功能
set global server_audit_logging=on
//設置審計的動作,記錄連接登入和登出、DDL語言的操作
set global server_audit_events='CONNECT,QUERY_DDL'
//審計文件的存放路徑,創建並授權(我這裏測試的環境是5.7.28上面使用的MariaDB-10.3.20-winX64環境中的server-audit.dll,修改默認路徑後,其會自動創建對應的文件,默認存在data/server-audit.log)
set global server_audit_file_path=/data/mysql/audit/server-audit.log
//記錄特定用戶的操作
set global server_audit_incl_users = test ;
//記錄除特定用戶外的操作
set global server_audit_excl_users = root;
//設置單個文件的大小
set global server_audit_file_rotate_size=200000000
//設定審計日誌的文件數量,爲0則不輪轉
set global server_audit_file_rotations=200
//開啓日誌輪轉
set global server_audit_file_rotate_noe=on
//審計日誌記錄項
[時間戳記][服務器主機][用戶名][主機][連接ID][查詢ID][操作類型][數據庫][對象][重新編碼]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章