如果你目前用的數(shù)據(jù)庫是MySQL,有很多簡單的方法能夠幫助你保護系統(tǒng)安全,并顯著降低你的敏感數(shù)據(jù)收到未授權(quán)訪問的風(fēng)險。 以技術(shù)為基礎(chǔ)的企業(yè)里最有價值的資產(chǎn)通常是客戶或者其數(shù)據(jù)庫中的產(chǎn)品信息。因此,在這樣的企業(yè)中,保證數(shù)據(jù)庫免受外界攻擊并防止出現(xiàn)
如果你目前用的數(shù)據(jù)庫是MySQL,有很多簡單的方法能夠幫助你保護系統(tǒng)安全,并顯著降低你的敏感數(shù)據(jù)收到未授權(quán)訪問的風(fēng)險。
以技術(shù)為基礎(chǔ)的企業(yè)里最有價值的資產(chǎn)通常是客戶或者其數(shù)據(jù)庫中的產(chǎn)品信息。因此,在這樣的企業(yè)中,保證數(shù)據(jù)庫免受外界攻擊并防止出現(xiàn)軟件和硬件方面的故障是數(shù)據(jù)庫管理的重要環(huán)節(jié)。
大多數(shù)情況下,硬件和軟件故障都通過數(shù)據(jù)庫備份方案進行處理。大部分數(shù)據(jù)庫都配備有內(nèi)置的工具來自動執(zhí)行整個過程,使得備份任務(wù)不需要花費很大力氣,也不會出現(xiàn)什么差錯。不過,數(shù)據(jù)安全問題解決起來就不那么簡單了。要保護敏感數(shù)據(jù)的安全,必須確保外部的黑客無法侵入系統(tǒng),也無法盜取或破壞數(shù)據(jù)庫里包含的信息。事實上,沒有什么自動化的方法來解決這個問題;相反,要確保企業(yè)數(shù)據(jù)安全,數(shù)據(jù)庫管理員必須要實打?qū)嵉娜斯ぴO(shè)立一些能夠阻止?jié)撛诘暮诳颓秩氲钠琳稀?/p>
很多數(shù)據(jù)庫管理員并沒有實施什么數(shù)據(jù)庫保護措施,只是因為這做起來很“棘手”并且太“復(fù)雜”。雖然情況確實如他們所述,但如果你使用的使MySQL,你只需要用一些簡單的方法就能夠大大減少你所面臨的風(fēng)險。本文列舉了其中六大防范措施,不過你還可以在MySQL的說明手冊和相關(guān)論壇找到更多類似的方法。
第一步:消除授權(quán)表的通配符
MySQL的訪問控制系統(tǒng)是通過一系列所謂授權(quán)表進行運作的,這些授權(quán)表使我們能夠在數(shù)據(jù)庫、表和列水平上定義每一位用戶的訪問級別。而這些表也能夠讓管理員授予某用戶普適許可(即總是允許)或授予表使用通配符的權(quán)限,這樣做相當危險,因為黑客有可能會使用一個被盜帳號來獲取訪問系統(tǒng)其他部分的權(quán)限。因此,在分配用戶權(quán)限時要謹慎行事,做到準確無誤,并且始終確保用戶獲得的訪問權(quán)限恰好足夠他們完成任務(wù)即可。此外,還要謹防給個人用戶分配SUPER特權(quán),因為這個級別的權(quán)限允許用戶操縱基本服務(wù)器配置并訪問所有數(shù)據(jù)庫。
提示:使用SHOW PRIVILEGES命令顯示每一個用戶帳號的權(quán)限,以便審計你的授權(quán)表并檢查通配符的使用權(quán)限是否得當。
第二步:使用安全密碼
只有在使用密碼的情況下,用戶帳戶才能得到安全保障。因此,當你安裝MySQL時要做的第一件事就是給MySQL的根帳戶設(shè)置一個密碼(默認情況下密碼為空)。當你堵住這個大漏洞之后,下一步就是要求每一個用戶帳戶都設(shè)置好自己的密碼,并確保沒有使用具有啟發(fā)式信息的容易被識破的密碼,例如生日、用戶姓名字母等。
提示:啟用MySQL的--secure-auth選項以防止用戶使用任何老式的不太安全的MySQL密碼格式。
第三步:檢查配置文件的許可
很多時候,為了使服務(wù)器連接更加快捷方便,無論是個人用戶還是服務(wù)器管理員都把他們的用戶帳號密碼存儲在MySQL的per-user選項文件中。但是,這個密碼是以純文本形式存儲在這個文件中的,很容易就會被讀取。因此,確保系統(tǒng)的其他用戶無法查看類似于per-user這種配置文件,并把這些文件存儲在非公共區(qū)域就顯得至關(guān)重要。最好是把per-user配置文件存儲在用戶帳戶的私人主目錄下,并將權(quán)限設(shè)置為0600(只能被根用戶讀寫)。
第四步:對客戶端服務(wù)器傳輸進行加密
在MySQL的客戶端服務(wù)器架構(gòu)(對于任何此類架構(gòu)也是如此)中,關(guān)于在網(wǎng)絡(luò)中傳輸數(shù)據(jù)時保證數(shù)據(jù)安全的問題非常重要。如果客戶端服務(wù)器事務(wù)是以明文(信息未加密)的方式進行的,那么黑客很容易就能發(fā)現(xiàn)這些傳輸中的數(shù)據(jù)包,并從中獲取敏感信息。想要堵住這個漏洞,你可以激活MySQL設(shè)置中的SSL,或者使用OpenSSH這類的安全外殼實用程序,以便為通過的數(shù)據(jù)創(chuàng)造一個安全的加密通道。通過這種方式對客戶端服務(wù)器連接進行加密,未經(jīng)授權(quán)的用戶就很難讀取這些不斷在通道中往來傳輸?shù)臄?shù)據(jù)了。
第五步:禁用遠程訪問功能
如果你的用戶不需要對服務(wù)器進行遠程訪問,那你就可以通過強制所有的MySQL連接都通過UNIX的socket文件進行,這樣做可以大大降低受到網(wǎng)絡(luò)攻擊的風(fēng)險。設(shè)置服務(wù)器使用了--skip-networking選項啟動,這樣做能夠屏蔽MySQL的TCP/IP網(wǎng)絡(luò)連接,并確保沒有用戶能夠遠程連接到系統(tǒng)。
提示:如果想要更加保險,可以在MySQL服務(wù)器設(shè)置里添加bind-address=127.0.0.1指令,將MySQL強制綁定到本地機器的IP地址,從而確保只有同一系統(tǒng)的用戶才能連接到MySQL。
第六步:積極監(jiān)控MySQL的訪問日志
MySQL里具有很多不同的日志文件,用來記錄客戶端連接、查詢和服務(wù)器錯誤。其中最重要的就是通用查詢?nèi)罩?general query log),其中以時間戳記錄了每一個客戶端連接和斷開連接,并記錄了客戶端執(zhí)行每一次查詢的情況。如果你懷疑MySQL出現(xiàn)了不尋常的活動,例如和網(wǎng)絡(luò)侵入有關(guān)的活動,那么最好對這個日志進行監(jiān)控,往往就可以查出此類活動的源頭。
總結(jié)
MySQL數(shù)據(jù)庫的保護工作是一項需要持之以恒的任務(wù),一旦你已經(jīng)開始實施了上面的保護措施,就不要輕易的中斷。查閱MySQL的相關(guān)說明文獻或者訪問MySQL的論壇,你可以獲得更多關(guān)于安全方面的信息,然后應(yīng)用到實際行動中,積極主動的檢測和更新系統(tǒng)的安全設(shè)置。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com