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