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

SQL Server 安全性檢查清單:強化伺服器防護的 10 大關鍵項目

     編輯:關於SqlServer

資料庫伺服器是攻擊者的高價值目標。本文提供生產環境必檢的 10 大安全強化項目,涵蓋作業系統、網路協定、帳號管理、服務帳號、檔案系統、擴展預存程序、登錄存取與系統預存程序移除。

1. 修補程式保持最新

確認作業系統 (Windows Update) 與 SQL Server (累積更新/CU、GDR) 皆套用最新安全性修補程式。啟用自動更新或建立定期修補排程。

2. 選擇安全網路協定

  • 僅啟用必要協定:Shared Memory (本機)、TCP/IP (遠端)。
  • 停用 Named Pipes (除非 legacy 應用需求),減少 SMB 攻擊面。
  • 使用 SQL Server Configuration Manager 設定,而非舊版網路公用程式。

3. 強化系統管理員帳號

  • sa 帳號:設定複雜長密碼 (16+ 字元、大小寫、數字、符號),並停用 或重新命名。
  • probe 帳號 (效能監視/複寫使用):同樣設定強密碼並妥善保管。
  • 建立具名管理員帳號取代 sa 日常使用,啟用稽核追蹤。

4. 服務帳號最小權限原則

  • 絕不使用 Local System 或本機 Administrator 執行 SQL Server / Agent 服務。
  • 建立專用網域使用者帳號,僅授予:
-- 必要權限 (透過本地安全性原則 secpol.msc 指派)
SeServiceLogonRight           -- 以服務登入
SeBatchLogonRight             -- 批次作業登入
SeLockMemoryPrivilege         -- 鎖定記憶體頁面 (AWE/大頁面)
SeChangeNotifyPrivilege       -- 繞過遍歷檢查
SeAssignPrimaryTokenPrivilege -- 取代程序層級 Token

最佳做法:使用 SQL Server Configuration Manager 變更服務帳號,工具會自動設定檔案系統/登錄 ACL 與上述權限。

5. 資料與系統檔案置於 NTFS 並設定 ACL

  • 資料檔 (.mdf/.ndf)、記錄檔 (.ldf)、備份檔、錯誤日誌目錄皆置於 NTFS 磁碟區。
  • 僅授予 SQL Server 服務帳號 讀寫/修改 權限,移除 Users/Everyone 存取權。
  • 備份檔案目錄另行限制存取,防止備份外洩。

6. 移除/停用 xp_cmdshell (最高風險擴展程序)


-- 永久移除 (sysadmin 可隨時加回)
USE master; GO
EXEC sp_dropextendedproc 'xp_cmdshell';
GO
-- 或僅限制非 sysadmin 使用 (SQL 6.5/2000)
EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE;

注意:移除前確認無合法應用相依 (如備份腳本、ETL)。相依 DLL (xplog70.dll) 可能被其他擴展程序共用,移除前需查詢 syscomments 確認。

7. 停用 OLE 自動化擴展程序 (次高風險)


EXEC sp_dropextendedproc 'sp_OACreate';
EXEC sp_dropextendedproc 'sp_OADestroy';
EXEC sp_dropextendedproc 'sp_OAGetErrorInfo';
EXEC sp_dropextendedproc 'sp_OAGetProperty';
EXEC sp_dropextendedproc 'sp_OAMethod';
EXEC sp_dropextendedproc 'sp_OASetProperty';
EXEC sp_dropextendedproc 'sp_OAStop';

警告:停用後企業管理器部分功能 (如資料庫圖表、工作排程 UI) 可能失效。開發環境請保留。

8. 限制登錄存取擴展程序


EXEC sp_dropextendedproc 'xp_regaddmultistring';
EXEC sp_dropextendedproc 'xp_regdeletekey';
EXEC sp_dropextendedproc 'xp_regdeletevalue';
EXEC sp_dropextendedproc 'xp_regenumvalues';
EXEC sp_dropextendedproc 'xp_regremovemultistring';
-- 保留 xp_regread / xp_regwrite (移除會影響日誌、SP 安裝等核心功能)

9. 移除其他高風險系統預存程序 (需測試)

以下程序可洩露系統資訊或執行敏感操作,建議在測試環境驗證無副作用後移除:

  • sp_sdidebug, xp_availablemedia, xp_deletemail, xp_dirtree, xp_dropwebtask, xp_dsninfo, xp_enumdsn, xp_enumerrorlogs, xp_enumgroups, xp_enumqueuedtasks, xp_eventlog, xp_findnextmsg...

原則:先在開發/測試機移除並完整回歸測試,確認無功能損失再套用至生產環境。

10. 持續稽核與監控

  • 啟用 登入稽核 (成功/失敗皆記錄) → 錯誤日誌 / Windows 安全性事件日誌。
  • 部署 SQL Server Audit (SQL 2008+) 審計 DDL/DML 敏感操作。
  • 定期檢視 sys.dm_exec_connections, sys.dm_exec_sessions 異常連線。
  • 訂閱 Microsoft Security Bulletin,優先部署資料庫相關修補程式。

檢查清單總表 (可列印張貼)

#項目狀態負責人備註
1OS/SQL 修補程式最新☐
2僅啟用 TCP/IP + Shared Memory☐
3sa/probe 強密碼 + 停用 sa☐
4服務帳號專用最小權限☐
5資料/記錄/備份檔 NTFS ACL☐
6xp_cmdshell 移除/停用☐
7OLE 自動化程序移除☐
8登錄寫入程序移除☐
9其他高風險程序移除☐
10稽核/監控機制啟用☐

資料庫安全是持續過程而非一次專案。建立季度複查機制,配合弱點掃描與滲透測試,持續精進防禦姿態。

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