MySQL常見安全小貼士
來源:易賢網(wǎng) 閱讀:839 次 日期:2015-09-24 15:11:56
溫馨提示:易賢網(wǎng)小編為您整理了“MySQL常見安全小貼士”,方便廣大網(wǎng)友查閱!

MySQL是最受DBA歡迎的數(shù)據(jù)庫之一,易用性和高性能是MySQL數(shù)據(jù)庫的標志。然而,高人氣使得MySQL成為很多惡意個人和組織攻擊的目標。默認安裝的MySQL在安全措施方面存在較大隱患,特別是根密碼空缺和緩沖區(qū)溢出的潛在漏洞,使其成為最容易受攻擊的目標。在本文中,我們將介紹一些簡單而有效的方法來加強數(shù)據(jù)庫的安全性,以抵御本地以及遠程的攻擊。

常見安全行為

作為DBA,與安全相關(guān)的工作應當圍繞以下三方面展開:

•打補丁

•限制訪問

•避免有用信息收集

本文剩余部分將會在細節(jié)上討論以上三個行為,并將重點放在對網(wǎng)絡、操作系統(tǒng)以及數(shù)據(jù)庫服務器的限制訪問上。

安全補丁

盡管每個人都會盡最大努力去保護數(shù)據(jù),但永遠會有人發(fā)現(xiàn)可以利用的漏洞。數(shù)據(jù)庫供應商會檢查引起問題的漏洞,并提供相應的漏洞補丁程序。

為MySQL尋找相關(guān)安全補丁最好的去處之一便是Oracle的官方網(wǎng)站。你需要經(jīng)常訪問MySQL論壇,并關(guān)注相關(guān)動向。它們通常是安全警報最先發(fā)出的地方。

防止對系統(tǒng)的訪問

有四項主要的來源是需要注意的:

•對網(wǎng)絡的訪問

•對數(shù)據(jù)庫的直接訪問

•對備份的訪問

•對操作系統(tǒng)的訪問,包括數(shù)據(jù)和日志文件

以上每一項都有其自身所面臨的挑戰(zhàn)和解決途徑:

對網(wǎng)絡的訪問

如果你所在的局域網(wǎng)或廣域網(wǎng)并不安全,你需要考慮對服務器和客戶端之間的網(wǎng)絡連接進行加密。非授權(quán)用戶能夠以某種方式獲得對特權(quán)用戶賬戶(例如root) 的訪問權(quán)限么,他們可以利用類似tcpdump的工具嗅探發(fā)往MySQL的網(wǎng)絡流并過濾數(shù)據(jù)包。這些數(shù)據(jù)包是會包含查詢和數(shù)據(jù)的。

默認情況下,MySQL是以最佳性能配置的,因此除非對連接進行人工設置,否則所有連接都是非加密的。而通常是采用SSL協(xié)議對所有在MySQL客戶端和服務器之間發(fā)送的數(shù)據(jù)進行加密。

MySQL可以基于每個連接進行加密,因此你可以根據(jù)各個應用程序的需求來選擇使用非加密連接或是安全的加密SSL連接。

對數(shù)據(jù)庫的訪問

對于黑客來說,首要的潛在入口點之一就是root賬戶。因此,對密碼進行重置和對ID重命名是至關(guān)重要的。

...當你拿到一個默認安裝的MySQL時,首先要做的就是為root用戶設置密碼。

$ mysqladmin -u root password NEWPASSWORD

一旦設置了密碼,將”root” 改成其他名字,安全性將會更好。一個黑客比較青睞于在MySQL服務器上將root用戶作為目標,既是由于其超級用戶身份,也是因為它是已知用戶。通過改變root用戶名,會讓黑客進行成功攻擊變得更困難。使用以下一系列命令可以重命名“root” 用戶:

mysql> RENAME USER root TO new_user;

除此之外,讓超級用戶的數(shù)量保持在絕對意義上的最小對掌控數(shù)據(jù)庫是非常關(guān)鍵的。而太多的超級賬號是存在隱患的,實際上,就關(guān)鍵數(shù)據(jù)而言,如果你不小心就有可能失去很多東西。

有一個賬戶類型是DBA們所鐘愛的,即只讀用戶。這是最好用的一類賬戶類型,因為持有它的用戶實際上是無法對數(shù)據(jù)庫或其數(shù)據(jù)造成破壞的。通常,用戶會編造一些理由來解釋他們?yōu)楹涡枰獙憴?quán)限。而確定一個特定權(quán)限是否有其真正價值的試金石就是在某種程度上將其簡單的移除,然后觀察是否有人對此抱怨。如果什么都不發(fā)生就最好了。以我的經(jīng)驗,只有很少的用戶渴望權(quán)限。而余下的用戶并不需要額外的權(quán)限。其實,我并非提倡通過關(guān)閉用戶權(quán)限來欺瞞你的客戶,我所要闡釋的是要對用戶的工作模式加以正確的分析。有些事情可以通過簡單的質(zhì)量審計就可以非常輕易的完成。

對備份的訪問

理想情況,只要對備份進行離線存儲,這樣當主站有故障發(fā)生時就不會對備份造成影響。此外,所有保護你數(shù)據(jù)庫服務器網(wǎng)絡的步驟同樣適用于備份系統(tǒng)。有一些優(yōu)秀的軟件模型可以對你的數(shù)據(jù)進行加密,因此,即便是備份文件在不大可能的情況下落入他人之手,其內(nèi)容對于偷盜者而言也是無用的。

這里是一個用PHP語言寫的加密函數(shù),它利用的是“rijndael-256”模型:

public function encrypt( $msg, $k, $base64 = false ) {

if ( ! $td = mcrypt_module_open('rijndael-256', '', 'ctr', '') ) return false;

$msg = serialize($msg);

$iv = mcrypt_create_iv(32, MCRYPT_RAND);

if ( mcrypt_generic_init($td, $k, $iv) !== 0 ) return false;

$msg = mcrypt_generic($td, $msg); # encrypt

$msg = $iv . $msg; # prepend iv

$mac = $this->pbkdf2($msg, $k, 1000, 32); # create mac

$msg .= $mac; # append mac

mcrypt_generic_deinit($td); # clear buffers

mcrypt_module_close($td); # close cipher module

if ( $base64 ) $msg = base64_encode($msg);

return $msg;

}

對操作系統(tǒng)的訪問

本地操作系統(tǒng)可以使用認證,防火墻以及其他防病毒軟件進行聯(lián)合防護。其他的訪問控制機制包括用戶名密碼策略,受管轄的使用組策略(GPO),以及過濾特定的訪問對象。

Oracle對此有很好的在線資源供參考。

結(jié)論

有各種各樣保護MySQL數(shù)據(jù)的方法,在本文中我們只介紹了一些基礎方法。在一場無盡的戰(zhàn)斗中,要讓數(shù)據(jù)庫免受攻擊,一種方法不可能一勞永逸。相反,必須始終保持警惕并保證自己熟悉最新的安全漏洞和相應對策。記住,打造世界上最安全的數(shù)據(jù)庫并不是你的目標,你只需要讓黑客們付出足夠的精力才能攻破你的數(shù)據(jù)庫,這樣黑客們就會轉(zhuǎn)向更易攻擊的目標。

更多信息請查看IT技術(shù)專欄

更多信息請查看數(shù)據(jù)庫
易賢網(wǎng)手機網(wǎng)站地址:MySQL常見安全小貼士
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇剩?/div>
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)