MySQL服務安全加固


數據庫管理人員可以參考本文檔進行 MySQL 數據庫系統的安全配置加固,提高數據庫的安全性,確保數據庫服務穩定、安全、可靠地運行。

漏洞發現

您可以使用安騎士企業版自動檢測您的服務器上是否存在 MySQL 漏洞問題,或者您也可以自己排查您服務器上的 MySQL 服務是否存在安全問題。

安全加固

  1. 帳號安全

    • 禁止 Mysql 以管理員帳號權限運行

      以普通帳戶安全運行 mysqld,禁止以管理員帳號權限運行 MySQL 服務。在 /etc/my.cnf 配置文件中進行以下設置。

       
       
      1. [mysql.server]
      2. user=mysql
    • 避免不同用戶間共享帳號

      參考以下步驟。

      1. 創建用戶。

         
         
        1. mysql> mysql> insert into
        2. mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub
        3. ject) values("localhost","pppadmin",password("passwd"),'','','');

        執行以上命令可以創建一個 phplamp 用戶。

      2. 使用該用戶登錄 MySQL 服務。

         
         
        1. mysql>exit;
        2. @>mysql -u phplamp -p
        3. @>輸入密碼
        4. mysql>登錄成功
    • 刪除無關帳號

      DROP USER 語句可用於刪除一個或多個 MySQL 賬戶。使用 DROP USER 命令時,必須確保當前賬號擁有 MySQL 數據庫的全局 CREATE USER 權限或 DELETE 權限。賬戶名稱的用戶和主機部分分別與用戶表記錄的 User 和 Host 列值相對應。

      執行DROP USER user;語句,您可以取消一個賬戶和其權限,並刪除來自所有授權表的帳戶權限記錄。

  2. 口令

    檢查賬戶默認密碼和弱密碼。口令長度需要至少八位,並包括數字、小寫字母、大寫字母和特殊符號四類中的至少兩種類型,且五次以內不得設置相同的口令。密碼應至少每 90 天進行一次更換。

    您可以通過執行以下命令修改密碼。

     
     
    1. mysql> update user set password=password('test!p3') where user='root';
    2. mysql> flush privileges;
  3. 授權

    在數據庫權限配置能力范圍內,根據用戶的業務需要,配置其所需的最小權限。

    1. 查看數據庫授權情況。

       
       
      1. mysql> use mysql;
      2. mysql> select * from user;
      3. mysql>select * from db;
      4. mysql>select * from host;
      5. mysql>select * from tables_priv;
      6. mysql>select * from columns_priv;
    2. 通過 revoke 命令回收不必要的或危險的授權。

       
       
      1. mysql> help revoke
      2. Name: 'REVOKE'
      3. Description:
      4. Syntax:
      5. REVOKE
      6. priv_type [(column_list)]
      7. [, priv_type [(column_list)]] ...
      8. ON [object_type]
      9. {
      10. *
      11. | *.*
      12. | db_name.*
      13. | db_name.tbl_name
      14. | tbl_name
      15. | db_name.routine_name
      16. }
      17. FROM user [, user] ...
  4. 開啟日志審計功能

    數據庫應配置日志功能,便於記錄運行狀況和操作行為。

    MySQL服務有以下幾種日志類型:

    • 錯誤日志: -log-err
    • 查詢日志: -log (可選)
    • 慢查詢日志: -log-slow-queries (可選)
    • 更新日志: -log-update
    • 二進制日志: -log-bin

      找到 MySQL 的安裝目錄,在 my.ini 配置文件中增加上述所需的日志類型參數,保存配置文件后,重啟 MySQL 服務即可啟用日志功能。例如,

       
       
      1. #Enter a name for the binary log. Otherwise a default name will be used.
      2. #log-bin=
      3. #Enter a name for the query log file. Otherwise a default name will be used.
      4. #log=
      5. #Enter a name for the error log file. Otherwise a default name will be used.
      6. log-error=
      7. #Enter a name for the update log file. Otherwise a default name will be used.
      8. #log-update=

      該參數中啟用錯誤日志。如果您需要啟用其他的日志,只需把對應參數前面的 “#” 刪除即可。

      日志查詢操作說明

      • 執行show variables like 'log_%';命令可查看所有的 log。
      • 執行show variables like 'log_bin';命令可查看具體的 log。
  5. 安裝最新補丁

    確保系統安裝了最新的安全補丁。

    注意: 在保證業務及網絡安全的前提下,並經過兼容性測試后,安裝更新補丁。

  6. 如果不需要,應禁止遠程訪問

    禁止網絡連接,防止猜解密碼攻擊、溢出攻擊、和嗅探攻擊。

    注意: 僅限於應用和數據庫在同一台主機的情況。

    如果數據庫不需要遠程訪問,可以禁止遠程 TCP/IP 連接,通過在 MySQL 服務器的啟動參數中添加--skip-networking參數使 MySQL 服務不監聽任何 TCP/IP 連接,增加安全性。

    您可以使用 安全組 進行內外網訪問控制,建議不要將數據庫高危服務對互聯網開放。

  7. 設置可信 IP 訪問控制

    通過數據庫所在操作系統的防火牆限制,實現只有信任的 IP 才能通過監聽器訪問數據庫。

     
     
    1. mysql> GRANT ALL PRIVILEGES ON db.*
    2. ·-> -> TO 用戶名@'IP子網/掩碼';
  8. 連接數設置

    根據您的機器性能和業務需求,設置最大、最小連接數。

    在 MySQL 配置文件(my.conf 或 my.ini)的 [mysqld] 配置段中添加max_connections = 1000,保存配置文件,重啟 MySQL 服務后即可生效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM