首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

Windows Server 2003 + SQL Server 安全加固:以普通用戶運行 MSSQL 服務完整教程

     編輯:關於SqlServer

默認安裝下 SQL Server 以 LocalSystem 或 Administrators 高權限運行,一旦遭注入攻擊 (如 xp_cmdshell),攻擊者即獲得系統級控制權。本文演示在 Windows Server 2003 上創建專用低權限服務賬號、配置文件系統 ACL、修改服務登錄身份,將 SQL Server 降權運行,構建纏深防御第一道防線。

核心原則

  • 最小權限:服務賬號僅具備運行 SQL Server 所需的最小文件/註冊表/網絡權限。
  • 隔離性:專用賬號不屬於任何內建組 (Users/Power Users/Administrators),無交互登錄權限。
  • 可審計:專用賬號行為可單獨審計,異常即時告警。

步驟 1:創建專用服務賬號

  1. 開始 → 管理工具 → 計算機管理 → 系統工具 → 本地用戶和組 → 用戶
  2. 右鍵「新用戶」:
    • 用戶名:mssqlrun
    • 密碼:強複雜密碼 (16+ 字符,大小寫數字符號)
    • ✅ 「密碼永不過期」 (服務賬號建議)
    • ✅ 「用戶不能更改密碼」
    • ❌ 「用戶下次登錄時必須更改密碼」
    • 點擊「創建」→「關閉」

步驟 2:配置 SQL Server 安裝目錄 ACL (關鍵)

安裝盤根目錄 (如 D:\):

  • 右鍵屬性 → 安全 → 編輯 → 添加 mssqlrun
  • 權限:✅ 讀取、✅ 列出文件夾內容、❌ 讀取和執行、❌ 寫入、❌ 修改、❌ 完全控制
  • 目的:服務啟動需讀取二進制文件,無需執行/寫入根目錄。

安裝程序目錄 (如 D:\MSSQL\):

  • 移除 SYSTEM、Administrators (保留備份)
  • 添加 mssqlrun → ✅ 完全控制
  • 遞應用到子文件夾/文件
  • 目的:數據文件、日志文件、備份目錄、錯誤日志均需讀寫刪除權限。

步驟 3:修改 SQL Server 服務登錄身份

    打開 服務 (services.msc) → 找到 MSSQLSERVER (或命名實例 MSSQL$InstanceName) → 右鍵屬性 → 登錄標籤
  1. 選中「此賬戶」
  2. 瀏覽 → 輸入 mssqlrun → 檢查名稱 → 確定
  3. 輸入密碼、確認密碼
  4. 點擊「應用」→ 系統彈出:「新的登錄名只有在您停止並重啟服務時才可生效」→ 確定
  5. 右鍵服務 → 重新啟動

步驟 4:驗證與後續加固

  • 任務管理器 → 進程 → sqlservr.exe → 用戶名顯示 mssqlrun ✅
  • SSMS 連接正常,業務功能測試通過 ✅
  • 禁用 xp_cmdshell:sp_configure 'xp_cmdshell', 0; RECONFIGURE (若業務確需,見文章 48736 受控開放方案)
  • 禁用 OLE Automation:sp_configure 'Ole Automation Procedures', 0; RECONFIGURE
  • 審計登錄失敗:本地安全策略 → 審計策略 → 審計登錄事件 → 成功/失敗 ✅
  • 防火牆限制:僅開放 1433 (或自定義端口) 給應用服務器 IP 段。

常見問題排查

現代系統適用性說明

Windows Server 2003 已停止主流支持 (2015),生產環境禁止使用。但「專用低權限服務賬號 + 目標目錄 ACL + 禁用高危擴展」此核心加固模式**完全適用於 Windows Server 2012/2016/2019/2022 + SQL Server 2012/2014/2016/2017/2019/2022**。新版本額外享有:

  • 托管服務賬號 (gMSA) 自動密碼輪換
  • 虛擬帳號 (NT SERVICE\MSSQLSERVER) 無需建立賬號即享最小權限
  • Windows Defender ATP / Defender for Identity 行為監控

降權運行是資料庫服務器安全的基石。哪怕應用層存在注入漏洞,攻擊者也僅能獲得 mssqlrun 權限,無法直接控制作業系統,為應急響應贏得寶貴時間窗口。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
現象可能原因解決
服務啟動失敗 (錯誤 1069/1053)密碼錯誤、賬號被鎖定、無「作為服務登錄」權限本地安全策略 → 用戶權限分配 → 作為服務登錄 → 添加 mssqlrun
數據庫掛載/備份失敗數據/日志/備份目錄 ACL 缺失檢查步驟 2 程序目錄權限是否遞歸生效
SQL Agent 無法啟動Agent 服務仍用 LocalSystem,需同步修改為 mssqlrun 或獨立代理賬號修改 SQLSERVERAGENT 服務登錄身份同步
連接鏈接服務器失敗鏈接服務器映射賬號權限不足配置鏈接服務器安全性映射為具體遠程賬號