文章詳情頁(yè)
Mysql入門系列:MYSQL服務(wù)器內(nèi)部安全性-安全數(shù)據(jù)目錄訪問(wèn)
瀏覽:44日期:2023-11-30 18:23:43
;;;;本章主要討論作為MySQL管理員的您,在維護(hù)MySQL安裝的安全性和完整性方面能夠做些什么。我們已經(jīng)在第11章中略微談到了一點(diǎn)安全性問(wèn)題,如設(shè)置初始的MySQLroot 的口令的重要性以及怎樣建立用戶賬號(hào)。這些內(nèi)容是作為啟動(dòng)和運(yùn)行安裝過(guò)程的一部分被討論的。在本章中,我們將更詳細(xì)地討論以下與安全性相關(guān)的問(wèn)題:為什么說(shuō)安全性是重要的,應(yīng)該警惕哪些攻擊?從服務(wù)器主機(jī)中的用戶那里您將面臨什么風(fēng)險(xiǎn)(內(nèi)部安全性),能做什么?從在網(wǎng)絡(luò)上連接到服務(wù)器的客戶機(jī)那里您將面臨什么風(fēng)險(xiǎn)(外部安全性),能做什么?MySQL管理員有責(zé)任保護(hù)數(shù)據(jù)庫(kù)內(nèi)容的安全,使得記錄只能由經(jīng)過(guò)嚴(yán)格認(rèn)證的那些用戶訪問(wèn)。這包括內(nèi)部安全性和外部安全性。內(nèi)部安全性關(guān)心文件系統(tǒng)級(jí)的問(wèn)題,如保護(hù)MySQL數(shù)據(jù)目錄免遭擁有運(yùn)行服務(wù)器的機(jī)器賬號(hào)的用戶的攻擊。但是,如果數(shù)據(jù)目錄內(nèi)容的文件許可權(quán)過(guò)分隨意,有人可以將對(duì)應(yīng)這些表的文件進(jìn)行簡(jiǎn)單的替換的話,內(nèi)部安全性就不能很好地確保適當(dāng)建立對(duì)網(wǎng)絡(luò)上客戶機(jī)訪問(wèn)的授權(quán)表的控制。外部安全性關(guān)心客戶機(jī)從外部連接的問(wèn)題,如防止MySQL服務(wù)器免遭通過(guò)網(wǎng)絡(luò)進(jìn)來(lái)的通過(guò)服務(wù)器的連接請(qǐng)求對(duì)數(shù)據(jù)庫(kù)內(nèi)容訪問(wèn)的攻擊。要建立MySQL授權(quán)表使得它們不允許對(duì)服務(wù)器所管理的數(shù)據(jù)庫(kù)的訪問(wèn)(除非提供了有效的名字和口令)。本章提供了應(yīng)該了解的有關(guān)問(wèn)題的指導(dǎo),并說(shuō)明如何防止內(nèi)部和外部級(jí)別中未認(rèn)證的訪問(wèn)。MySQL服務(wù)器提供了一個(gè)通過(guò)mysql數(shù)據(jù)庫(kù)中的授權(quán)表來(lái)實(shí)現(xiàn)的靈活的權(quán)限系統(tǒng)。可以設(shè)置這些表的內(nèi)容來(lái)允許或拒絕數(shù)據(jù)庫(kù)對(duì)客戶機(jī)的訪問(wèn)。這提供了關(guān)于未認(rèn)證的網(wǎng)絡(luò)訪問(wèn)數(shù)據(jù)的安全性。但是,如果服務(wù)器主機(jī)上的其他用戶具有對(duì)該數(shù)據(jù)目錄內(nèi)容的直接訪問(wèn)權(quán),則將不能對(duì)訪問(wèn)數(shù)據(jù)的網(wǎng)絡(luò)建立良好的安全性。除非知道您是曾在運(yùn)行MySQL服務(wù)器的機(jī)器上注冊(cè)的惟一的一個(gè)人,否則需要關(guān)心在該機(jī)器上的其他用戶獲得對(duì)數(shù)據(jù)目錄訪問(wèn)的可能性。以下是您想要保護(hù)的內(nèi)容:數(shù)據(jù)庫(kù)文件。顯然想要維護(hù)由服務(wù)器維護(hù)的數(shù)據(jù)庫(kù)的保密性。數(shù)據(jù)庫(kù)的所有者通常要考慮數(shù)據(jù)庫(kù)內(nèi)容的專有性。即使他們不考慮,也最多是使數(shù)據(jù)庫(kù)的內(nèi)容公共化,而不會(huì)使那些內(nèi)容因數(shù)據(jù)庫(kù)目錄安全性低而被泄露。日志文件。常規(guī)和更新日志必須安全,因?yàn)樗鼈儼瞬樵兾谋尽_@有相當(dāng)?shù)睦﹃P(guān)系,因?yàn)榫哂腥罩疚募L問(wèn)的任何人都可以監(jiān)控發(fā)生在數(shù)據(jù)庫(kù)中的事務(wù)處理。與日志文件有關(guān)的更為特殊的安全性問(wèn)題是,像GRANT 和SET PASSWORD 這樣的查詢被記錄在日志中了。常規(guī)和更新日志文件包含敏感的查詢文本,其中包括了口令(MySQL使用口令加密,但這只適用于在口令設(shè)置之后的連接建立。設(shè)置口令的過(guò)程包含在GRANT、INSERT 或SET PASSWORD 這樣的查詢中,但這些查詢以純文本的形式被記錄。)如果一個(gè)攻擊者具有對(duì)日志的讀訪問(wèn)權(quán),那他只需在日志中對(duì)GRANT 或PASSWORD 這樣的詞運(yùn)行g(shù)rep 就能找到敏感信息。顯然,您不想讓服務(wù)器主機(jī)上的其他用戶擁有對(duì)數(shù)據(jù)目錄文件的寫訪問(wèn)權(quán),因?yàn)槟菢拥脑挘麄兙涂梢栽跔顟B(tài)文件或數(shù)據(jù)庫(kù)表上肆意踐踏。但讀訪問(wèn)也很危險(xiǎn)。如果表文件可讀取,那么竊取文件并使MySQL自己以純文本的形式顯示表的內(nèi)容是微不足道的事。可按下列步驟進(jìn)行:1) 在服務(wù)器主機(jī)上安裝您的MySQL服務(wù)器,但使用與正式服務(wù)器不同的端口、套接字和數(shù)據(jù)文件。2) 運(yùn)行mysql_install_db 初始化您的數(shù)據(jù)目錄。這將允許您作為MySQL的root 用戶訪問(wèn)服務(wù)器,因此您將具有完全控制服務(wù)器訪問(wèn)機(jī)制的權(quán)利。它還建立了一個(gè)test 數(shù)據(jù)庫(kù)。3) 將您想竊取的表的相應(yīng)文件拷貝到服務(wù)器數(shù)據(jù)目錄下的test 子目錄中。4) 啟動(dòng)作案服務(wù)器。您可以隨意訪問(wèn)這些表。SHOW TABLES FROM test 將顯示您擁有一個(gè)被竊取表的備份, SELECT * 將顯示任何這些表的全部?jī)?nèi)容。5) 如果更壞一點(diǎn),打開服務(wù)器的匿名用戶賬號(hào)的許可權(quán),使任何人都能從任何地方連接到該服務(wù)器來(lái)訪問(wèn)您的test 數(shù)據(jù)庫(kù)。現(xiàn)在,您已經(jīng)向全世界公布了這些被偷竊的表。考慮一下剛才的情況,然后顛倒過(guò)來(lái)想。您希望有人對(duì)您這樣做嗎?當(dāng)然不要。通過(guò)在數(shù)據(jù)目錄中執(zhí)行l(wèi)s -l 可以確定數(shù)據(jù)目錄中是否包含非安全的文件或目錄。應(yīng)查看具有以開啟的“組”或“其他”許可權(quán)的文件或目錄。以下是一個(gè)非安全數(shù)據(jù)目錄的部分列表,是該數(shù)據(jù)目錄中的一部分?jǐn)?shù)據(jù)庫(kù)目錄:
正如您所看到的,有些數(shù)據(jù)庫(kù)目錄有正確的許可權(quán),而有些則不是這樣。本例中的情況是由于時(shí)間引起的。較老的服務(wù)器創(chuàng)建了限制較少的許可權(quán),且較老的服務(wù)器與較新的服務(wù)器相比,在設(shè)置許可權(quán)方面不嚴(yán)格(請(qǐng)注意,有更多限制的目錄, menager 和t m p,都有更為新的日期)。MySQL當(dāng)前的版本確保這些文件只對(duì)服務(wù)器運(yùn)行的用戶可讀。 讓我們來(lái)安排這些許可權(quán),使得只有服務(wù)器的用戶才能訪問(wèn)它們。主要的保護(hù)手段來(lái)自由UNIX 文件系統(tǒng)本身提供的工具,這些工具可設(shè)置文件和目錄的所有權(quán)及方式。操作步驟如下:1) 定位到數(shù)據(jù)目錄中:% cd DATADIR2 ) 設(shè)置該數(shù)據(jù)目錄下所有文件的所有權(quán)為運(yùn)行該服務(wù)器的賬號(hào)所擁有(必須以root 身份執(zhí)行這一步)。在本書中,筆者對(duì)此賬號(hào)的用戶名和組名使用mysqladm 和mysqlg r p。可以用下列命令之一修改所有權(quán):# chown -R mysqladmin.mysqlgrp# find . -follow -type d -print | xargs chown mysqladmin.mysqlgrp3 ) 修改數(shù)據(jù)目錄和數(shù)據(jù)庫(kù)目錄的方式,使得它們僅對(duì)于mysqladm 是可讀的。這樣防止了其他用戶訪問(wèn)數(shù)據(jù)目錄的內(nèi)容。可以利用下列命令之一來(lái)進(jìn)行,這些命令或者以root 或者以mysqladm 運(yùn)行(后者更好,可以使作為root 運(yùn)行的命令數(shù)量最小化):% chmod -R go-rwx% find . -follow -type d -print | xargs chmod go -rwx4 ) 對(duì)mysqladm 用戶設(shè)置數(shù)據(jù)目錄內(nèi)容的所有權(quán)和方式。現(xiàn)在,您應(yīng)該確保總是以mysqladm 運(yùn)行,因?yàn)樗F(xiàn)在是唯一擁有該數(shù)據(jù)目錄訪問(wèn)權(quán)的用戶。作為非root 用戶運(yùn)行服務(wù)器的過(guò)程已在第11章中介紹。在上述步驟之后,將擁有以下許可權(quán):


標(biāo)簽:
MySQL
數(shù)據(jù)庫(kù)
排行榜
