91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么強化MySQL的安全

發布時間:2022-09-20 11:05:23 來源:億速云 閱讀:136 作者:iii 欄目:MySQL數據庫

這篇文章主要介紹“怎么強化MySQL的安全”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么強化MySQL的安全”文章能幫助大家解決問題。

第一步:設置強密碼

對于所有數據庫用戶來說,使用強密碼很重要。鑒于大多數人不會經常手動登錄數據庫,請使用密碼管理器或命令行工具 pwgen 為你的數據庫帳戶創建一個隨機的 20 個字符的密碼。即使你使用額外的 MySQL 訪問控制來限制特定帳戶可以登錄的位置(例如將帳戶嚴格限制為 localhost),這依然很重要。

設置密碼的最重要的 MySQL 帳戶是 root 用戶。默認情況下,在許多系統中,該用戶沒有密碼。特別是,基于 Red Hat 的系統在安裝 MySQL 時不會設置密碼;雖然基于 Debian 的系統會在交互式安裝期間提示您輸入密碼,但非交互式安裝(就像您可能使用配置管理器執行的那樣)會跳過它。此外,你仍然可以在交互式安裝期間跳過設置密碼。

你可能認為讓 root 用戶不輸入密碼并不是什么大的安全風險。畢竟,用戶設置為 “root@localhost”,你可能認為這意味著你必須先 root 計算機,然后才能成為該用戶。不幸的是,這意味著任何可以從 localhost 觸發 MySQL 客戶端的用戶都可以使用以下命令以 MySQL root 用戶身份登錄:

*$ mysql — user root*

因此,如果你不為 root 用戶設置密碼,那么任何能夠在您的 MySQL 機器上獲得本地 shell 的人現在都可以完全控制你的數據庫。

要修復此漏洞,請使用 mysqladmin 命令為 root 用戶設置密碼:

$ sudo mysqladmin password

不幸的是,MySQL 以 root 用戶身份運行后臺任務。一旦你設置了密碼,這些任務就會中斷,除非采取額外的步驟將密碼硬編碼到 /root/.my.cnf 文件中:

[mysqladmin]
user = rootpassword = yourpassword

但是,這意味著你必須將密碼以純文本形式存儲在主機上。但是你至少可以使用 Unix 文件權限將對該文件的訪問限制為僅 root 用戶:

sudo chown root:root /root/.my.cnf
sudo chmod 0600 /root/.my.cnf

第二步:刪除匿名用戶

匿名帳戶是既沒有用戶名也沒有密碼的 MySQL 帳戶。你不希望攻擊者在沒有密碼的情況下對你的數據庫進行任何形式的訪問,因此請在此命令的輸出中查找使用空白用戶名記錄的任何 MySQL 用戶:

> SELECT Host, User FROM mysql.user;
+ — — — — — — — — — — — — + — — — -+
| Host | User |
+ — — — — — — — — — — — — + — — — -+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | |
| localhost | root |
+ — — — — — — — — — — — — + — — — -+
4 rows in set (0.00 sec)

在這些根用戶中間有一個匿名用戶( localhost ),它在 User 列中為空。你可以使用下面命令清除特定的匿名用戶:

> drop user ""@"localhost";
> flush privileges;

如果你發現任何其他匿名用戶,請確保將其刪除。

第三步:遵循最小特權原則

最小特權原則是一項安全原則,可以總結如下:

只為賬戶提供執行作業所需的訪問權限,而不提供更多權限。

此原則可以通過多種方式應用于 MySQL。首先當使用 GRANT 命令向特定用戶添加數據庫權限時,請確保僅限制該用戶需要訪問數據庫的權限:

> grant all privileges on mydb.* to someuser@"localhost" identified by 'astrongpassword';
> flush privileges;

如果該用戶只需要訪問一個特定的表(例如,users 表),用mydb.users  或者任何你的表的名字替換 mydb.*(授予對所有表的權限)。

許多人會授予用戶對數據庫的完全訪問權限;但是如果你的數據庫用戶僅僅只需要讀取數據而不需要更改數據,則需要額外的步驟授予對數據庫的只讀訪問權限:

> grant select privileges on mydb.* to someuser@"localhost" identified by 'astrongpassword';
> flush privileges;

最后,許多數據庫用戶不會從 localhost 訪問數據庫,通常管理員會創建他們,像這樣:

> grant all privileges on mydb.* to someuser@"%"  identified by 'astrongpassword';
> flush privileges;

這將允許 「someuser」從任何網絡訪問數據庫。但是,如果你有一組定義明確的內部 IP,或者 - 甚至更好 - 已經設置了 VLANS ,以便你所有應用程序服務器與其它主機位于不同的子網中,那么就可以利用這個優勢來限制 「someuser」,使得該賬戶只能從特定網絡訪問數據庫:

> grant all privileges on mydb.* to someuser@10.0.1.0/255.255.255.0 identified by 'astrongpassword';
> flush privileges;

第四步:啟用 TLS

設置強密碼僅只有攻擊者可以在網絡上讀取你的密碼或者其他敏感數據的情況下才能達到此目的。因此,使用 TLS 保護你的所有網絡流量比以往任何時候都更加重要。

MySQL 也不例外。

幸運的是,在 MySQL 中啟用 TLS 比較簡單。一旦你有了你的主機的有效證書,只需要在你的主 my.cnf 文件的 [mysqld]部分添加以下幾行 :

[mysqld]
ssl-ca=/path/to/ca.crt
ssl-cert=/path/to/server.crt
ssl-key=/path/to/server.key

為了額外的安全性,還可以添加 ssl-cipher 配置選項,其中包含一個被認可的密碼列表,而不是只接受默認的密碼列表,這可能包括較弱的 TLS 密碼。我推薦使用  Mozilla Security/Server Side TLS page 所推薦的現代或者中級密碼套件。

一旦服務器端設置了 TLS ,你可以限制客戶端必須采用 TLS 進行連接,通過在 GRANT 語句中添加 REQUIRE SSL :

> grant all privileges on mydb.* to someuser@10.0.1.0/255.255.255.0 identified by 'astrongpassword' REQUIRE SSL;

> flush privileges;

第五步:加密數據庫密鑰

雖然現在很多人都知道使用單向散列(理想情況下是像 bcrypt 這樣慢速散列 ),保護用戶數據庫存儲的密碼有多重要,但通常沒過多考慮使用加密來保護數據庫上其他的敏感數據。事實上,許多管理員會告訴你他們的數據庫是加密的,因為磁盤本身是加密的。這實際上會影響你的數據庫加固,不是因為磁盤加固有缺陷或糟糕的做法,而是因為它會給你一種錯誤的信任感。

磁盤加密保護你的數據庫數據,以防止有人從你的服務器竊取磁盤(或者你買了二手磁盤后忘記擦除磁盤),但是磁盤加密并不能在數據庫本身運行時保護你,因為驅動器需要處于解密狀態才能被讀取。

要保護數據庫中的數據,你需要采取額外的措施,在存儲敏感字段之前對它們進行加密。這樣如果攻擊者找到了某種方法來轉存完整的數據庫,你的敏感字段仍然會受到保護。

有許多加密數據庫中字段的方法,而且 MySQL 支持本地加密命令。無論你采取哪種加密方法,我都建議避免你需要將解密密鑰存儲在數據庫本身的加密方法。

理想情況下,你會把解密的密鑰存儲在應用服務器上,作為本地GPG密鑰(如果你使用GPG進行加密)或者將其存儲為應用程序服務器上的環境變量。這樣即使攻擊者可能找到一種方法來破壞應用程序服務器的服務器,他也必須將攻擊轉換為本地shell訪問,以此來獲取你的解密密鑰。

MySQL 加固原則:掌握最小權限原則

有很多方法來鎖定你的MySQL服務器。確切地說,你如何實施這些步驟取決于你如何設置自己的數據庫,以及它在網絡中的位置。

雖然前面的五個步驟將有助于保護你的數據庫,但我認為更需要掌握的最重要的整體步驟是最小權限原則。你的數據庫可能存儲來一些非常有用的數據,如果你確保用戶和應用程序只具有執行其工作的所需的最小訪問權限,那么你將限制攻擊者能夠做什么,如果黑客找到來危害該用戶或者應用程序的方法。

關于“怎么強化MySQL的安全”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西藏| 龙胜| 大城县| 博罗县| 威远县| 新丰县| 封丘县| 西贡区| 罗田县| 容城县| 济源市| 卓尼县| 调兵山市| 宣威市| 金秀| 盐池县| 镇江市| 惠州市| 长沙市| 洪湖市| 泉州市| 樟树市| 尚志市| 玛沁县| 正阳县| 吉林省| 中卫市| 万盛区| 胶州市| 同江市| 天祝| 尼木县| 金川县| 乐昌市| 诸城市| 东山县| 临沧市| 明水县| 镇远县| 景宁| 赞皇县|