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

MySQL 資料庫安全 23 條鐵律:傳輸加密、帳號權限、網路隔離、審計日誌與應用防注入全景防護

     編輯:MySQL 資料庫相關知識

23 條安全鐵律

  1. 跨非信任網路必用 SSH Tunnel/TLS:加密傳輸防竊聽/篡改/重放。
  2. 密碼管理規範:SET PASSWORD / ALTER USER 修改,禁止明文寫入 user 表。
  3. 威脅模型:防竊聽、篡改、重放、DoS;基於 ACL + SSL 多層防護。
  4. user 表嚴格保護:僅 root 可讀寫,密碼雜湊外洩即帳號淪陷。
  5. GRANT/REVOCE 管理權限:標準化授權回收流程。
  6. 單向雜湊儲存密碼:應用層用 bcrypt/scrypt/Argon2,資料庫層 PASSWORD() 僅供內部認證。
  7. 拒絕弱密碼:字典詞、生日、鍵盤排列;強制複雜度策略。
  8. 防火牆/網路隔離:資料庫置內網/DMZ,3306 埠禁止公網直連。
  9. 3306 埠掃描驗證:nmap -p 3306 / telnet host 3306 確認封鎖生效。
  10. 防 SQL 注入:參數化查詢、白名單驗證、URL 編碼 (%22 %27 %23)。
  11. 輸入長度/型別檢查:應用層與資料庫層雙重校驗。
  12. 應用專用帳號最小權限:無 DROP/ALTER/GRANT/FILE/SHUTDOWN/PROCESS/SUPER。
  13. 各語言逃逸函數:mysql_real_escape_string (C)、mysqli_real_escape_string (PHP)、PreparedStatement (Java/JDBC)。
  14. 生產環境強制 TLS:REQUIRE SSL 帳號屬性、伺服器 require_secure_transport=ON。
  15. tcpdump 審計明文傳輸:tcpdump -i eth0 -w - port 3306 | strings 驗證加密生效。
  16. 禁用符號連結:--skip-symbolic-links 防目錄遍歷。
  17. 資料目錄權限最小化:僅 mysqld 運行用戶可讀寫。
  18. PROCESS/SUPER 僅 DBA:防查看慢查詢文本洩露敏感資料、防修改全域變數。
  19. FILE 權限極嚴控:防 LOAD DATA INFILE '/etc/passwd' 讀取系統檔案。
  20. 不信任 DNS → 僅用 IP 授權:skip-name-resolve=ON,權限表 Host 欄位純 IP。
  21. 連線數配額:max_user_connections、GRANT ... WITH MAX_CONNECTIONS_PER_HOUR。
  22. 資源控制選項:MAX_QUERIES_PER_HOUR、MAX_UPDATES_PER_HOUR。
  23. 啟動安全參數基線:local-infile=0、skip-grant-tables=OFF、secure-auth=ON、safe-user-create=ON、skip-show-database=ON。
  24. Error 1045 密碼重置標準流程:--skip-grant-tables 啟動 → UPDATE user SET authentication_string=PASSWORD('new') WHERE User='root' → FLUSH PRIVILEGES → 移除參數重啟。

執行清單化落地

  • 將 23 條轉換為 Ansible Playbook / Terraform Module / Helm Chart 程式碼。
  • CI/CD 管道整合 基線掃描 (Lynis/MySQLTuner/Security Audit)。
  • 季度紅隊演練:模擬注入、提權、資料外洩,驗證防禦有效性。
  • 建立安全事件響應 SOP:發現 → 隔離 → 取證 → 恢復 → 複盤 → 基線更新。

結語

MySQL 安全非清單勾選,而是持續的工程體系。23 條鐵律覆蓋傳輸/儲存/存取/網路/審計/應用/響應七大域。將基線編碼為 IaC、納入 CI 門檻、定期紅隊驗證、建立響應閉環,才能構建經得起實戰考驗的資料庫安全態勢。

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