真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql服務(wù)器怎么安全 mysql 服務(wù)

如何讓新安裝的MySQL數(shù)據(jù)庫(kù)變得更安全

在Unix(Linux)上,在按照手冊(cè)的指令安裝好MySQL后,你必須運(yùn)行mysql_install_db腳本建立包含授權(quán)表的mysql數(shù)據(jù)庫(kù)和初始權(quán)限。在Windows上,運(yùn)行分發(fā)中的Setup程序初始化數(shù)據(jù)目錄和mysql數(shù)據(jù)庫(kù)。假定服務(wù)器也在運(yùn)行。 當(dāng)你第一次在機(jī)器上安裝MySQL時(shí),mysql數(shù)據(jù)庫(kù)中的授權(quán)表是這樣初始化的: 你可以從本地主機(jī)(localhost)上以root連接而不指定口令。root用戶(hù)擁有所有權(quán)限(包括管理權(quán)限)并可做任何事情。(順便說(shuō)明,MySQL超級(jí)用戶(hù)與Unix超級(jí)用戶(hù)有相同的名字,他們彼此毫無(wú)關(guān)系。) 匿名訪問(wèn)被授予用戶(hù)可從本地連接名為test和任何名字以test_開(kāi)始的數(shù)據(jù)庫(kù)。匿名用戶(hù)可對(duì)數(shù)據(jù)庫(kù)做任何事情,但無(wú)管理權(quán)限。 從本地主機(jī)多服務(wù)器的連接是允許的,不管連接的用戶(hù)使用一個(gè)localhost主機(jī)名或真實(shí)主機(jī)名。如: % mysql -h localhost test % mysql -h pit.snake點(diǎn)虐 test 你以root連接MySQL甚至不指定口令的事實(shí)只是意味著初始安裝不安全,所以作為管理員的你首先要做的應(yīng)該是設(shè)置root口令,然后根據(jù)你設(shè)置口令使用的方法,你也可以告訴服務(wù)器重載授權(quán)表是它知道這個(gè)改變。(在服務(wù)器啟動(dòng)時(shí),它重載表到內(nèi)存中而可能不知道你已經(jīng)修改了它們。) 對(duì)MySQL 3.22和以上版本,你可以用mysqladmin設(shè)置口令: % mysqladmin -u root password yourpassword 對(duì)于MySQL的任何版本,你可以用mysql程序并直接修改mysql數(shù)據(jù)庫(kù)中的user授權(quán)表: % mysql -u root mysql mysqlUPDATE user SET password=PASSWORD("yourpassword") WHERE User="root"; 如果你有MySQL的老版本,使用mysql和UPDATE。

目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、網(wǎng)站托管運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、峨眉山網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

Mysql在linux服務(wù)器上的安全設(shè)置

mysql 部分版本(也可能是全部……)允許本地用戶(hù)進(jìn)行無(wú)密碼無(wú)用戶(hù)名的本地登錄。

這個(gè)只允許本地的。

可以把這個(gè)無(wú)密碼用戶(hù)禁用或者干脆刪掉,怎么操作就不知道了。我以前裝完 mysql ,用 phpmyadmin 登錄后看到過(guò)。

如何做好MySQL安全策略

摘至網(wǎng)頁(yè)鏈接

常見(jiàn)Mysql配置文件:linux系統(tǒng)下是my.conf,windows環(huán)境下是my.ini;

數(shù)據(jù)庫(kù)整體安全需求:機(jī)密性、完整性、可用性;

下面以mysql 5.7版本為例,介紹mysql常見(jiàn)的安全策略、配置、加固方式等等,有些策略可能只針對(duì)Linux操作系統(tǒng),更多策略可以參考CIS Mysql Benchmark相關(guān)文檔:

1、操作系統(tǒng)級(jí)別安全配置

1.1不要將數(shù)據(jù)庫(kù)放在系統(tǒng)分區(qū)

Windows系統(tǒng):直接檢查是否將數(shù)據(jù)庫(kù)放置在C盤(pán)。

Linux系統(tǒng):

在終端連接上mysql數(shù)據(jù)庫(kù),執(zhí)行如下命令:

show variables where variable_name = 'datadir';

然后返回shell命令行:

df -h datadir

其中datadir是上一條命令的返回值。

上述命令的返回值不應(yīng)是/、/var、/usr

1.2使用專(zhuān)用的最小權(quán)限賬號(hào)運(yùn)行mysql數(shù)據(jù)庫(kù)進(jìn)程

Windows系統(tǒng):直接打開(kāi)任務(wù)管理器,查看運(yùn)行mysql進(jìn)程的操作系統(tǒng)賬號(hào),不能為administrator賬號(hào)。

Linux系統(tǒng):

Shell命令行運(yùn)行如下命令:

ps -ef | grep mysql

查看mysql服務(wù)的運(yùn)行賬號(hào)是否為root或其他高權(quán)限賬號(hào),如果是的,則需要?jiǎng)?chuàng)建一個(gè)非管理員專(zhuān)用賬號(hào)來(lái)運(yùn)行mysql服務(wù)。

1.3禁止使用mysql命令行歷史記錄

Linux系統(tǒng):

執(zhí)行如下命令:

find / -name ".mysql_history"

查看是否存在mysql的歷史命令記錄文件,如果存在,則需要進(jìn)行如下加固:

(1)刪除.mysql_history文件;

(2)設(shè)置環(huán)境變量MYSQL_HISTFILE為/dev/null,并添加到shell的初始化腳本中,創(chuàng)建mysql_history到/dev/null的鏈接:

ln -s /dev/null $HOME/.mysql_history

1.4?確保MYSQL_PWD環(huán)境變量未設(shè)置敏感信息

Windows系統(tǒng)下進(jìn)入cmd命令行,使用如下命令:

Set

查看是否設(shè)置了環(huán)境變量MYSQL_PWD。

Linux系統(tǒng)下使用如下命令:

grep MYSQL_PWD /proc/*/environ

查看MYSQL_PWD環(huán)境變量是否設(shè)置了敏感信息。

確認(rèn)那個(gè)配置文件或腳本設(shè)置了MYSQL_PWD環(huán)境變量。

2、安裝

2.1使用數(shù)據(jù)庫(kù)專(zhuān)用服務(wù)器

使用專(zhuān)用的服務(wù)器安裝mysql服務(wù)可以減少mysql服務(wù)的攻擊面,盡量卸載或刪除操作系統(tǒng)上的不必要的應(yīng)用或服務(wù),減少其他應(yīng)用的安裝可能給mysql的運(yùn)行帶來(lái)的安全風(fēng)險(xiǎn)。

2.2?不要復(fù)用數(shù)據(jù)庫(kù)賬號(hào)

運(yùn)行mysql服務(wù)的操作系統(tǒng)賬號(hào)不要用來(lái)運(yùn)行其他應(yīng)用或服務(wù),這樣可以避免其他應(yīng)用或服務(wù)器被攻擊給mysql服務(wù)帶來(lái)影響。

2.3?歷史命令行密碼設(shè)置為不可見(jiàn)

使用如下命令:

mysql -u admin -p password

連接mysql數(shù)據(jù)庫(kù)服務(wù),退出后查看歷史命令,確認(rèn)password是否為明文。

建議使用如下命令方式登錄:

(1)先輸入mysql -u admin -p

(2)根據(jù)命令行提示輸入密碼;

而不要在一整條命令中輸入密碼。

另外要控制mysql配置文件訪問(wèn)權(quán)限。

3、文件權(quán)限控制

3.1?控制數(shù)據(jù)目錄的訪問(wèn)權(quán)限

數(shù)據(jù)目錄是mysql數(shù)據(jù)庫(kù)存放的位置,在mysql命令行界面下執(zhí)行如下命令:

show variables where variable_name = 'datadir';

在終端命令行下執(zhí)行如下命令:

ls -l datadir/.. | egrep "^d[r|w|x]{3}------\s*.\s*mysql\s*mysql\s*\d*.*mysql"

其中datadir是第一條命令的執(zhí)行結(jié)果

如果存在問(wèn)題,linux環(huán)境下在終端執(zhí)行如下命令進(jìn)行加固:

chmod 700 datadir

chown mysql:mysql datadir

3.2?控制二進(jìn)制日志文件的權(quán)限

mysql的運(yùn)行會(huì)產(chǎn)生很多日志,例如二進(jìn)制日志、錯(cuò)誤日志、慢查詢(xún)?nèi)罩镜鹊?,Mysql命令行下執(zhí)行如下命令:

show variables like 'log_bin_basename';

在終端命令行執(zhí)行如下命令:

ls log_bin_basename.*

對(duì)于發(fā)現(xiàn)的每一個(gè)文件,執(zhí)行如下命令:

ls -l log_bin_basename.nnnnn | egrep "^-[r|w]{2}-[r|w]{2}----\s*.*$"

根據(jù)輸出確認(rèn)日志文件的權(quán)限設(shè)置是否存在問(wèn)題。

對(duì)于每個(gè)日志文件,修改其權(quán)限和屬組如下:

chmod 660 log file

chown mysql:mysql log file

3.3?控制錯(cuò)誤日志文件的權(quán)限

Mysql命令行下執(zhí)行如下命令:

show variables like 'log_error';

在終端命令行執(zhí)行如下命令:

ls log_error.*

對(duì)于發(fā)現(xiàn)的每一個(gè)文件,執(zhí)行如下命令:

ls -l log_error | egrep "^-[r|w]{2}-[r|w]{2}----\s*.*$"

根據(jù)輸出確認(rèn)日志文件的權(quán)限設(shè)置是否存在問(wèn)題。

對(duì)于每個(gè)日志文件,修改其權(quán)限和屬組如下:

chmod 660 log file

chown mysql:mysql log file

3.4控制慢查詢(xún)?nèi)罩疚募臋?quán)限

Mysql命令行下執(zhí)行如下命令:

show variables like 'slow_query_log_file';

在終端命令行執(zhí)行如下命令:

ls slow_query_log_file.*

對(duì)于發(fā)現(xiàn)的每一個(gè)文件,執(zhí)行如下命令:

ls -l slow_query_log_file | egrep "^-[r|w]{2}-[r|w]{2}----\s*.*$"

根據(jù)輸出確認(rèn)日志文件的權(quán)限設(shè)置是否存在問(wèn)題。

對(duì)于每個(gè)日志文件,修改其權(quán)限和屬組如下:

chmod 660 log file

chown mysql:mysql log file

3.5控制通用日志文件的權(quán)限

Mysql命令行下執(zhí)行如下命令:

show variables like 'general_log_file';

在終端命令行執(zhí)行如下命令:

ls general_log_file.*

對(duì)于發(fā)現(xiàn)的每一個(gè)文件,執(zhí)行如下命令:

ls -l general_log_file | egrep "^-[r|w]{2}-[r|w]{2}----\s*.*$"

根據(jù)輸出確認(rèn)日志文件的權(quán)限設(shè)置是否存在問(wèn)題。

對(duì)于每個(gè)日志文件,修改其權(quán)限和屬組如下:

chmod 660 log file

chown mysql:mysql log file

3.6控制審計(jì)日志文件的權(quán)限

Mysql命令行下執(zhí)行如下命令:

show global variables where variable_name = ?'audit_log_file';

在終端執(zhí)行如下命令:

ls -l audit_log_file | egrep "^-rw[-x]rw[-x][-r][-w][-x][ \t]*[0-9][ \t]*mysql[

\t]*mysql.*$"

根據(jù)輸出確認(rèn)日志文件的權(quán)限設(shè)置是否存在問(wèn)題。

對(duì)于每個(gè)日志文件,修改其權(quán)限和屬組如下:

chmod 660 audit_log_file

chown mysql:mysql audit_log_file

4、通用安全

4.1安裝最新的補(bǔ)丁

在mysql命令行下查詢(xún)MySQL的版本:

SHOW VARIABLES WHERE Variable_name LIKE "version";

確認(rèn)是否由需要安裝的補(bǔ)丁包,如果有請(qǐng)安裝。

4.2?刪除test數(shù)據(jù)庫(kù)

Mysql數(shù)據(jù)庫(kù)默認(rèn)安裝好后,存在一個(gè)名為test的數(shù)據(jù)庫(kù),如果存在,請(qǐng)執(zhí)行如下命令刪除:

Drop database “test”

4.3?確保讀取本地文件的參數(shù)設(shè)置為失效

Mysql命令行下,使用如下命令:

SHOW VARIABLES WHERE Variable_name = 'local_infile';

查看結(jié)果是否為OFF。

如果該命令為ON,則數(shù)據(jù)庫(kù)用戶(hù)可以通過(guò)LOAD DATA INFILE 或者?SELECT local_file?讀取到數(shù)據(jù)庫(kù)所在操作系統(tǒng)本地的文件,在這種情況下,需要在mysql配置文件中新增一行:

Local-infile=0;

然后重啟數(shù)據(jù)庫(kù)服務(wù)。

5、權(quán)限配置

5.1控制可以訪問(wèn)所有數(shù)據(jù)庫(kù)的賬號(hào)

Mysql數(shù)據(jù)庫(kù)下的user表和db表中存放著可以授予數(shù)據(jù)庫(kù)用戶(hù)的權(quán)限,確保只有管理員賬號(hào)才能訪問(wèn)所有數(shù)據(jù)庫(kù)??梢栽L問(wèn)mysql數(shù)據(jù)庫(kù)的用戶(hù)或許可以查看密碼哈希值、修改用戶(hù)權(quán)限等等。

使用如下sql語(yǔ)句:

SELECT user, host?FROM mysql.user

WHERE (Select_priv = 'Y')?OR (Insert_priv = 'Y')?OR (Update_priv = 'Y')

OR (Delete_priv = 'Y')??OR (Create_priv = 'Y')??OR (Drop_priv = 'Y');

SELECT user, host?FROM mysql.db?WHERE db = 'mysql'

AND ((Select_priv = 'Y')?OR (Insert_priv = 'Y')?OR (Update_priv = 'Y')

OR (Delete_priv = 'Y')?OR (Create_priv = 'Y')?OR (Drop_priv = 'Y'));

確保返回結(jié)果只能是數(shù)據(jù)庫(kù)管理員賬號(hào)。

5.2限制非管理員用戶(hù)的權(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)限;

應(yīng)確保只有數(shù)據(jù)庫(kù)管理員才有上述權(quán)限,使用如下sql語(yǔ)句查看擁有各個(gè)權(quán)限的數(shù)據(jù)庫(kù)賬號(hào):

select user, host from mysql.user where File_priv = 'Y';

select user, host from mysql.user where Process_priv = 'Y';

select user, host from mysql.user where Process_priv = 'Y';

SELECT user, host FROM mysql.user WHERE Shutdown_priv = 'Y';

SELECT user, host FROM mysql.user WHERE Create_user_priv = 'Y';

SELECT user, host FROM mysql.user WHERE Grant_priv = 'Y';

SELECT user, host FROM mysql.db WHERE Grant_priv = 'Y';

確保查詢(xún)結(jié)果中不存在非管理員用戶(hù)。

如果存在非管理員用戶(hù),使用如下命令進(jìn)行權(quán)限回收:

REVOKE FILE ON *.* FROM 'user';

REVOKE PROCESS ON *.* FROM 'user';

REVOKE SUPER ON *.* FROM 'user';

REVOKE SHUTDOWN ON *.* FROM 'user';

REVOKE CREATE USER ON *.* FROM 'user';

REVOKE GRANT OPTION ON *.* FROM user;

其中user為上述查詢(xún)到的非管理員用戶(hù)。

5.3合理控制DML/DDL操作授權(quán)

DML/DDL語(yǔ)句包括創(chuàng)建或修改數(shù)據(jù)庫(kù)結(jié)構(gòu)的權(quán)限,例如insert、update、delete、create、drop和alter語(yǔ)句,在任何數(shù)據(jù)庫(kù)中都要控制用戶(hù)的此類(lèi)權(quán)限,確保只授權(quán)給有業(yè)務(wù)需求的非管理員用戶(hù)。Mysql命令行下執(zhí)行如下命令:

SELECT User,Host,Db?FROM mysql.db?WHERE Select_priv='Y'

OR Insert_priv='Y'?OR Update_priv='Y'?OR Delete_priv='Y'?OR Create_priv='Y'

OR Drop_priv='Y'?OR Alter_priv='Y';

上述查詢(xún)到的用戶(hù)只能對(duì)特地的數(shù)據(jù)庫(kù)才有相關(guān)的權(quán)限,使用如下命令進(jìn)行相關(guān)權(quán)限的回收:

REVOKE SELECT ON host.database FROM user;

REVOKE INSERT ON host.database FROM user;

REVOKE UPDATE ON host.database FROM user;

REVOKE DELETE ON host.database FROM user;

REVOKE CREATE ON host.database FROM user;

REVOKE DROP ON host.database FROM user;

REVOKE ALTER ON host.database FROM user;

其中user為查詢(xún)到的未授權(quán)的用戶(hù),host為相關(guān)主機(jī),database為相關(guān)數(shù)據(jù)庫(kù)。

6、審計(jì)和日志

6.1開(kāi)啟錯(cuò)誤日志審計(jì)功能

錯(cuò)誤日志包括數(shù)據(jù)庫(kù)運(yùn)行和停止過(guò)程中的一系列活動(dòng)信息,有助于分析數(shù)據(jù)庫(kù)運(yùn)行過(guò)程中的一些異?;顒?dòng),一般情況下需要開(kāi)啟錯(cuò)誤日志記錄功能,使用如下命令查詢(xún):

SHOW variables LIKE 'log_error';

確保返回結(jié)果為非空,如果為空,需要在mysql數(shù)據(jù)庫(kù)配置文件中增加相關(guān)配置。

6.2確保日志存放在非系統(tǒng)區(qū)域

日志文件隨著數(shù)據(jù)庫(kù)的運(yùn)行會(huì)不斷增加,如果存放在系統(tǒng)區(qū)域,則會(huì)影響系統(tǒng)的正常運(yùn)行,使用如下命令進(jìn)行查詢(xún):

SELECT @@global.log_bin_basename;

確保返回結(jié)果不是如下路徑:/、/var、/usr

6.3關(guān)閉原始日志功能

原始日志選項(xiàng)會(huì)決定一些敏感信息是否會(huì)被明文寫(xiě)進(jìn)日志中,例如查詢(xún)?nèi)罩?、慢查?xún)?nèi)罩?、二進(jìn)制日志,確保數(shù)據(jù)庫(kù)配置文件中存在如下配置項(xiàng):

Log-raw = OFF

7、認(rèn)證

7.1 Old_passwords環(huán)境變量設(shè)置

Old_passwords決定了使用PASSWORD()函數(shù)和IDENTIFIED BY?、CREATE USER?、GRANT?等語(yǔ)句是時(shí)的hash算法:

0 - authenticate with the mysql_native_password plugin

1 - authenticate with the mysql_old_password plugin

2 - authenticate with the sha256_password plugin

設(shè)置為mysql_old_password代表弱hash算法,可以快速通過(guò)密碼字典進(jìn)行暴力破解。使用如下命令查詢(xún)相關(guān)值:

SHOW VARIABLES WHERE Variable_name = 'old_passwords';

確保返回值不為1。

7.2 secure_auth?選項(xiàng)設(shè)置

如果客戶(hù)端采用Old_passwords發(fā)起連接請(qǐng)求,如果服務(wù)器端設(shè)置了secure_auth,則客戶(hù)端會(huì)拒絕連接請(qǐng)求,可以根據(jù)安全需求在配置文件中做相應(yīng)配置。

7.3?密碼保存

確保密碼沒(méi)有明文保存在全局配置文件中。

7.4?確保所有用戶(hù)都要求使用非空密碼登錄

執(zhí)行如下語(yǔ)句查詢(xún)是否有用戶(hù)不需要密碼即可登錄:

SELECT User,host

FROM mysql.user

WHERE (plugin IN('mysql_native_password', 'mysql_old_password')

AND (LENGTH(Password) = 0

OR Password IS NULL))

OR (plugin='sha256_password' AND LENGTH(authentication_string) = 0);

7.5不存在空賬號(hào)

使用如下命令查詢(xún)是否存在空賬號(hào):

SELECT user,host FROM mysql.user WHERE user = '';

8、網(wǎng)絡(luò)設(shè)置

如果mysql數(shù)據(jù)庫(kù)服務(wù)器與應(yīng)用是跨信任域部署的,則需要考慮在數(shù)據(jù)庫(kù)服務(wù)器與應(yīng)用服務(wù)器之間建立ssl通道進(jìn)行數(shù)據(jù)傳輸,不過(guò)這種場(chǎng)景一般很少見(jiàn),在此不詳細(xì)描述。

9、數(shù)據(jù)庫(kù)備份


文章標(biāo)題:mysql服務(wù)器怎么安全 mysql 服務(wù)
文章出自:http://weahome.cn/article/ddijjsj.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部