MYSQL服務器內(nèi)部安全性-安全數(shù)據(jù)目錄訪問
添加時間:2014-11-8 23:36:07
添加:
思海網(wǎng)絡
本章主要討論作為MySQL管理員的您,在維護MySQL安裝的安全性和完整性方面能夠做些什么。我們已經(jīng)在第11章中略微談到了一點安全性問題,如設置初始的MySQLroot 的口令的重要性以及怎樣建立用戶賬號。這些內(nèi)容是作為啟動和運行安裝過程的一部分被討論
的。在本章中,我們將更詳細地討論以下與安全性相關(guān)的問題:
為什么說安全性是重要的,應該警惕哪些攻擊?
從服務器主機中的用戶那里您將面臨什么風險(內(nèi)部安全性蘢鍪裁矗?br> 從在網(wǎng)絡上連接到服務器的客戶機那里您將面臨什么風險(外部安全性),能做什么?
MySQL管理員有責任保護數(shù)據(jù)庫內(nèi)容的安全,使得記錄只能由經(jīng)過嚴格認證的那些用戶訪問。這包括內(nèi)部安全性和外部安全性。
內(nèi)部安全性關(guān)心文件系統(tǒng)級的問題,如保護MySQL數(shù)據(jù)目錄免遭擁有運行服務器的機器賬號的用戶的攻擊。但是,如果數(shù)據(jù)目錄內(nèi)容的文件許可權(quán)過分隨意,有人可以將對應這些表的文件進行簡單的替換的話,內(nèi)部安全性就不能很好地確保適當建立對網(wǎng)絡上客戶機訪
問的授權(quán)表的控制。
外部安全性關(guān)心客戶機從外部連接的問題,如防止MySQL服務器免遭通過網(wǎng)絡進來的通過服務器的連接請求對數(shù)據(jù)庫內(nèi)容訪問的攻擊。要建立MySQL授權(quán)表使得它們不允許對服務器所管理的數(shù)據(jù)庫的訪問(除非提供了有效的名字和口令)。
本章提供了應該了解的有關(guān)問題的指導,并說明如何防止內(nèi)部和外部級別中未認證的訪問。
MySQL服務器提供了一個通過mysql數(shù)據(jù)庫中的授權(quán)表來實現(xiàn)的靈活的權(quán)限系統(tǒng)。可以設置這些表的內(nèi)容來允許或拒絕數(shù)據(jù)庫對客戶機的訪問。這提供了關(guān)于未認證的網(wǎng)絡訪問數(shù)據(jù)的安全性。但是,如果服務器主機上的其他用戶具有對該數(shù)據(jù)目錄內(nèi)容的直接訪問權(quán),則
將不能對訪問數(shù)據(jù)的網(wǎng)絡建立良好的安全性。除非知道您是曾在運行MySQL服務器的機器上注冊的惟一的一個人,否則需要關(guān)心在該機器上的其他用戶獲得對數(shù)據(jù)目錄訪問的可能性。
以下是您想要保護的內(nèi)容:
數(shù)據(jù)庫文件。顯然想要維護由服務器維護的數(shù)據(jù)庫的保密性。數(shù)據(jù)庫的所有者通常要考慮數(shù)據(jù)庫內(nèi)容的專有性。即使他們不考慮,也最多是使數(shù)據(jù)庫的內(nèi)容公共化,而不會使那些內(nèi)容因數(shù)據(jù)庫目錄安全性低而被泄露。
日志文件。常規(guī)和更新日志必須安全,因為它們包含了查詢文本。這有相當?shù)睦﹃P(guān)系,因為具有日志文件訪問的任何人都可以監(jiān)控發(fā)生在數(shù)據(jù)庫中的事務處理。
與日志文件有關(guān)的更為特殊的安全性問題是,像GRANT 和SET PASSWORD 這樣的查詢被記錄在日志中了。常規(guī)和更新日志文件包含敏感的查詢文本,其中包括了口令(MySQL使用口令加密,但這只適用于在口令設置之后的連接建立。設置口令的過程包含在GRANT、INSERT 或SET PASSWORD 這樣的查詢中,但這些查詢以純文本的形式被記錄。)如果一個攻擊者具有對日志的讀訪問權(quán),那他只需在日志中對GRANT 或PASSWORD 這樣的詞運行g(shù)rep 就能找到敏感信息。
顯然,您不想讓服務器主機上的其他用戶擁有對數(shù)據(jù)目錄文件的寫訪問權(quán),因為那樣的話,他們就可以在狀態(tài)文件或數(shù)據(jù)庫表上肆意踐踏。但讀訪問也很危險。如果表文件可讀取,那么竊取文件并使MySQL自己以純文本的形式顯示表的內(nèi)容是微不足道的事。可按下列步
驟進行:
1) 在服務器主機上安裝您的MySQL服務器,但使用與正式服務器不同的端口、套接字和數(shù)據(jù)文件。
2) 運行mysql_install_db 初始化您的數(shù)據(jù)目錄。這將允許您作為MySQL的root 用戶訪問服務器,因此您將具有完全控制服務器訪問機制的權(quán)利。它還建立了一個test 數(shù)據(jù)庫。
3) 將您想竊取的表的相應文件拷貝到服務器數(shù)據(jù)目錄下的test 子目錄中。
4) 啟動作案服務器。您可以隨意訪問這些表。SHOW TABLES FROM test 將顯示您擁有一個被竊取表的備份, SELECT * 將顯示任何這些表的全部內(nèi)容。
5) 如果更壞一點,打開服務器的匿名用戶賬號的許可權(quán),使任何人都能從任何地方連接到該服務器來訪問您的test 數(shù)據(jù)庫。現(xiàn)在,您已經(jīng)向全世界公布了這些被偷竊的表。
考慮一下剛才的情況,然后顛倒過來想。您希望有人對您這樣做嗎?當然不要。
通過在數(shù)據(jù)目錄中執(zhí)行l(wèi)s -l 可以確定數(shù)據(jù)目錄中是否包含非安全的文件或目錄。應查看具有以開啟的“組”或“其他”許可權(quán)的文件或目錄。以下是一個非安全數(shù)據(jù)目錄的部分列表,是該數(shù)據(jù)目錄中的一部分數(shù)據(jù)庫目錄:
正如您所看到的,有些數(shù)據(jù)庫目錄有正確的許可權(quán),而有些則不是這樣。本例中的情況是由于時間引起的。較老的服務器創(chuàng)建了限制較少的許可權(quán),且較老的服務器與較新的服務器相比,在設置許可權(quán)方面不嚴格(請注意,有更多限制的目錄, menager 和t m p,都有更為新的日期)。MySQL當前的版本確保這些文件只對服務器運行的用戶可讀。
讓我們來安排這些許可權(quán),使得只有服務器的用戶才能訪問它們。主要的保護手段來自由UNIX 文件系統(tǒng)本身提供的工具,這些工具可設置文件和目錄的所有權(quán)及方式。操作步驟如下:
1) 定位到數(shù)據(jù)目錄中:
% cd DATADIR
2 ) 設置該數(shù)據(jù)目錄下所有文件的所有權(quán)為運行該服務器的賬號所擁有(必須以root 身份執(zhí)行這一步)。在本書中,筆者對此賬號的用戶名和組名使用mysqladm 和mysqlg r p。可以用下列命令之一修改所有權(quán):
# chown -R mysqladmin.mysqlgrp
# find . -follow -type d -print | xargs chown mysqladmin.mysqlgrp
3 ) 修改數(shù)據(jù)目錄和數(shù)據(jù)庫目錄的方式,使得它們僅對于mysqladm 是可讀的。這樣防止了其他用戶訪問數(shù)據(jù)目錄的內(nèi)容。可以利用下列命令之一來進行,這些命令或者以root 或者以mysqladm 運行(后者更好,可以使作為root 運行的命令數(shù)量最小化):
% chmod -R go-rwx
% find . -follow -type d -print | xargs chmod go -rwx
的。在本章中,我們將更詳細地討論以下與安全性相關(guān)的問題:
為什么說安全性是重要的,應該警惕哪些攻擊?
從服務器主機中的用戶那里您將面臨什么風險(內(nèi)部安全性蘢鍪裁矗?br> 從在網(wǎng)絡上連接到服務器的客戶機那里您將面臨什么風險(外部安全性),能做什么?
MySQL管理員有責任保護數(shù)據(jù)庫內(nèi)容的安全,使得記錄只能由經(jīng)過嚴格認證的那些用戶訪問。這包括內(nèi)部安全性和外部安全性。
內(nèi)部安全性關(guān)心文件系統(tǒng)級的問題,如保護MySQL數(shù)據(jù)目錄免遭擁有運行服務器的機器賬號的用戶的攻擊。但是,如果數(shù)據(jù)目錄內(nèi)容的文件許可權(quán)過分隨意,有人可以將對應這些表的文件進行簡單的替換的話,內(nèi)部安全性就不能很好地確保適當建立對網(wǎng)絡上客戶機訪
問的授權(quán)表的控制。
外部安全性關(guān)心客戶機從外部連接的問題,如防止MySQL服務器免遭通過網(wǎng)絡進來的通過服務器的連接請求對數(shù)據(jù)庫內(nèi)容訪問的攻擊。要建立MySQL授權(quán)表使得它們不允許對服務器所管理的數(shù)據(jù)庫的訪問(除非提供了有效的名字和口令)。
本章提供了應該了解的有關(guān)問題的指導,并說明如何防止內(nèi)部和外部級別中未認證的訪問。
MySQL服務器提供了一個通過mysql數(shù)據(jù)庫中的授權(quán)表來實現(xiàn)的靈活的權(quán)限系統(tǒng)。可以設置這些表的內(nèi)容來允許或拒絕數(shù)據(jù)庫對客戶機的訪問。這提供了關(guān)于未認證的網(wǎng)絡訪問數(shù)據(jù)的安全性。但是,如果服務器主機上的其他用戶具有對該數(shù)據(jù)目錄內(nèi)容的直接訪問權(quán),則
將不能對訪問數(shù)據(jù)的網(wǎng)絡建立良好的安全性。除非知道您是曾在運行MySQL服務器的機器上注冊的惟一的一個人,否則需要關(guān)心在該機器上的其他用戶獲得對數(shù)據(jù)目錄訪問的可能性。
以下是您想要保護的內(nèi)容:
數(shù)據(jù)庫文件。顯然想要維護由服務器維護的數(shù)據(jù)庫的保密性。數(shù)據(jù)庫的所有者通常要考慮數(shù)據(jù)庫內(nèi)容的專有性。即使他們不考慮,也最多是使數(shù)據(jù)庫的內(nèi)容公共化,而不會使那些內(nèi)容因數(shù)據(jù)庫目錄安全性低而被泄露。
日志文件。常規(guī)和更新日志必須安全,因為它們包含了查詢文本。這有相當?shù)睦﹃P(guān)系,因為具有日志文件訪問的任何人都可以監(jiān)控發(fā)生在數(shù)據(jù)庫中的事務處理。
與日志文件有關(guān)的更為特殊的安全性問題是,像GRANT 和SET PASSWORD 這樣的查詢被記錄在日志中了。常規(guī)和更新日志文件包含敏感的查詢文本,其中包括了口令(MySQL使用口令加密,但這只適用于在口令設置之后的連接建立。設置口令的過程包含在GRANT、INSERT 或SET PASSWORD 這樣的查詢中,但這些查詢以純文本的形式被記錄。)如果一個攻擊者具有對日志的讀訪問權(quán),那他只需在日志中對GRANT 或PASSWORD 這樣的詞運行g(shù)rep 就能找到敏感信息。
顯然,您不想讓服務器主機上的其他用戶擁有對數(shù)據(jù)目錄文件的寫訪問權(quán),因為那樣的話,他們就可以在狀態(tài)文件或數(shù)據(jù)庫表上肆意踐踏。但讀訪問也很危險。如果表文件可讀取,那么竊取文件并使MySQL自己以純文本的形式顯示表的內(nèi)容是微不足道的事。可按下列步
驟進行:
1) 在服務器主機上安裝您的MySQL服務器,但使用與正式服務器不同的端口、套接字和數(shù)據(jù)文件。
2) 運行mysql_install_db 初始化您的數(shù)據(jù)目錄。這將允許您作為MySQL的root 用戶訪問服務器,因此您將具有完全控制服務器訪問機制的權(quán)利。它還建立了一個test 數(shù)據(jù)庫。
3) 將您想竊取的表的相應文件拷貝到服務器數(shù)據(jù)目錄下的test 子目錄中。
4) 啟動作案服務器。您可以隨意訪問這些表。SHOW TABLES FROM test 將顯示您擁有一個被竊取表的備份, SELECT * 將顯示任何這些表的全部內(nèi)容。
5) 如果更壞一點,打開服務器的匿名用戶賬號的許可權(quán),使任何人都能從任何地方連接到該服務器來訪問您的test 數(shù)據(jù)庫。現(xiàn)在,您已經(jīng)向全世界公布了這些被偷竊的表。
考慮一下剛才的情況,然后顛倒過來想。您希望有人對您這樣做嗎?當然不要。
通過在數(shù)據(jù)目錄中執(zhí)行l(wèi)s -l 可以確定數(shù)據(jù)目錄中是否包含非安全的文件或目錄。應查看具有以開啟的“組”或“其他”許可權(quán)的文件或目錄。以下是一個非安全數(shù)據(jù)目錄的部分列表,是該數(shù)據(jù)目錄中的一部分數(shù)據(jù)庫目錄:
正如您所看到的,有些數(shù)據(jù)庫目錄有正確的許可權(quán),而有些則不是這樣。本例中的情況是由于時間引起的。較老的服務器創(chuàng)建了限制較少的許可權(quán),且較老的服務器與較新的服務器相比,在設置許可權(quán)方面不嚴格(請注意,有更多限制的目錄, menager 和t m p,都有更為新的日期)。MySQL當前的版本確保這些文件只對服務器運行的用戶可讀。
讓我們來安排這些許可權(quán),使得只有服務器的用戶才能訪問它們。主要的保護手段來自由UNIX 文件系統(tǒng)本身提供的工具,這些工具可設置文件和目錄的所有權(quán)及方式。操作步驟如下:
1) 定位到數(shù)據(jù)目錄中:
% cd DATADIR
2 ) 設置該數(shù)據(jù)目錄下所有文件的所有權(quán)為運行該服務器的賬號所擁有(必須以root 身份執(zhí)行這一步)。在本書中,筆者對此賬號的用戶名和組名使用mysqladm 和mysqlg r p。可以用下列命令之一修改所有權(quán):
# chown -R mysqladmin.mysqlgrp
# find . -follow -type d -print | xargs chown mysqladmin.mysqlgrp
3 ) 修改數(shù)據(jù)目錄和數(shù)據(jù)庫目錄的方式,使得它們僅對于mysqladm 是可讀的。這樣防止了其他用戶訪問數(shù)據(jù)目錄的內(nèi)容。可以利用下列命令之一來進行,這些命令或者以root 或者以mysqladm 運行(后者更好,可以使作為root 運行的命令數(shù)量最小化):
% chmod -R go-rwx
% find . -follow -type d -print | xargs chmod go -rwx
4 ) 對mysqladm 用戶設置數(shù)據(jù)目錄內(nèi)容的所有權(quán)和方式。現(xiàn)在,您應該確保總是以mysqladm 運行,因為它現(xiàn)在是唯一擁有該數(shù)據(jù)目錄訪問權(quán)的用戶。
關(guān)鍵字:MYSQL、服務器、數(shù)據(jù)庫
新文章:
- CentOS7下圖形配置網(wǎng)絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動項
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機IP講解
- CentOS7使用hostapd實現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡重啟出錯
- 解決Centos7雙系統(tǒng)后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認iptable規(guī)則詳解