萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 資料庫防禦指南:從加密傳輸到最小權限原則

傳輸層加固

  • 密碼不以明文傳輸:MySQL 4.1+ 使用挑戰-回應機制(SHA1 雜湊),密碼不會在網路上明文流動。
  • 資料加密傳輸:啟用壓縮協定(--compress)可混淆流量;生產環境強制使用 SSL/TLS(REQUIRE SSL)或 SSH 隧道,防止中間人竊聽敏感資料。

帳號與認證鐵律

  1. 全帳號強制複雜密碼:長度 ≥12 位,含大小寫、數字、特殊符號。定期輪換,禁用預設帳號。
  2. 禁用 root 遠端登入:DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; FLUSH PRIVILEGES;
  3. 專用系統帳號運行 mysqld:建立 mysql 系統使用者,chown -R mysql:mysql /var/lib/mysql,啟動腳本以該身份執行,杜絕 root 權限運行。
  4. 保護啟動腳本:chmod 600 /etc/my.cnf、chown root:root /etc/init.d/mysql,防止密碼洩漏。
  5. 資料目錄權限收斂:chmod 750 /var/lib/mysql,僅 mysql 使用者可讀寫。

高危權限管控清單

權限風險等級風險描述管控建議
PROCESS高可查看所有執行中 SQL(含敏感密碼變更語句)僅 DBA 擁有,保留預留連線供管理員緊急登入
FILE極高讀寫伺服器任意檔案(/etc/passwd、資料庫實體檔、SSL 金鑰)嚴禁授予應用帳號;導入導出僅限 DBA 透過安全通道操作
GRANT OPTION高權限轉授,導致權限攀升僅 root/管理角色持有
ALTER中高可透過 RENAME TABLE 繞過權限控制僅結構變更角色持有
SHUTDOWN高可癱瘓整個資料庫服務僅運維帳號持有
SUPER極高KILL 任意連線、修改全域變數、啟用/停用複寫極少數核心 DBA 持有

網路與主機名防禦

  • 授權表僅保留業務必要的 Host 值,移除 %、192.168.% 等寬鬆模式。
  • 若 DNS 不可信,直接使用 IP 位址(192.168.1.10)或 CIDR(192.168.1.0/255.255.255.0)。
  • 啟動參數 --skip-name-resolve 禁用 DNS 反查,提升連線速度並消除 DNS 攻擊面。
  • 防火牆層面限制 3306 僅對應用伺服器、管理堡壘機開放。

審計與監控

  • 啟用 general_log(審計)與 slow_query_log(效能),日誌輸出至 TABLE 便於查詢分析。
  • 部署資料庫防火牆(如 MariaDB MaxScale、Oracle Database Firewall)攔截異常 SQL。
  • 定期巡檢 mysql.user、mysql.db、information_schema.USER_PRIVILEGES,清理殭屍帳號、過期權限。
copyright © 萬盛學電腦網 all rights reserved