【中培課堂】14種有效保障 MySQL安全的方法
MySQL 數(shù)據(jù)庫一貫以高性能、高可性和易用性著稱,它已經(jīng)成為世界上最流行的開源數(shù)據(jù)庫。
但有的企業(yè)在安裝MySQL時用的是默認(rèn)選項,由此造成其數(shù)據(jù)不安全,且服務(wù)器也面臨被入侵的風(fēng)險,并有可能在短時間內(nèi)就出現(xiàn)性能問題。為此,中培偉業(yè)《SOL Server2014 高級管理與性能調(diào)優(yōu)》專家臧老師也精通MySQL的安全防護(hù),他在這里介紹了14種有效保障MySQL安全的方法:
(1)避免從互聯(lián)網(wǎng)訪問MySQL數(shù)據(jù)庫,確保特定主機(jī)才擁有訪問特權(quán)
直接通過本地網(wǎng)絡(luò)之外的計算機(jī)改變生產(chǎn)環(huán)境中的數(shù)據(jù)庫是異常危險的。所以,把重要的操作限制給特定主機(jī)非常重要問。
(2)定期備份數(shù)據(jù)庫
任何系統(tǒng)都有可能發(fā)生災(zāi)難。服務(wù)器、MySQL也會崩潰,也有可能遭受入侵,數(shù)據(jù)有可能被刪除。只有為最糟糕的情況做好了充分的準(zhǔn)備,才能夠在事后快速地從災(zāi)難中恢復(fù)。企業(yè)最好把備份過程作為服務(wù)器的一項日常工作。
(3)禁用或限制遠(yuǎn)程訪問
前面說過,如果使用了遠(yuǎn)程訪問,要確保只有定義的主機(jī)才可以訪問服務(wù)器。這一般是通過TCP wrappers、iptables或任何其它的防火墻軟件或硬件實現(xiàn)的。
(4)設(shè)置root用戶的口令并改變其登錄名
在linux中,root用戶擁有對所有數(shù)據(jù)庫的完全訪問權(quán)。因而,在Linux的安裝過程中,一定要設(shè)置root口令。當(dāng)然,要改變默認(rèn)的空口令,其方法如下。
(5)移除測試(test)數(shù)據(jù)庫
在默認(rèn)安裝的MySQL中,匿名用戶可以訪問test數(shù)據(jù)庫。我們可以移除任何無用的數(shù)據(jù)庫,以避免在不可預(yù)料的情況下訪問了數(shù)據(jù)庫。
(6)禁用LOCAL INFILE
另一項改變是禁用”LOAD DATA LOCAL INFILE”命令,這有助于防止非授權(quán)用戶訪問本地文件。在PHP應(yīng)用程序中發(fā)現(xiàn)有新的SQL注入漏洞時,這樣做尤其重要。
(7)移除匿名賬戶和廢棄的賬戶
有些MySQL數(shù)據(jù)庫的匿名用戶的口令為空。因而,任何人都可以連接到這些數(shù)據(jù)庫。
(8)降低系統(tǒng)特權(quán)
常見的數(shù)據(jù)庫安全建議都有“降低給各方的特權(quán)”這一說法。對于MySQL也是如此。一般情況下,開發(fā)人員會使用最大的許可,不像安全管理一樣考慮許可原則,而這樣做會將數(shù)據(jù)庫暴露在巨大的風(fēng)險中。
為保護(hù)數(shù)據(jù)庫,務(wù)必保證真正存儲MySQL數(shù)據(jù)庫的文件目錄是由”mysql” 用戶和” mysql”組所擁有的。
此外,還要確保僅有用戶”mysql”和root用戶可以訪問/var/lib/mysql目錄。Mysql的二進(jìn)制文件存在于/usr/bin/目錄中,它應(yīng)當(dāng)由root用戶或特定的”mysql”用戶所擁有。對這些文件,其它用戶不應(yīng)當(dāng)擁有“寫”的訪問權(quán):
(9)降低用戶的數(shù)據(jù)庫特權(quán)
有些應(yīng)用程序是通過一個特定數(shù)據(jù)庫表的用戶名和口令連接到MySQL的,安全人員不應(yīng)當(dāng)給予這個用戶完全的訪問權(quán)。如果攻擊者獲得了這個擁有完全訪問權(quán)的用戶,他也就擁有了所有的數(shù)據(jù)庫。查看一個用戶許可的方法是在MySQL控制臺中使用命令SHOW GRANT。
(10)移除和禁用.mysql_history文件
在用戶訪問MySQL控制臺時,所有的命令歷史都被記錄在~/.mysql_history中。如果攻擊者訪問這個文件,他就可以知道數(shù)據(jù)庫的結(jié)構(gòu)。
(11)安全補(bǔ)丁
務(wù)必保持?jǐn)?shù)據(jù)庫為最新版本。因為攻擊者可以利用上一個版本的已知漏洞來訪問企業(yè)的數(shù)據(jù)庫。
(12)啟用日志
如果你的數(shù)據(jù)庫服務(wù)器并不執(zhí)行任何查詢,建議你啟用跟蹤記錄。對于生產(chǎn)環(huán)境中任務(wù)繁重的MySQL數(shù)據(jù)庫,因為這會引起服務(wù)器的高昂成本。此外,還要保證只有root和mysql可以訪問這些日志文件。
(13)改變root目錄
Unix操作系統(tǒng)中的chroot可以改變當(dāng)前正在運(yùn)行的進(jìn)程及其子進(jìn)程的root目錄。重新獲得另一個目錄root權(quán)限的程序無法訪問或命名此目錄之外的文件,此目錄被稱為“chroot監(jiān)獄”。
通過利用chroot環(huán)境,你可以限制MySQL進(jìn)程及其子進(jìn)程的寫操作,增加服務(wù)器的安全性。你要保證chroot環(huán)境的一個專用目錄,如/chroot/mysql。此外,為了方便利用數(shù)據(jù)庫的管理工具,你可以在MySQL配置文件的[client]部分改變相關(guān)參數(shù)。
(14)禁用LOCAL INFILE命令
LOAD DATA LOCAL INFILE可以從文件系統(tǒng)中讀取文件,并顯示在屏幕中或保存在數(shù)據(jù)庫中。如果攻擊者能夠從應(yīng)用程序找到SQL注入漏洞,這個命令就相當(dāng)危險了。
- 上一篇:淺論DDOS攻擊和防御
- 下一篇:金融科技風(fēng)險的特征及其控制機(jī)制