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