MySQL 和 MariaDB 安全的最佳提示

已發表: 2022-01-08

安全是許多人關心的大問題。 這篇文章將為您提供十個關於如何實現 MySQL 和 MariaDB 安全性的提示,以使您的數據庫免受黑客攻擊。 這些提示包括:備份數據、使用強密碼和限制訪問權限。


MySQL 和 MariaDB 安全的最佳提示

以下是實現 MySQL 和 MariaDB 安全性的最佳技巧:


刪除沒有密碼的用戶

如果您的數據庫中有沒有密碼的用戶,最好將其刪除。 這將有助於減少有人能夠侵入您的數據庫的機會。 您可以使用以下查詢來刪除這些用戶:

無論用戶是否只能從 localhost 訪問,都應該刪除它們以停止運行任何負面命令。 此外,弱密碼本身就是一種安全風險。

在數據庫中創建用戶時,您應該始終使用強密碼。 弱密碼更容易被黑客破解,這可能導致他們訪問您的數據庫並在他們管理時對其造成嚴重破壞。 使用自動密碼生成器將有助於為您創建更難破解的更強密碼。

您還應該考慮為您的用戶使用雙重身份驗證。 這將需要一個額外的代碼,通常發送到他們的手機,以便登錄數據庫。 如果某人只有您的用戶名和密碼,這會使他們更難獲得訪問權限。


限制遠程訪問

如果您不需要遠程訪問您的數據庫,那麼最好限制它。 這將有助於減少有人能夠從遠程位置侵入您的數據庫的機會。

幸運的是,除非另有說明,否則最新版本的 MySQL 和 MariaDB 會自動限制對數據庫的遠程訪問。 但是,您仍應檢查您的安全設置以確保是這種情況。

確保所有用戶僅通過您想要的確切主機連接到 MySQL 也是一個好主意。 例如,這可以通過使用 ([email protected]) 來完成。


刪除測試數據庫

安裝 MySQL 或 MariaDB 時,會自動創建一個測試數據庫。 該數據庫包含的數據可用於入侵您的真實數據庫,如果它落入壞人之手。 最好刪除此數據庫,以免它被用於惡意目的。

此測試數據庫還會對數據庫服務器造成不必要的壓力。 它僅由數據庫測試人員用於測試查詢,因此可以在不影響數據庫功能的情況下將其刪除。


混淆對 MySQL 的訪問

如果您不希望人們知道您的數據庫存在,那麼您可以混淆它的訪問權限。 這將使某人更難找到您的數據庫併入侵它。

混淆訪問權限也使任何監視您的流量的人更難以確定 MySQL 或 MariaDB 正在使用哪些端口。

眾所周知,MySQL 在端口 3306 上運行,而“root”是超級用戶的名稱。 您可以通過編輯 my.cnf 並更改“端口”變量來解決此問題。


保護您的配置文件

與任何應用程序一樣,保護 MySQL 或 MariaDB 的配置文件很重要。 這些文件包含敏感信息,例如密碼和用戶數據。 保護這些文件將有助於防止任何人在訪問您的服務器時訪問此信息。


網絡安全

保護您的網絡以及服務器本身也很重要。 這將有助於減少有人從遠程位置侵入您的數據庫並在其上運行惡意命令的機會。

您應該確保的第一件事是 MySQL 只能通過本地連接訪問,而不是網絡。 您可以通過 Unix 套接字執行此操作。 在 my.cnf 中輸入“skip-networking”。 停止所有 TCP/IP 通信。

您還可以使用防火牆阻止從某些 IP 地址或範圍訪問 MySQL。 這將有助於減少有人從遠程位置侵入您的數據庫的機會。


使用審計插件

您還可以使用審計插件來跟踪數據庫中發生的事情。 這些將幫助您確定是否有人入侵了您的數據庫,或者是否正在發生可疑的事情可能表明這一點。

今天在線提供這些插件的大量免費和付費選項。 如果您的組織已經在使用 MySQL Enterprise,那麼 MySQL Enterprise Audit 是一個不錯的選擇。 MariaDB 也有自己的審計插件。

這些插件在監控數據庫中的可疑活動方面都做得很好。 如果檢測到任何異常情況,他們甚至可以向您發送警報,這樣您就不必每次都手動檢查日誌。


禁用 LOAD DATA LOCAL INFILE

另一種阻止某人訪問您的數據庫的方法是禁用 MySQL 和 MariaDB 中的 LOCAL 功能。 此命令允許您從本地文件加載數據文件,但它也會帶來安全風險——尤其是在它們未加密的情況下。 要禁用此功能,請在 my.cnf 中設置 local-infile=0。


文件權限

為 MySQL 和 MariaDB 文件設置正確的文件權限也很重要。 這將確保只有授權用戶才能訪問它們。 您可以通過對這些文件設置適當的權限來做到這一點。

例如,您可以將所有 MySQL 文件的所有者設置為“mysql”,將組設置為“mysql”,而所有其他用戶都被拒絕訪問。 這將確保只有具有正確權限的用戶才能訪問您的 MySQL 文件。


SSL 和傳輸中數據的加密

如果您在啟用 SSL 的情況下運行 MySQL 或 MariaDB,那麼在您的服務器上安裝必要的證書很重要。 如果不這樣做,任何人都可以截獲在您的數據庫與其客戶端之間發送的信息。

您還應該加密傳輸中的所有數據,以增加對使用 SSH 通過公共網絡傳輸的任何敏感數據的保護。

您還可以加密在數據庫服務器和其他設備之間傳輸的數據。 這將確保監視您網絡上的流量的任何人都無法訪問他們正在傳輸或接收的任何數據,即使他們已經設法侵入其中一個系統。

SSL 將是 MySQL 用戶實現這一目標的好方法,因為它已經內置在協議中。 MariaDB 用戶可以使用 stunnel 來實現類似的效果。


靜態數據加密

最後,您還應該考慮對靜態數據進行加密。 這意味著即使數據沒有被傳輸,數據也會被加密。

這可以通過使用 MySQL Enterprise Encryption 或 MariaDB Column Encryption 等工具來完成。

如果有人設法侵入您的數據庫服務器,這兩種工具都提供了一種很好的方法來保護您的數據不被訪問。 它們也非常易於使用,因此您無需成為加密專家即可利用這些工具。


結論

這裡提到的所有選項都將幫助您實現 MySQL 和 MariaDB 的安全性,但它們並非都適合所有情況。 在查看它們時,您應該考慮您的特定需求,以便您可以選擇最好的一種。 但是,這些提示應該讓您很好地了解如何選擇適合您的選項。

希望本文為您提供了一些關於如何在您的組織中實現 MySQL 和 MariaDB 安全性的好主意,這樣如果他們設法突破其他防禦,任何人都無法侵入您的數據庫。