首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL安全加固23條鐵律:從網路傳輸到權限管控的全方位防護

     編輯:MySQL 資料庫相關知識

MySQL安全不容忽視,以下彙整23項關鍵防護措施,涵蓋網路傳輸、認證授權、參數過濾、審計監控等層面,助你建立纏深防禦體系。

網路傳輸與連線安全

  1. 跨非受信網路連線必須加密:使用SSH隧道或SSL保護客戶端與伺服器通訊。
  2. 修改密碼標準流程:mysql -u root → UPDATE mysql.user SET password=PASSWORD('newpwd') → FLUSH PRIVILEGES。
  3. 防範核心攻擊向量:竊聽、篡改、重放、拒絕服務;全面採用ACL(存取控制清單)與SSL連線。
  4. 嚴守mysql.user表存取控制:除root外禁止任何用戶存取,加密密碼一旦洩露將導致帳號被盜用。
  5. 使用GRANT/REVOKE管理權限:避免直接操作授權表降低出錯風險。
  6. 拒絕明文密碼:採用MD5()、SHA1()等單向雜湊函數儲存密碼。
  7. 杜絕字典弱密碼:強制複雜度策略。
  8. 部署防火牆隔離:資料庫置於防火牆後或DMZ區域,阻擋50%以上外部威脅。
  9. 封鎖非受信網路存取3306埠:以nmap或telnet驗證,於防火牆/路由器層面攔截。

應用層防禦:SQL注入與參數檢查

  1. 防禦SQL注入:表單使用單/雙引號包裹字串,動態URL編碼特殊字元(%22、%23、%27),嚴禁未檢查的值直入MySQL。
  2. 驗證輸入資料長度:防止超長載荷攻擊。
  3. 應用程式使用最小權限帳號:僅授予必要權限,嚴禁使用root連線。
  4. 善用各語言驅動的跳脫函數:PHPmysql_real_escape_string()、JavaPreparedStatement等。
  5. 網路傳輸強制加密:SSL/SSH取代明文傳輸。

系統與審計強化

  1. 停用符號連結:啟動參數--skip-symbolic-links。
  2. 資料目錄權限最小化:僅MySQL服務帳號具讀寫權。
  3. 嚴控PROCESS/SUPER權限:防止查詢文本洩露(含敏感SQL)、任意切斷連線、修改伺服器狀態。
  4. 禁止非管理員擁有FILE權限:防LOAD DATA INFILE '/etc/passwd'類攻擊。
  5. 不信任DNS時改用IP授權:授權表僅填數字IP。
  6. 限制單一帳號最大連線數:設定max_user_connections。
  7. 善用GRANT資源控制選項:每小時查詢/更新/連線上限。
  8. 啟動安全參數:--local-infile=0禁用LOAD DATA LOCAL、--skip-show-databases隱藏資料庫列表、謹慎使用--skip-grant-tables(僅緊急重設密碼時暫用)。
  9. 密碼遺失緊急恢復流程:--skip-grant-tables啟動 → UPDATE user SET password=PASSWORD('new') WHERE user='root' → FLUSH PRIVILEGES → 重啟。

將這23條納入運維規範,定期稽核,能將MySQL安全基線大幅提升,抵禦多數常見攻擊向量。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved