MySQL是最受DBA歡迎的數(shù)據(jù)庫之一,易用性和高機(jī)能是MySQL數(shù)據(jù)庫的標(biāo)記。但是,高人氣使得MySQL成為良多歹意小我和組織報(bào)復(fù)打擊的方針。默許安裝的MySQL在安然辦法方面存在較大年夜隱患,出格是根暗碼空白和緩沖區(qū)溢出的暗藏縫隙,使其成為最等閑受報(bào)復(fù)打擊的方針。在本文中,我們將介紹一些簡單而有效的編制來加強(qiáng)數(shù)據(jù)庫的安然性,以抵抗本地和長途的報(bào)復(fù)打擊。
常見安然行動(dòng)
作為DBA,與安然相干的工作該當(dāng)環(huán)繞以下三方面展開:
打補(bǔ)丁
限制拜候
避免有效信息匯集
本文殘剩部門將會在細(xì)節(jié)上會商以上三個(gè)行動(dòng),并將重點(diǎn)放在對收集、把持系統(tǒng)和數(shù)據(jù)庫辦事器的限制拜候上。
安然補(bǔ)丁
雖然每小我城市盡最大年夜盡力往呵護(hù)數(shù)據(jù),但永久會有人發(fā)現(xiàn)可以操縱的縫隙。數(shù)據(jù)庫供給商會查抄引發(fā)標(biāo)題問題標(biāo)縫隙,并供給響應(yīng)的縫隙補(bǔ)丁法度。
為MySQL尋覓相干安然補(bǔ)丁最好的往處之一便是Oracle的官方網(wǎng)站。你需要常常拜候MySQL論壇,并存眷相干動(dòng)向。它們凡是是安然警報(bào)最早發(fā)出的處所。
避免對系統(tǒng)的拜候
有四項(xiàng)首要的來歷是需要寄望的:
● 對收集的拜候
● 對數(shù)據(jù)庫的直接拜候
● 對備份的拜候
● 對把持系統(tǒng)的拜候,包含數(shù)據(jù)和日記文件
以上每項(xiàng)都有其本身所面對的挑戰(zhàn)和解決路子:
對收集的拜候
假定你地點(diǎn)的局域網(wǎng)或廣域網(wǎng)其實(shí)不服安,你需要考慮對辦事器和客戶端之間的收集連接進(jìn)行加密。非授權(quán)用戶可以或許以某種編制獲得對特權(quán)用戶賬戶(例如root) 的拜候權(quán)限么,他們可以操縱近似tcpdump的東西嗅探發(fā)往MySQL的收集流并過濾數(shù)據(jù)包。這些數(shù)據(jù)包是會包含查詢和數(shù)據(jù)的。
默許環(huán)境下,MySQL是以最好機(jī)能建設(shè)的,是以除非對連接進(jìn)行人工設(shè)置,不然所有連接都長短加密的。而凡是是采取SSL和談對所有在MySQL客戶端和辦事器之間發(fā)送的數(shù)據(jù)進(jìn)行加密。
MySQL可以基于每個(gè)連接進(jìn)行加密,是以你可以按照各個(gè)利用法度的需求來選擇利用非加密連接或是安然的加密SSL連接。
對數(shù)據(jù)庫的拜候
對黑客來講,首要的暗藏進(jìn)口點(diǎn)之一就是root賬戶。是以,對暗碼進(jìn)行重置和對ID重定名是相當(dāng)首要的。
...當(dāng)你拿到一個(gè)默許安裝的MySQL時(shí),起首要做的就是為root用戶設(shè)置暗碼。
$ mysqladmin -u root password NEWPASSWORD
一旦設(shè)置了暗碼,將”root” 改成其他名字,安然性將會更好。一個(gè)黑客比較青睞于在MySQL辦事器大將root用戶作為方針,既是因?yàn)槠涑扔脩羯矸?,也是因?yàn)樗且阎脩?。?jīng)由過程改變r(jià)oot用戶名,會讓黑客進(jìn)行成功報(bào)復(fù)打擊變得更堅(jiān)苦。利用以下一系列號令可以重定名“root” 用戶:
mysql> RENAME USER root TO new_user;
除此以外,讓超等用戶的數(shù)量保持在盡對意義上的最小對掌控?cái)?shù)據(jù)庫是很是關(guān)頭的。而太多的超等賬號是存在隱患的,實(shí)際上,就關(guān)頭數(shù)據(jù)而言,假定你不謹(jǐn)慎就有可能掉往良多東西。
有一個(gè)賬戶類型是DBA們所鐘愛的,即只讀用戶。這是最好用的一類賬戶類型,因?yàn)槌钟兴挠脩魧?shí)際上是沒法對數(shù)據(jù)庫或其數(shù)據(jù)造成粉碎的。凡是,用戶會編造一些來由來詮釋他們?yōu)楹涡枰獙憴?quán)限。而肯定一個(gè)特定權(quán)限是不是有其真正價(jià)值的試金石就是在某種程度大將其簡單的移除,然后不雅察是不是有人對此埋怨。假定甚么都不產(chǎn)生就最好了。以我的經(jīng)驗(yàn),只有很少的用戶渴看權(quán)限。而余下的用戶其實(shí)不需要額外的權(quán)限。其實(shí),我并不是倡導(dǎo)經(jīng)由過程封鎖用戶權(quán)限來欺瞞你的客戶,我所要闡釋的是要對用戶的工作模式加以準(zhǔn)確的闡發(fā)。有些工作可以經(jīng)由過程簡單的質(zhì)量審計(jì)便可以很是等閑的完成。
對備份的拜候
抱負(fù)環(huán)境,只要對備份進(jìn)行離線存儲,如許當(dāng)主站有故障產(chǎn)生時(shí)就不會對備份造成影響。別的,所有呵護(hù)你數(shù)據(jù)庫辦事器收集的步調(diào)一樣合用于備份系統(tǒng)。有一些優(yōu)良的軟件模型可以對你的數(shù)據(jù)進(jìn)行加密,是以,即便是備份文件在不大年夜可能的環(huán)境下落進(jìn)他人之手,其內(nèi)容對盜竊者而言也是無用的。
這里是一個(gè)用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)可利用認(rèn)證,防火墻和其他防病毒軟件進(jìn)行結(jié)合防護(hù)。其他的拜候節(jié)制機(jī)制包含用戶名暗碼策略,受管轄的利用組策略(GPO),和過濾特定的拜候?qū)ο蟆?/P>
Oracle對此有很好的在線資本供參考。
結(jié)論
有各類各樣呵護(hù)MySQL數(shù)據(jù)的編制,在本文中我們只介紹了一些根本編制。在一場無盡的戰(zhàn)役中,要讓數(shù)據(jù)庫免受報(bào)復(fù)打擊,一種編制不成能一勞永逸。相反,必需始終保持警戒并包管本身熟諳最新的安然縫隙和響應(yīng)對策。記住,打造世界上最安然的數(shù)據(jù)庫其實(shí)不是你的方針,你只需要讓黑客們支出足夠的精力才能攻破你的數(shù)據(jù)庫,如許黑客們就會轉(zhuǎn)向更容易報(bào)復(fù)打擊的方針。