萬盛學電腦網

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

MySQL 數據庫安全防範實戰指南:六大核心策略

前言

數據庫安全是系統防禦的最後一道防線。本文梳理六大實戰策略,從審計、權限、傳輸、配置、網絡到認證,構建纵深防護體系。

策略一:積極審計訪問日誌

關鍵日誌類型

  • General Query Log:記錄所有連接/斷開/查詢,審計首選
  • Error Log:服務啟停、崩潰、異常信息
  • Slow Query Log:性能分析副產物,亦可發現異常掃描
  • Binary Log:主從同步基礎,亦可用於變更追蹤

實施建議

[mysqld]
general_log = ON
general_log_file = /var/log/mysql/mysql_audit.log
log_output = FILE  -- 或 TABLE 寫入 mysql.general_log 表
  • 定期歸檔壓縮,保留 90 天以上
  • 接入 SIEM 系統(如 ELK、Splunk)實時告警
  • 重點監控:非常用時間登錄、大量失敗嘗試、DDL 操作、權限變更

策略二:清理授權表通配符

風險場景

-- 危險:% 允許任意主機
GRANT ALL ON *.* TO 'dev'@'%' IDENTIFIED BY 'weak';

-- 危險:庫級通配符
GRANT ALL ON `db_%`.* TO 'app'@'10.0.%';

整治步驟

  1. SELECT user, host FROM mysql.user WHERE host LIKE '%%'; 掃描通配符賬號
  2. SHOW GRANTS FOR 'user'@'host'; 審核具體權限
  3. 最小權限原則:按「業務賬號 + 具體 IP + 單庫單表 + 僅需 CRUD」重新授權
  4. 移除無用賬號:DROP USER 'test'@'%';

策略三:加密客戶端-服務端傳輸

方案對比

MySQL SSL 快速啟用

-- 服務端生成證書(或用 mysql_ssl_rsa_setup)
-- my.cnf
[mysqld]
ssl_ca=/etc/mysql/certs/ca.pem
ssl_cert=/etc/mysql/certs/server-cert.pem
ssl_key=/etc/mysql/certs/server-key.pem
require_secure_transport=ON  -- 強制加密連接

-- 客戶端驗證
mysql --ssl-mode=VERIFY_IDENTITY --ssl-ca=ca.pem ...

策略四:鎖緊配置文件權限

# 客戶端配置 ~/.my.cnf
[client]
user=app_user
password=Str0ngP@ssw0rd!

# 權限必須 600
chmod 600 ~/.my.cnf
chown app_user:app_user ~/.my.cnf
  • 禁止在代碼庫提交明文密碼
  • 生產環境使用密碼管理工具(Vault、AWS Secrets Manager)
  • 服務端 my.cnf 同樣限制 chmod 640、屬主 mysql:mysql

策略五:禁用/限制遠程訪問

層級防護

  1. 服務端綁定:bind-address = 127.0.0.1(僅本機)或內網 IP
  2. 防火牆:iptables -A INPUT -p tcp --dport 3306 -s 10.0.0.0/8 -j ACCEPT
  3. 賬號綁定:CREATE USER 'app'@'10.0.1.%' ... 拒絕 %
  4. 跳板機/堡壘機:運維統一入口,審計錄屏

策略六:強制強密碼策略

-- 安裝插件(MySQL 5.6+)
INSTALL PLUGIN validate_password SONAME 'validate_password.so';

-- 配置策略
[mysqld]
validate_password_policy=MEDIUM  -- LOW/MEDIUM/STRONG
validate_password_length=12
validate_password_mixed_case_count=1
validate_password_number_count=1
validate_password_special_char_count=1

-- 禁止舊式密碼
default_authentication_plugin=mysql_native_password
old_passwords=0

持續安全清單

  • [ ] 季度輪換服務賬號密鑰
  • [ ] 月度審計 mysql.user 與 mysql.db
  • [ ] 啟用 log_raw=OFF 防止日誌注入
  • [ ] 定期運行 mysql_secure_installation
  • [ ] 訂閱 MySQL 安全公告(CVE)並及時打補丁

安全不是產品,而是過程。將上述策略納入 CI/CD 與運維 SOP,才能真正落地。

copyright © 萬盛學電腦網 all rights reserved
方案優點缺點適用場景
MySQL 原生 SSL零依賴、原生支持證書管理較繁瑣內網/雲托管
SSH 隧道複用 SSH 金鑰、穿透防火牆需維護隧道進程運維訪問、跨網段
VPN / VPC網絡層隔離、全流量加密架構調整大生產環境標配