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

Windows Server 下 MySQL 安全權限最小化配置指南

     編輯:MySQL 資料庫相關知識

核心原則:最小權限、最小攻擊面

Windows 環境下 MySQL 默認以 SYSTEM/Administrator 權限運行,一旦被攻破(SQL 注入、UDF 提權、文件讀寫漏洞),攻擊者即獲得系統最高控制權。通過**專用低權限服務賬號 + NTFS 精確授權 + 服務配置加固**,將損害半徑壓縮到最小。

實施步驟

1. 創建專用服務賬號

  • 賬號名:MysqlSvc(避免默認 mysql、admin 等易猜名稱)
  • 密碼:≥20 位強隨機字符,含大小寫、數字、特殊符號
  • 屬性:密碼永不過期、用戶不能更改密碼、帳戶已禁用(僅作服務登錄用,禁止互動登錄)
  • 組別:僅歸屬「Guests」組,移除 Users、Administrators 等所有其他組

2. 目錄結構規劃

D:\Hosting\
├── System\
│   └── MySQL\           # MySQL 程序安裝目錄 (bin、lib、share 等)
│       └── tmpdir\      # 臨時文件目錄 (tmpdir 參數指向此處)
└── MySQLDB\             # 數據目錄 (datadir 參數指向此處)

3. NTFS 權限精確配置

原則:禁用繼承,顯式添加 MysqlSvc 僅需權限,移除 Users/Everyone/Authenticated Users 等預設組。

目錄MysqlSvc 權限說明
D:\Hosting\System\MySQL\讀取和執行、列出文件夾內容、讀取運行二進制、讀取庫文件、啟動腳本
D:\Hosting\System\MySQL\tmpdir\修改、讀取和執行、列出文件夾內容、讀取、寫入創建/讀寫/刪除臨時表文件、排序文件
D:\Hosting\MySQLDB\修改、讀取和執行、列出文件夾內容、讀取、寫入數據文件(.ibd/.frm/.MYD/.MYI)、日志、socket 文件全生命周期管理

高級權限細節(右鍵屬性 → 安全 → 高級 → 編輯):

  • 勾選「僅將這些權限應用於此文件夾/子文件夾/文件」按需分配
  • 數據目錄需「刪除子文件夾和文件」權限以支持 DROP TABLE、TRUNCATE
  • 程序目錄**嚴禁寫入/修改**權限,防止二進制被替換植入後門

4. 修改 MySQL 服務運行身份

  1. services.msc → 找到 MySQL 服務 → 右鍵屬性 → 登錄
  2. 選擇「此賬號」,輸入 .\MysqlSvc 及密碼
  3. 應用 → 系統提示授予「作為服務登錄」權限 → 確定
  4. 重啟服務驗證

5. 修改 my.ini 關鍵配置

[mysqld]
# 指定臨時目錄(必須為 MysqlSvc 可寫入)
tmpdir = D:/Hosting/System/MySQL/tmpdir

# 數據目錄(安裝向導通常已設)
datadir = D:/Hosting/MySQLDB/

# 安全相關建議
skip_name_resolve = 1           # 禁用 DNS 反解
local_infile = 0                # 禁用 LOAD DATA LOCAL INFILE(防任意文件讀取)
secure_file_priv = ''           # 限制 LOAD/SELECT ... INTO OUTFILE 目錄,空值=禁用
symbolic_links = 0              # 禁用符號鏈接(防目錄遍歷)
# 如需導入導出,可設專用目錄:secure_file_priv = D:/Hosting/MySQLDB/Export/

6. Windows 防火牆規則

  • 入站規則:僅允許應用服務器 IP 段訪問 TCP 3306
  • 出站規則:阻止 MySQL 進程主動發起外部連接(防反彈 Shell、數據外洩)

7. 審計與日志

[mysqld]
log_error = D:/Hosting/MySQLDB/error.log
slow_query_log = 1
slow_query_log_file = D:/Hosting/MySQLDB/slow.log
long_query_time = 1
log_queries_not_using_indexes = 1
# 审计插件(企業版/ MariaDB / Percona)
# plugin_load_add = audit_log.dll
# audit_log_policy = ALL

驗證清單

  1. 服務以 MysqlSvc 身份運行(任務管理器 → 詳細信息 → 用戶名)
  2. 嘗試用 MysqlSvc 登錄桌面 → 應失敗(帳戶已禁用/拒絕互動登錄)
  3. 進程無法寫入程序目錄(嘗試在 bin 下創建文件 → 拒絕訪問)
  4. 進程可正常讀寫數據目錄、臨時目錄
  5. 遠程連接僅允許授權 IP
  6. 錯誤日志、慢查詢日志正常產出

總結

Windows 下 MySQL 加固的核心是**將服務進程從「系統神權」降級為「數據管家」**。通過專用賬號、NTFS 精確授權、禁用高危功能、網絡隔離、審計日志,構建纵深防禦體系。此配置可有效緩解 SQL 注入導致的 INTO OUTFILE 寫 Webshell、UDF 提權、任意文件讀取等高危攻擊鏈。建議納入基線模板,所有 Windows MySQL 實例強制執行。

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