您好,登錄后才能下訂單哦!
1. 禁止MySql以管理員賬號權限運行
MySql應該使用非管理員賬號運行,以普通賬戶安全運行mysqld
加固方法:在my.cnf配置文件中配置user=mysql
2. 設置root用戶口令并修改登錄名,且不存在空密碼賬戶
修改root用戶密碼,在MySql控制臺中執行:
> set password for 'root'@'localhost'=password('new_password'); #實際操作中,只需將上面new_password換成實際的口令即可
為了更有效的改進root用戶的安全性,就是為其改名。需要更新表用戶中的mysql數據庫。在控制臺中執行:
> use mysql; > update user set user="another_username" where user="root"; > flush privileges;
然后,可用通過$ mysql -u another_username -p 訪問mysql控制臺了。
數據庫中所有用戶都應該配置密碼,通過以下語句可以查詢是否有空密碼賬戶:
> select * from mysql.user where user="";
3. 配置合適的密碼強度,最長使用期限小于90天
數據庫用戶Miami復雜性包括長度、大小寫和特殊字符。
加固方法:添加以下配置行到全局配置
plugin-load = validate_password.so #加載密碼強度驗證插件 validate_password_length = 14 #密碼長度最小為14,默認為8 validate_password_mixed_case_count = 1 #至少包含的小寫字母個數和大寫字母個數 validate_password_number_count = 1 #至少包含的數字個數 validate_password_special_char_count = 1 #至少包含的特殊字符個數 validate_password_policy = MEDIUM #密碼強度等級,有三種:0/LOW、1/MEDIUM、2/STRONG,默認為MEDIUM
關于密碼強度的三種等級,要求如下:
Policy Tests Performed 0 or LOW Length 1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters 2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file
用戶密碼過期時間小于90天,在控制臺執行:
> set global default_password_lifetime=90;
4. 降低用戶的數據庫特權,只有管理員有完整的數據庫訪問權限
MySql數據庫中mysql.user和mysql.db表列出了可以授權(或拒絕)給mysql用戶的各種權限,通常,這些特權不應該對每個mysql用戶都可用,而且通常只保留給管理員用戶。
加固方法:審計每項特權授予的用戶,對于非管理用戶,使用revoke語句來適當刪除權限。
# mysql.user表中的特權有: file_priv:表示是否允許用戶讀取數據庫所在主機的本地文件; Process:表示是否允許用戶查詢所有用戶的命令執行信息; Super_priv:表示用戶是否有設置全局變量,管理員調試等高級別權限; Shutdown_priv:表示用戶是否可以關閉數據庫; Create_user_priv:表示用戶是否可以創建或刪除其他用戶; Grant_priv:表示用戶是否可以修改其他用戶權限
查詢正在執行的sql語句:
> show processlist; # 或者 > use information_schema; > select * from PROCESSLIST where info is not null;
使用如下命令查看擁有對應權限的數據庫賬號:
select host,user from mysql.user where File_priv='Y';
如果存在非管理員用戶,使用如下命令進行權限回收:
revoke file on *.* from 'mysql';
5. 禁止或限制遠程訪問,確保特定主機才擁有訪問權限
> grant all on *.* to 'root'@'%';
上面這個授權,允許root用在所有主機上對數據庫的所有執行權限,要限制特定主機可以采用:
> grant all on *.* to 'root'@'localhost'; > grant all on *.* to 'root'@'hostname_ip'; #可以是ip或者主機名
如果,要取消在某臺主機上的訪問權限,可以采用:
> revoke all on *.* from 'root'@'hostname_ip';
如果,只授權部分權限,可以采用:
> grant select on mydb.* to 'someuser'@'hostname_ip';
6. 配置MySql日志便于審計
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。